11.05.2023 Игорь Борисенко 16231
Загрузка 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С:Управление торговлей
ООО «Амперсенд»

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

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

- Оформление заказов поставщикам;
- Управление отношениями с поставщиками;...

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

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

Объемно-календарное планирование производства Автоматизация бизнес-проце...

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

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

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

Бухгалтерский учет Производственные операции Регламентированная отчетнос...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

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

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную...

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

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

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

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

ООО «Экслтрейд»
ООО «Экслтрейд»

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

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

Оформление заказов поставщикам Оптовая торговля Торговые операции ...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

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

Управление отношениями с клиентами (CRM) ...

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

Отрасль:

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

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

Автоматизация документооборота в компании ООО "Ликард"
ООО «Ликард» (ОАО ЛУКОЙЛ)

Отрасль:
Нефтесервис

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

- Отказ от бумажного документооборота, от громоздких систем на базе офисного...

Автоматизация учета на базе ПП "1С:Комплексная автоматизация 8" в ЗАО "Крюгер-Гранд"
ЗАО «Крюгер-Гранд»

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

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

- Создание интерфейсов и наборов прав пользователей;
- Отражению временных ...

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

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

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

Финансы, управленческий учет, мониторинг показателей:
- Налоговый учет...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

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

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходо...

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

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

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

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