11.05.2023 Игорь Борисенко 16679
Загрузка XML в конфигурации базы 1С 8.3

Содержание:

1.      Обращение к XML-сообщению

2.      Десериализация XML-сообщения в системе программы 1С

3.      Последовательное ЧтениеXML

4.      Чтение XML с использованием структуры, описанной в XDTO-пакете 

 

1.      Обращение к XML-сообщению


Здесь представлен материал для разработчиков процедур передачи данных через xml-сообщения. Информацию для пользователей по работе с готовыми обработками (такой, например, как "Выгрузка и загрузка данных XML") можно найти в документации по 1С.


Для чтения xml-содержимого язык 1С содержит объект «ЧтениеXML»:

ЧтениеXML = Новый ЧтениеXML();


Читаемый текст (ТекстXML) можно передать в объект ЧтениеXML тремя способами:


·        Непосредственно

Удобно использовать, когда xml-текст уже сохранен в какую-то переменную «ТекстXML»; например, это ответ типовой 1с-процедуры, которая формирует его, читая данные из внутренних или внешних по отношению к базе 1С источников.

ЧтениеXML.УстановитьСтроку(ТекстXML);


·        Через файл

ТекстXML предварительно сохраняется в файл «ИмяФайла», а затем читается методом «ОткрытьФайл()». Это может ответ http-сервиса, сохраненный в файл, или просто файл, полученный от внешней системы.

ЧтениеXML.ОткрытьФайл(ИмяФайла);


·        Через поток

Используется, когда поток данных уже существует в памяти (например, как ответ http-сервиса) и нет желания плодить лишние файлы на диске. Удобен также при чтении больших файлов (биг-дата).


Предварительно нужно подготовить «ПотокФайл», используя объекты «ПотокВПамяти», «ФайловыйПоток».

ЧтениеXML.ОткрытьПоток(ПотокФайл);   


2.      Десериализация xml-сообщения в системе программы 1С

 

В системе конфигурирования 1С существует два основных подхода к работе с содержанием xml:

·        Последовательная обработка xml-сообщения

·        Использование предварительного описания структуры xml-сообщения (xdto)


Структуру xml-сообщения нужно знать в любом случае.  


3.      Последовательное ЧтениеXML

   

При последовательной обработке:

Обходим сообщение в цикле, используя метод Прочитать():

Пока ЧтениеXML.Прочитать() Цикл …

Определяем тип узла:

ЧтениеXML.ТипУзла,

и в зависимости от типа узла выполняем соответствующую обработку: читаем атрибуты в цикле, читаем текст и т.п.


Например, если в атрибутах данного узла передаются данные о контрагенте, скажем, ИНН (ЧтениеXML.Имя = inn), то сохраняем полученное значение в соответствующий реквизит контрагента в 1С:

Контрагент.ИНН = ЧтениеXML.Значение;

Способ пригоден для простых по структуре xml-сообщений. Усложнение структуры (разнообразие типов узлов и наборов атрибутов) приведет к потере наглядности из-за многочисленности циклов десериализации и потере скорости их обработки.


Метод, по сути, имеет только одно преимущество: нет надобности предварительно оформлять структуру сообщений в виде XDTO-пакета.  


4. Чтение XML с использованием структуры, описанной в XDTO-пакете


С помощью xdto-пакета предварительно описывается структура xml-сообщения: виды узлов (типы xdto), наборы атрибутов, их типы и т.д.



Имя


Обращаясь к описанию пакета XDTO, можно получать объекты XDTO.

ТипОбъектовXDTO = ФабрикаXDTO(URLпакетаXDTO);

ОбъектыXDTO = ФабрикаXDTO.Прочитать(ЧтениеXML, ТипОбъектовXDTO);

в свойствах, которых содержатся переданные данные.


Преимуществом метода является то, что к свойствам объектов XDTO можно обращаться наглядно «через точку».

Для Каждого ОбъектXDTO Из ОбъектыXDTO Цикл …

Контрагент.ИНН = ОбъектXDTO.inn;


Или даже так:

ЗаполнитьЗначенияСвойств(Контрагент, ОбъектXDTO);

если имена свойств пакета XDTO и метаданных 1С совпадают.


В Заключение следует сказать, что возможны вариации двух описанных методов десериализации xml-сообщений. Например, последовательную обработку можно выполнять с предварительным созданием DOM-документа, а затем последовательно обработать его узлы. А xdto-пакет можно предварительно не создавать, а в xml-сообщении передавать только сами данные, но и описание их структуры.


Специалист компании "Кодерлайн"

Игорь Борисенко


Наши проекты

Установка программного продукта БИТ.Финанс для 1С:Бухгалтерия 8
ООО «Джи Эй Си Шиппинг энд Лоджистикс»

Отрасль:
Транспорт

Внедренное типовое решение:
БИТ.Финанс

Построение единого информационного пространства финансовой службы;
Учет ...

ООО «ПЛЮСПЭЙ»
ООО «ПЛЮСПЭЙ»

Отрасль:
Организацией расчетов посредством электронных средств платежа

Внедренное типовое решение:
1С:Комплексная автоматизация

- Разработка подсистемы оперативного учета транзакций...

Группа компаний ТМ «Дружба народов»
Группа компаний ТМ «Дружба народов»

Отрасль:
Пищевая промышленность

Внедренное типовое решение:
1С:ERP Управление предприятием 2.1

- Переход на новый релиз 2.1 программы «1С:ERP Управление предприятием»
- Разра...

ОАО «Интер РАО – Электрогенерация»
ОАО «Интер РАО – Электрогенерация»

Отрасль:
Электрогенерация

Внедренное типовое решение:
1С:Управление производственным предприятием

Для работы 2500 пользователей в 9 часовых поясах организована территориально-...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО "ДЕКОР"
ООО «ДЕКОР»

Отрасль:
Производство

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Управление персоналом и кадровый учет (HRM):
- Кадровый учет
- Расчет зарпл...

Московский филиал ООО «Авиакомпания «Икар»
Московский филиал ООО «Авиакомпания «Икар»

Отрасль:
Авиаперевозки

Внедренное типовое решение:
1С:Зарплата и управление персоналом

Управление персоналом и кадровый учет (HRM) Кадровый учет Расчет зарплаты Рег...

ООО «Вистеон Автоприбор Электроникс»
ООО «Вистеон Автоприбор Электроникс»

Отрасль:

Внедренное типовое решение:
1C:Управление производственным предприятием

- Управленческий учет; - Расчет зарплаты; - Логистика адресного склада; - Учет ...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Управление холдингом 8

Бухгалтерский учет;
Расчет зарплаты и кадровый учет;...

МИР ХОББИ
МИР ХОББИ

Отрасль:
Торговля. Интернет магазин

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Оформление заказов поставщикам
Взаиморасчеты с покупателями
Оформление...

ПЭК
ПЭК

Отрасль:
Грузоперевозки

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Перевод зарплатных баз с версии ЗУП 2.5 на версию ЗУП 3.1.
- Сопровождение в п...

Автоматизация системы учета продаж газа на базе «1С:ERP Управление предприятием 2.0»
ООО «Эйр Продактс Газ»

Отрасль:
Производство промышленных газов

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Расчеты с контрагентами;
- Производственные операции;
- Управление скла...

Автоматизация интеграции с информсистемами клиентов на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
«1С:Предприятие 8. WMS Логистика. Управление складом»

– Управление складскими запасами;
– Оформление заказов покупателей;
– ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение