|
1c обмен с помощью web-сервиса | ☑ | ||
---|---|---|---|---|
0
Pe3HuK
16.12.15
✎
11:45
|
Всю голову себе сломал. Скажите, какой есть способ передать табличную часть документа с мобильной конфигурации через web-сервис в другую конфигурацию
|
|||
1
Apokalipsec
16.12.15
✎
11:45
|
ТЧ выгружается в ТЗ, ТЗ сериализуется.
|
|||
2
Pe3HuK
16.12.15
✎
11:48
|
(1), не спал 2 дня, уже не соображаю, можете, пожалуйста, набросать код?
|
|||
3
Apokalipsec
16.12.15
✎
11:52
|
ТЗ = ТЧ.Выгрузить();
ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ТЗ); СтрокаXML = ЗаписьXML.Закрыть(); |
|||
4
Valerianich
16.12.15
✎
11:53
|
(2)Лучше поспать. На свежую голову лучше всё получится.
|
|||
5
Pe3HuK
16.12.15
✎
12:11
|
(3) Спасибо, а еще вопрос: как сериализовать в базе приемнике?
|
|||
6
Apokalipsec
16.12.15
✎
12:17
|
(5) 5к
|
|||
7
ЛисИзЛеса
16.12.15
✎
12:19
|
//Имя справочника для примера
ИмяСправочника = "Номенклатура"; ///////////////////////////////////////////////////////////////////////// //Выгрузка Запись = Новый ЗаписьXML; Запись.УстановитьСтроку(); //записываем объявление xml файла: <?xml version="1.0"?> Запись.ЗаписатьОбъявлениеXML(); //записываем корневой элемент, по спецификации xml он может быть только один, назовем его "Данные" Запись.ЗаписатьНачалоЭлемента("Данные"); //для того чтобы пространства имен не объявлялись сериализатором в кажом элементе, пишем их в корневой элемент //они будут работать на все вложеные элементы //пространство имен по-умолчанию Запись.ЗаписатьСоответствиеПространстваИмен("", "http://v8.1c.ru/8.1/data/enterprise/current-config"); //пространства имен остальные префиксы Запись.ЗаписатьСоответствиеПространстваИмен("xsd", "http://www.w3.org/2001/XMLSchema"); Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); //ограничение количества выгружаемых элементов для примера Кол = 4; Выборка = Справочники[ИмяСправочника].Выбрать(); Пока Выборка.Следующий() Цикл //вместо этого кода в боевой реализации выгрузки будет создание ОбъектаXDTO и его сериализация //через ФабрикуXDTO и загруженные в нее схемы конфигурации приемника СериализаторXDTO.ЗаписатьXML(Запись, Выборка.ПолучитьОбъект()); // Кол = Кол - 1; Если Кол=0 Тогда Прервать; КонецЕсли; КонецЦикла; //записываем конец корневого элемента Запись.ЗаписатьКонецЭлемента(); //покажем что получилось Текст = Запись.Закрыть(); Сообщить("Содержимое файла:"); Сообщить(Текст); //а теперь загрузим это обратно ///////////////////////////////////////////////////////////////////////// //Загрузка Сообщить("Данные полученные при загрузке:"); Чтение = Новый ЧтениеXML; Чтение.УстановитьСтроку(Текст); //прочитаем начало xml файла Чтение.ПерейтиКСодержимому(); //прочитаем начало корневого элемента Чтение.Прочитать(); //читаем содержимое пока текущим не станет конец корневого элемента, т.к. мы писали туда только целые элементы справочника, //а сериализатор читает каждый из их полностью, то мы упремся именно в конец корневого Пока Чтение.ТипУзла<>ТипУзлаXML.КонецЭлемента Цикл //читаем очередной элемент справочника Объект = СериализаторXDTO.ПрочитатьXML(Чтение); //покажем что прочитали, осталось только записать объект Сообщить(""+ТипЗнч(Объект)+" - "+Объект); КонецЦикла; Чтение.Закрыть(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |