Имя: Пароль:
1C
1С v8
ОбъектXDTO в строку
0 simol
 
22.07.15
13:02
Вебсервис в моей конфе отправляет ОбъектXDTO.
Необходимо отправляемый ответ сохранять в регистре сведений в текстовом поле.
XDTO описан и сформирован в конфе.

Как конвертнуть ОбъектXDTO в строку?


    ИмяФайла = КаталогВременныхФайлов() + "11.xml";
    МойXML = Новый ЗаписьXML;
    ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);
    МойXML.ОткрытьФайл(ИмяФайла, ПараметрыЗаписиXML);
    МойXML.ЗаписатьОбъявлениеXML();
    ФабрикаXDTO.ЗаписатьXML(МойXML, ВозвращаемоеЗначение);
    ВозвращаемаяСтрока = МойXML.Закрыть();


ВозвращаемоеЗначение - ОбъектXDTO и заполнен
ВозвращаемаяСтрока почему-то пустаяи файла на диске нет.
1 simol
 
22.07.15
13:05
Файл нашел, и он тот, что надо.
А без записи на достк можно?
2 simol
 
22.07.15
13:05
достк=диск
3 simol
 
22.07.15
13:07
А, вспомнил УстановитьСтроку().
4 simol
 
22.07.15
13:30

    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ВходящийXDTO);
    ВходящийXDTOСтрокой = ЗаписьXML.Закрыть();    

Почему это в конфигурации работает, а во внешней обработке нет?
5 Serginio1
 
22.07.15
14:10
а какую ошибку выдает http://its.1c.ru/db/metod8dev#content:3555:hdoc
6 mikecool
 
22.07.15
14:14
емнип ФабрикаXDTO привязана к фабрике, зашитой в конфигурацию(может какая то даже по умолчанию), надо ее перепривязать
могу ошибаться
7 Serginio1
 
22.07.15
14:29
Открывай внешнюю обработку с параметром ложь

ВнешниеОбработки.Создать(ИмяФайла,false);

ВнешниеОбработкиМенеджер (ExternalDataProcessorsManager)
Создать (Create)
Вариант синтаксиса: По имени файла

Синтаксис:

Создать(<ПолноеИмяФайла>, <БезопасныйРежим>)
8 simol
 
23.07.15
16:27
(5)
Открываю в предприятии внешнюю обработку интерактивно.

{ОбщийМодуль.ОбработчикиВебСервисов.Модуль(430)}: Ошибка при вызове метода контекста (ЗаписатьXML)
    ФабрикаXDTO.ЗаписатьXML(МойXML, ОбъектXDTO);
по причине:
Несоответствие типов XDTO:
Тип '{http://www.ReconciliationTradeLiability.org}ListOfSuppliers' не найден
Тип принадлежит пакету, входящему в состав другой фабрики типов XDTO

Хотя если в отладчике в этой строке смотреть ФабрикаXDTO, то {http://www.ReconciliationTradeLiability.org} там есть.
9 Serginio1
 
23.07.15
16:32
(8) Права полные?
10 simol
 
23.07.15
16:32
Получается если у меня есть конфа и в ней есть вебсервис, который возвращает ОбъектXDTO. То если я из этой же базы обращаюсь к своему же вебсервису, то я получаю ОбъектXDTO из другой фермы?
11 simol
 
23.07.15
16:33
(9)Да
12 Serginio1
 
23.07.15
16:38
(10) Да.
Ты должен использовать фабрику вэб сервиса
Прокси.ФабрикаXDTO
13 Serginio1
 
23.07.15
16:42
Например
Процедура СериализоватьОбъект(Фабрика,ОтветТаблицаЦен)
    ЗаписьХМЛ= новый ЗаписьXML;
    ЗаписьХМЛ.УстановитьСтроку();
       Фабрика.записатьXML(ЗаписьХМЛ,ОтветТаблицаЦен);
    возврат ЗаписьХМЛ.Закрыть()
КонецПроцедуры

Стр=СериализоватьОбъект(Прокси.ФабрикаXDTO,ВходящийXDTO)
14 simol
 
23.07.15
16:51
(12) Ухты, спасибо, пробую
15 simol
 
23.07.15
16:53
Спасибо большое.