Skip to content
лого - блог 1с программиста

Блог 1С программиста

Наработки, заметки и другая информация по 1С

  • Главная
  • ЗУП 3.1
    • Разработка
      • Обработки
      • Отчеты
      • Печатные формы
      • Расширения
    • Инструкции
    • Ответы техподдержки 1С
    • Общие вопросы
  • УХ 3.2
  • ДО 2.1
  • Интеграции и обмены
  • Шаблоны и заготовки
    • Типовые приемы
    • Отчеты
    • Печатные формы
    • Расширения
  • Платформа 1С
  • Контакты
  • Toggle search form

Работа с XML через механизм XDTO с примерами

Posted on 19 августа 22 г.27 марта 23 г. By admin Комментариев к записи Работа с XML через механизм XDTO с примерами нет

Содержание:

  • Краткое описание
  • Файлы материала
  • Термины
  • Пример XDTO-пакета и соответствующей ему XML-схемы полученной при экспорте пакета в файл
  • XML файл полученный с помощью данной схемы
  • Пример записи XML через XDTO
  • Пример чтения XML через XDTO
  • Дополнение
Краткое описание

Механизм XDTO позволяет читать/писать данные XML/JSON используя XML-схемы (XDTO-пакеты), что структурирует и ускоряет работу с большими объемами данных. Так же используется при работе с web-сервисами. Более подробно из официальных источников, можно почитать на ИТС.

Файлы материала
Обработка “Пример записи/чтения через XDTO”Скачать
XML-схема.xsdСкачать
Термины

XDTO – XML Data Transfer Objects в переводе “XML-объекты переноса данных”, термин придуман в 1С.

XDTO-пакет – прикладной объект метаданных 1С, описывающих XML-схемы – типы данных, по средством которых будет формироваться XML. Можно импортировать/экспортировать через xsd файл, соответственно вместо XDTO-пакета можно использовать XML-схему описанную в xsd файле.

Фабрика XDTO – создает объекты XDTO в 1С, т.е. объекты тех типов которые описаны в модели данных, а модель данных – это массив XDTO-пакетов (XML-схем). Фабрика XDTO позволяет осуществлять чтения/запись данных XDTO в XML и JSON.

Сериализатор XDTO – преобразует объекты XDTO в объекты 1С и наоборот.

Пример XDTO-пакета и соответствующей ему XML-схемы полученной при экспорте пакета в файл
Пример XDTO-пакета 1С
Пример XDTO-пакета в 1С
XML-схема.xsd
XHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<xs:schema xmlns:tns="https://www.myblog-1c.ru" xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.myblog-1c.ru" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:complexType name="ДанныеПоРабочемуВремени">
<xs:sequence>
<xs:element name="Дата" type="xs:date"/>
<xs:element name="ВремяПоТабелю" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Сотрудник">
<xs:sequence>
<xs:element name="ТабельныйНомер" type="xs:string"/>
<xs:element name="ФИО" type="xs:string"/>
<xs:element name="ДанныеПоРабочемуВремени" type="tns:ДанныеПоРабочемуВремени" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

Обратите внимание, у типа объекта “Сотрудник” есть свойство “ДанныеПоРабочемуВремени” который имеет тип из этого же пакета. Оба этих типа находятся в пространстве имен “https://www.myblog-1c.ru”.

Настройки свойства "Данные по рабочему  времени"

Так же в свойстве «ДанныеПоРабочемуВремени» было изменено “максимально количество” на “-1”, что означает, что в XML можно добавлять неограниченное количество тегов <ДанныеПоРабочемуВремени>. Минимальное количество “1” означает, что заполнение обязательно. Здесь же можно сделать из тега атрибут.

В состав пакета-XDTO могут входить “Типы объектов” (complexType) и “Типы значений” (simpleType). Они отличается тем, что тип объекта содержит несколько свойств , а тип значения одно.

XML файл полученный с помощью данной схемы
XHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<Сотрудник xmlns="https://www.myblog-1c.ru" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ТабельныйНомер>11111</ТабельныйНомер>
<ФИО>Иванов И.И.</ФИО>
<ДанныеПоРабочемуВремени>
<Дата>2022-01-01</Дата>
<ВремяПоТабелю>8</ВремяПоТабелю>
</ДанныеПоРабочемуВремени>
<ДанныеПоРабочемуВремени>
<Дата>2022-01-02</Дата>
<ВремяПоТабелю>7</ВремяПоТабелю>
</ДанныеПоРабочемуВремени>
</Сотрудник>

Пример записи XML через XDTO
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ФайлыXSD = Новый Массив();
ФайлыXSD.Добавить("\\Serv1c\XML-Схема.xsd");
МояФабрика = СоздатьФабрикуXDTO(ФайлыXSD);
// Кроме того есть голобальная ФабрикаXDTO содержащая все пакеты XDTO, имеющиеся в конфигурации, а также предопределенные пакеты (например, пакет типов XML схемы).
// <Сотрудник>
Сотрудник = МояФабрика.Создать(МояФабрика.Тип("https://www.myblog-1c.ru","Сотрудник"));
// Аналогиченый пример, через глобалбную фабрику, если бы пакет-XDTO был добавлен в конфигурацию
// Сотрудник = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("https://www.myblog-1c.ru", "Сотрудник"));
Сотрудник.ТабельныйНомер = "11111";
Сотрудник.ФИО = "Иванов И.И.";
// <ДанныеПоВремени> (1)
ДанныеПоРабочемуВремени = МояФабрика.Создать(МояФабрика.Тип("https://www.myblog-1c.ru","ДанныеПоРабочемуВремени"));
ДанныеПоРабочемуВремени.Дата = Дата(2022,1,1);
ДанныеПоРабочемуВремени.ВремяПоТабелю = 8;
Сотрудник.ДанныеПоРабочемуВремени.Добавить(ДанныеПоРабочемуВремени);
// <ДанныеПоВремени> (2)
ДанныеПоРабочемуВремени = МояФабрика.Создать(МояФабрика.Тип("https://www.myblog-1c.ru","ДанныеПоРабочемуВремени"));
ДанныеПоРабочемуВремени.Дата = Дата(2022,1,2);
ДанныеПоРабочемуВремени.ВремяПоТабелю = 7;
Сотрудник.ДанныеПоРабочемуВремени.Добавить(ДанныеПоРабочемуВремени);
 
Данные = Новый ЗаписьXML;
Данные.ОткрытьФайл("\\Serv1c\Результат.xml");
Данные.ЗаписатьОбъявлениеXML();
МояФабрика.ЗаписатьXML(Данные, Сотрудник);
Данные.Закрыть();

Пример чтения XML через XDTO
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ФайлыXSD = Новый Массив();
ФайлыXSD.Добавить("\\Serv1c\XML-Схема.xsd");
МояФабрика = СоздатьФабрикуXDTO(ФайлыXSD);
Данные = Новый ЧтениеXML;
Данные.ОткрытьФайл("\\Serv1c\Результат.xml");
Сотрудник = МояФабрика.ПрочитатьXML(Данные, МояФабрика.Тип("https://www.myblog-1c.ru","ДанныеПоРабочемуВремени"));
Данные.Закрыть();
Сообщить(Сотрудник.ФИО+"("+Сотрудник.ТабельныйНомер+")");
Для Каждого ТекущийЭлемент Из Сотрудник.ДанныеПоРабочемуВремени Цикл
Сообщить(Строка(ТекущийЭлемент.Дата)+" "+Строка(ТекущийЭлемент.ВремяПоТабелю));
КонецЦикла;

Дополнение

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

Рекомендации

  • Описание структуры файла обмена формата КД 2.0
Интеграции и обмены Tags:XDTO, XML

Навигация по записям

Previous Post: Представления “Данные о времени и состоянии сотрудников”
Next Post: Почему резервы отпусков не начисляются до предельной величины резервов (ПВР)

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

ДзенTelegram

MDM web-сервис XML БИД Бухучет КД 2.0 Командировки НДФЛ ПВХ Подбор персонала Резервы отпусков СЗВ-ТД СКД СТД-Р СФР СЭДО Схема запросов ФСС ФСС НС ХранилищеНастроек Хранилище значений больничные листы взносы выплаты диалог длительная операция интерфейс кадровая история кадровые данные кадровые переводы макет мастер-данных менеджер расчета зарплаты обмен данными оповещения отпуска печать без проверки представление связь параметров связь по типу синхронизация ЗУП и БП средний заработок табель таблица периодов фотография

Рубрики

  • ДО 2.1 (1)
  • ЗУП 3.1 (47)
    • Инструкции (4)
    • Общие вопросы (18)
    • Ответы техподдержки 1С (10)
    • Разработка (10)
      • Обработки (5)
      • Отчеты (1)
      • Печатные формы (1)
      • Расширения (3)
  • Интеграции и обмены (7)
  • Платформа 1С (1)
  • УХ 3.2 (3)
  • Шаблоны и заготовки (26)
    • Отчеты (12)
    • Печатные формы (6)
    • Расширения (2)
    • Типовые приемы (10)
Top.Mail.Ru

© 2022-2023 myblog-1c.ru