11.05.2023 Игорь Борисенко 17618
Загрузка 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С:Зарплата и управление персоналом

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

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

Внедренное типовое решение:
«1С:Управление корпоративными финансами»

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

АО «Аэроклуб»
АО «Аэроклуб»

Отрасль:
Услуги в области делового туризма

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

Проведение серии интервью с руководством и ключевыми специалистами Разраб...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

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

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

Различная отраслевая специфика:
- Переработка давальческого сырья
- Уче...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

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

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

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

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

Управление цепочками поставок Оптовая торговля ...

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

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

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

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

ООО "ТК "Сытый Дом-НН"
ООО "ТК "Сытый Дом-НН"

Отрасль:
Торговля, склад, логистика, транспорт

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

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

Фирма 1С
Фирма 1С

Отрасль:

Внедренное типовое решение:
1С:Документооборот

- Подготовка функциональной модели прикладного решения «1С:Документооборот...

ПЭК
ПЭК

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

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

- Внедрение функционала управления НСИ;
- Рефакторинг;
- Оптимизация общег...

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

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

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

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

1с-РАРУС МСК
1с-РАРУС МСК

Отрасль:
Разработка компьютерного программного обеспечения

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

- Финансово-бухгалтерский блок
- Казначейство ...

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

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

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

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