Как сохранить документ из 1с в формате xml
Перейти к содержимому

Как сохранить документ из 1с в формате xml

  • автор:

Как выгрузить счет из 1С в xml

Выгрузить счет из 1С в формате xml можно при помощи специальной обработки «Выгрузка и загрузка данных XML», которая расположена в 1С: Предприятии версии 8.3 и находится в каталоге EXE/EXTREPS/UNIREPS83/UploadToXML. Так же ее можно скачать здесь . После скачивания обработки ее необходимо запустить. Для этого воспользуемся командой Открытькак выгрузить счет из 1с в xml (1).png
Указываем место, куда была сохранена обработка и нажимаем Открытькак выгрузить счет из 1с в xml (2).png
В окне обработки во вкладке Выгрузка указываем:

  • Период выгрузки
  • Данные для выгрузки
  • Куда будут выгружены данные

как выгрузить счет из 1с в xml (3).png

Если не выбран период выгрузки, то будут выгружены все данные указанного типа.

На вкладке Дополнительные объекты для выгрузки можно отобрать один или несколько объектов для выгрузки

как выгрузить счет из 1с в xml (4).png

По кнопке Выгрузить данные происходит выгрузка в файл на сервере или клиентский компьютер (в зависимости от режима работы 1С Предприятие – файловый или клиент-серверный). Перед выгрузкой необходимо установить переключатель в соответствующее положение

как выгрузить счет из 1с в xml (5).png

Данная обработка позволяет также загрузить данные из файла в другую информационную базу при условии абсолютной идентичности информационных баз (одинаковые версии конфигурации)

Как выгрузить счет-фактуру в xml из 1С

Выгрузить счет-фактуру из 1С в формате xml можно при помощи специальной обработки «Выгрузка и загрузка данных XML», которая расположена в 1С: Предприятии версии 8.3 и находится в каталоге EXE/EXTREPS/UNIREPS83/UploadToXML. Так же ее можно скачать здесь . После скачивания обработки ее необходимо запустить. Для этого воспользуемся командой Открытьвыгрузить счет-фактуру в xml из 1с (1).png
Указываем место, куда была сохранена обработка и нажимаем Открытьвыгрузить счет-фактуру в xml из 1с (2).png
В окне обработки во вкладке Выгрузка указываем:

  • Период выгрузки
  • Данные для выгрузки
  • Куда будут выгружены данные

выгрузить счет-фактуру в xml из 1с (3).png

Если не выбран период выгрузки, то будут выгружены все данные указанного типа.

На вкладке Дополнительные объекты для выгрузки можно отобрать один или несколько объектов для выгрузки

выгрузить счет-фактуру в xml из 1с (4).png

По кнопке Выгрузить данные происходит выгрузка в файл на сервере или клиентский компьютер (в зависимости от режима работы 1С Предприятие – файловый или клиент-серверный). Перед выгрузкой необходимо установить переключатель в соответствующее положение

выгрузить счет-фактуру в xml из 1с (5).png

Данная обработка позволяет также загрузить данные из файла в другую информационную базу при условии абсолютной идентичности информационных баз (одинаковые версии конфигурации)

Выгрузка данных в формате XML из 1С

001_РазделПродажи.png

При работе с приложениями от разных разработчиков может возникать необходимость перенести информацию из одной программы в другую. Например, выгрузить документ из 1С и загрузить его в другую программу для отправки через электронный документооборот (Контур.Диадок, СБИС ЭДО). В этом случае вам понадобится универсальный способ переноса информации. В программах 1С такая возможность предусмотрена: вы можете выгружать данные в универсальном формате XML. Рассмотрим такой способ выгрузки на примере программы «1С:Бухгалтерия» и документа Реализация. 1. Откройте раздел Продажи > Реализация (акты, накладные, УПД).

2. В списке документов откройте документ, который нужно выгрузить. 3. В открывшемся окне Реализация услуг нажмите Ещё > ЭДО > Выгрузить документ в файл.

Форма Реализация Услуг.png

4. В окне Выгрузка документов в файл нажмите кнопку Выполнить .
003_ФормаВыгрузкаДокументовВФайл.png

5. Укажите папку, в которую нужно сохранить документ. Например, на рабочий стол в папку Выгрузка из 1С .
004_КаталогВыгрузкаИз1С.png
6. Нажмите кнопку Выполнить.

7. В папке Выгрузка из 1С появится архив с документом в формате XML.
005_ДокументXML.png 006_ДокументXML.png
Аналогичным способом можно выгружать в XML -формате: счета покупателям, счета-фактуры выданные, корректировки реализации, акты сверки расчетов с контрагентами и прочие документы.

Комментарии пользователей

Мы хотим принести в Россию самые передовые облачные технологии и заботимся о каждом пользователе. Политика конфиденциальности Антикоррупционная политика Договор-оферты

Array ( [0] => Array ( [TEXT] => Продукты [LINK] => /arenda-1c/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 0 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Продукты ) [DEPTH_LEVEL] => 1 [IS_PARENT] => 1 ) [1] => Array ( [TEXT] => Аренда 1С [LINK] => /arenda-1c/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 0 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Продукты [1] => Аренда 1С ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [2] => Array ( [TEXT] => Аренда 1С:Фреш [LINK] => /arenda-1c/1c-fresh/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 1 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Продукты [1] => Аренда 1С:Фреш ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [3] => Array ( [TEXT] => Аренда сервера 1С [LINK] => /arenda-serverov/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 2 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Продукты [1] => Аренда сервера 1С ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [4] => Array ( [TEXT] => Аренда виртуального сервера [LINK] => /arenda-serverov/arenda-virtualnogo-servera/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 3 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Продукты [1] => Аренда виртуального сервера ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [5] => Array ( [TEXT] => Облако 1С [LINK] => /oblako-1c/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 4 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Продукты [1] => Облако 1С ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [6] => Array ( [TEXT] => 1С онлайн [LINK] => /online-1c/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 5 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Продукты [1] => 1С онлайн ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [7] => Array ( [TEXT] => Бухгалтерия Онлайн [LINK] => /buhgalteria-online/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 6 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Продукты [1] => Бухгалтерия Онлайн ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [8] => Array ( [TEXT] => Программы 1С для ИП [LINK] => /programmy-1c-dlya-ip/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 7 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Продукты [1] => Программы 1С для ИП ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [9] => Array ( [TEXT] => Сервисы [LINK] => /1c-contragent/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 1 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Сервисы ) [DEPTH_LEVEL] => 1 [IS_PARENT] => 1 ) [10] => Array ( [TEXT] => 1С:Контрагент [LINK] => /1c-contragent/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 0 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Сервисы [1] => 1С:Контрагент ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [11] => Array ( [TEXT] => 1С-Отчетность [LINK] => /1c-otchetnost/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 1 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Сервисы [1] => 1С-Отчетность ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [12] => Array ( [TEXT] => 1СПАРК Риски [LINK] => /1c-sparkriski/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 2 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Сервисы [1] => 1СПАРК Риски ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [13] => Array ( [TEXT] => 1С:Распознавание первичных документов [LINK] => /1c-raspoznavanie-pervichnyh-dokumentov/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 3 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Сервисы [1] => 1С:Распознавание первичных документов ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [14] => Array ( [TEXT] => 1С:Кабинет сотрудника [LINK] => https://e-office24.ru/1c-kabinet-sotrudnika/ [SELECTED] => [PERMISSION] => Z [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 4 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Сервисы [1] => 1С:Кабинет сотрудника ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [15] => Array ( [TEXT] => Поддержка [LINK] => /support/ [SELECTED] => 1 [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 2 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Поддержка ) [DEPTH_LEVEL] => 1 [IS_PARENT] => 1 ) [16] => Array ( [TEXT] => Техническая поддержка [LINK] => /support/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 0 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Поддержка [1] => Техническая поддержка ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [17] => Array ( [TEXT] => Часто задаваемые вопросы [LINK] => /support/faq-voprosy-1c/ [SELECTED] => 1 [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 1 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Поддержка [1] => Часто задаваемые вопросы ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [18] => Array ( [TEXT] => Форум 1С [LINK] => /support/forum-1c/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 2 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Поддержка [1] => Форум 1С ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [19] => Array ( [TEXT] => Выбор программы [LINK] => /support/vybor-programmy/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 3 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Поддержка [1] => Выбор программы ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [20] => Array ( [TEXT] => Предоставить доступ [LINK] => /support/connect/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( [TEST] => Y ) [ITEM_TYPE] => D [ITEM_INDEX] => 4 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => Поддержка [1] => Предоставить доступ ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [21] => Array ( [TEXT] => О нас [LINK] => /company/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 3 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => О нас ) [DEPTH_LEVEL] => 1 [IS_PARENT] => 1 ) [22] => Array ( [TEXT] => О проекте [LINK] => /company/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 0 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => О нас [1] => О проекте ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [23] => Array ( [TEXT] => Новостной блог [LINK] => /news/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 1 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => О нас [1] => Новостной блог ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [24] => Array ( [TEXT] => Отзывы клиентов [LINK] => /company/otzyvy-klientov/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 2 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => О нас [1] => Отзывы клиентов ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) [25] => Array ( [TEXT] => Контакты [LINK] => /company/contacts/ [SELECTED] => [PERMISSION] => R [ADDITIONAL_LINKS] => Array ( ) [ITEM_TYPE] => D [ITEM_INDEX] => 3 [PARAMS] => Array ( ) [CHAIN] => Array ( [0] => О нас [1] => Контакты ) [DEPTH_LEVEL] => 2 [IS_PARENT] => ) )
  • Продукты
    • Аренда 1С
    • Аренда 1С:Фреш
    • Аренда сервера 1С
    • Аренда виртуального сервера
    • Облако 1С
    • 1С онлайн
    • Бухгалтерия Онлайн
    • Программы 1С для ИП
    • 1С:Контрагент
    • 1С-Отчетность
    • 1СПАРК Риски
    • 1С:Распознавание первичных документов
    • 1С:Кабинет сотрудника
    • Техническая поддержка
    • Часто задаваемые вопросы
    • Форум 1С
    • Выбор программы
    • Предоставить доступ
    • О проекте
    • Новостной блог
    • Отзывы клиентов
    • Контакты

    vk

    +7 (804) 333-16-02 звонок по России бесплатный Москва: +7 (499) 649-16-02 Санкт-Петербург: +7 (812) 425-17-02 Екатеринбург: +7 (343) 222-16-02 info@e-office24.ru sales@e-office24.ru

    Круглосуточная техническая поддержка пользователей

    Выгрузка из 1С в формат XML и простой пример XDTO

    В своей работе 1С специалисты часто сталкиваются с выгрузкой из 1С в формат XML. Выгруженные файлы могут использоваться в дальнейшем как для чтения в конфигурациях 1С, так и в других программных продуктах: веб-сервисах, приложениях для работы с отчетностью и т.д.

    При этом механизм фабрик XDTO, созданный фирмой 1С для удобства выгрузки, часто вызывает затруднения даже у опытных специалистов, так как кажется сложным, а документация не всегда информативна. Поэтому цель нашей статьи — рассмотреть максимально простой пример выгрузки в XML с помощью XDTO, описать без злоупотреблений специальной терминологией и ответить на некоторые естественно возникающие вопросы.

    Вначале мы рассмотрим выгрузку документа из 1С в XML базовыми средствами выгрузки:

    • Пример 1 – выгрузка документа полностью;
    • Пример 2 — выгрузка «по частям».

    Затем выгрузим то же самое средствами XDTO:

    • Пример 3 – использование глобальной фабрики XDTO без создания пакета XDTO;
    • Пример 4 – использование пакета XDTO;
    • Пример 5 – считывание схемы XDTO из файла.

    Все примеры можно посмотреть в обработке Примеры выгрузки XDTO в демонстрационной базе.

    1.png

    Создадим пустую конфигурацию и в ней документ Начисление зарплаты. С целью упрощения примера не будем заводить другие объекты в конфигурации и заниматься задачами расчета и проведения документа. У документа заведем реквизиты — Подразделение (ссылка на справочник Подразделения), РасчетАванса (булево), СуммаДокумента (число) и табличную часть Сотрудники со ссылкой на справочник Сотрудники и суммой.

    2.png

    Создадим и заполним один документ. Поставим задачу выгрузить его данные в xml.

    3.png

    Можно ли выгрузить данные в XML без использования XDTO?

    Да. Можно использовать базовые средства записи Xml.

    Пример 1. Выгрузка всего документа базовыми средствами xml

    Файл = Новый ЗаписьXML ; //создали новую запись
    Файл . ОткрытьФайл ( ИмяФайлаXML ); //открыли файл для записи по адресу ИмяФайлаXML
    Файл . ЗаписатьОбъявлениеXML (); //Записали директиву, объявление файла XML, в начале файла создастся текст вида
    ДокументОбъект = ДокСсылка . ПолучитьОбъект ();
    ЗаписатьXML ( Файл , ДокументОбъект , НазначениеТипаXML . Явное ); //записали полностью документ
    Файл . Закрыть ();

    Метод ЗаписатьXML() выгружает объект полностью, при этом сам определяет структуру выгружаемого объекта, и в результат добавляются некоторые служебные поля (такие как пометка удаления DeletionMark, признак проведения Posted).

    4.png

    Пример 2. «Ручная» выгрузка документа базовыми средствами xml

    На практике объект не всегда нужно выгружать полностью, поэтому рассмотрим выгрузку документа с «ручным» перебором его реквизитов с различными типами данных, а также строк табличной части. Для сериализации, то есть, преобразования любого типа данных в строку — будем пользоваться Функцией XMLСтрока(). Для ссылочного типа результатом преобразования будет уникальный идентификатор.

    //начало корневого элемента
    Файл . ЗаписатьНачалоЭлемента ( «НачислениеЗарплаты» );
    //Далее пользуемся Сериализацией — для преобразования любого типа в строку. Для ссылочного типа это будет уникальный идентификатор.
    //Пользуемся для этого функцией XMLСтрока()
    // Записать значение типа Дата.
    ТипXML = XMLТипЗнч ( ДокСсылка . Дата );
    Файл . ЗаписатьНачалоЭлемента ( «Дата» );
    //или так:
    //Файл.ЗаписатьНачалоЭлемента(ТипXML.ИмяТипа, ТипXML.URIПространстваИмен);
    Файл . ЗаписатьТекст ( XMLСтрока ( ДокСсылка.Дата ));
    Файл.ЗаписатьКонецЭлемента ();
    // Записать значение типа Строка.
    ТипXML = XMLТипЗнч ( ДокСсылка . Номер );
    Файл . ЗаписатьНачалоЭлемента ( » Номер » );
    Файл . ЗаписатьТекст ( XMLСтрока ( ДокСсылка . Номер ));
    Файл . ЗаписатьКонецЭлемента ();
    // Получить ссылку на справочник
    Файл . ЗаписатьНачалоЭлемента ( «Подразделение» );
    СсылкаНаПодразделение = ДокСсылка . Подразделение ;
    ТипXML = XMLТипЗнч ( СсылкаНаПодразделение );
    Файл . ЗаписатьНачалоЭлемента ( «Ссылка» );
    Файл . ЗаписатьТекст ( XMLСтрока ( СсылкаНаПодразделение ));
    Файл . ЗаписатьКонецЭлемента ();
    Файл . ЗаписатьНачалоЭлемента ( «Наименование» );
    Файл . ЗаписатьТекст ( СсылкаНаПодразделение . Наименование );
    Файл . ЗаписатьКонецЭлемента ();
    Файл . ЗаписатьКонецЭлемента (); //подразделение
    // Записать значение типа Число.
    // Получить значение «ТипДанныхXML» для числа.
    ТипXML = XMLТипЗнч ( ДокСсылка . СуммаДокумента );
    Файл . ЗаписатьНачалоЭлемента ( «СуммаДокумента» );
    Файл . ЗаписатьТекст ( XMLСтрока ( ДокСсылка . СуммаДокумента ));
    Файл . ЗаписатьКонецЭлемента ();
    // Записать значение типа Булево
    ТипXML = XMLТипЗнч ( ДокСсылка . РасчетАванса );
    Файл . ЗаписатьНачалоЭлемента ( «РасчетАванса» );
    Файл . ЗаписатьТекст ( XMLСтрока ( ДокСсылка . РасчетАванса ));
    Файл . ЗаписатьКонецЭлемента ();
    //универсальная выгрузка табличных частей
    Для Каждого ТЧ из ДокСсылка . Метаданные (). ТабличныеЧасти Цикл
    Файл . ЗаписатьНачалоЭлемента ( «ТабличнаяЧасть» );
    Файл . ЗаписатьАтрибут ( «Имя» , ТЧ . Имя );
    Для Каждого СтрокаТЧ из ДокСсылка [ ТЧ . Имя ] Цикл
    Файл . ЗаписатьНачалоЭлемента ( «ЭлементКоллекции» );
    Для Каждого РеквизитТЧ Из ТЧ . Реквизиты Цикл
    Файл . ЗаписатьНачалоЭлемента ( «Реквизит» );
    Файл . ЗаписатьАтрибут ( «Имя» , РеквизитТЧ . Имя );
    ТипЗначения = ТипЗнч ( СтрокаТЧ [ РеквизитТЧ . Имя ]);
    Если Не ТипЗначения = Тип ( «Неопределено» ) Тогда
    Файл . ЗаписатьАтрибут ( «ИмяТипа» , XMLТип ( ТипЗначения ). ИмяТипа );
    Файл . ЗаписатьАтрибут ( «URI» , XMLТип ( ТипЗначения ). URIПространстваИмен );
    КонецЕсли;
    Файл . ЗаписатьТекст ( XMLСтрока ( СтрокаТЧ [ РеквизитТЧ . Имя ]));
    Файл . ЗаписатьКонецЭлемента ();
    КонецЦикла;
    Файл . ЗаписатьКонецЭлемента ();
    КонецЦикла;
    Файл . ЗаписатьКонецЭлемента ();
    КонецЦикла;
    //
    Файл . ЗаписатьКонецЭлемента (); //начисление зарплаты

    5.png

    Зачем нужен механизм XDTO?

    Механизм XDTO создан для оперирования структурой XML. Если известна схема XDTO для XML-документа, то возможно обращаться к фрагментам этого документа «через точку», как к реквизитам объектов конфигурации, а не записывать их как отдельные блоки xml-файла.

    XDTO-пакет – объект конфигурации, который предназначен для описания значений, типов, их взаимосвязей. С помощью команд экспорта и импорта пакет можно выгрузить в файл *.xsd (xml-схема) и загрузить в конфигурацию готовую схему. Пространство имен — свойство XDTO-пакета — часто задается в формате веб-адреса, что дезориентирует программистов, начинающих знакомиться с этим объектом. В действительности это просто принятый формат и строка может быть любой с учетом соблюдения уникальности внутри конфигурации.

    Помимо пакетов, создаваемых программистами в конфигураторе (ветка XDTO-пакеты дерева метаданных), существуют стандартные пакеты, описывающих все данные, предоставляемые платформой. Пакет http://v8.1c.ru/8.1/data/enterprise/current-config содержит в себе все метаданные текущей конфигурации. Пакет http://www.w3.org/2001/XMLSchema содержит стандартные типы xml, такие как число или строка.

    Фабрика XDTO – это объект встроенного языка 1С, который позволяет создавать объекты XDTO нужного типа. Глобальная фабрика, доступная через свойство глобального контекста ФабрикаXDTO, содержит все встроенные пакеты и пакеты, созданные разработчиками.

    Подпишитесь на дайджест!
    Подпишитесь на дайджест, и получайте ежемесячно подборку полезных статей.

    Пример 3. Выгрузка через глобальную фабрику XDTO

    Выгрузим документ, используя глобальную фабрику XDTO и пакет http://v8.1c.ru/8.1/data/enterprise/current-config с метаданными текущей конфигурации. При этом для свойств документа используем английский синтаксис, к документу-объекту обращаемся как к DocumentObject.ИмяДокумента, к справочнику-объекту как к CatalogObject.ИмяСправочника, к табличной части документа — как DocumentTabularSectionRow.ИмяДокумента.ИмяТабличнойЧасти.

    Теперь возможно обращение «через точку», например, к подразделению в шапке документа.

    ТипОбъектаXDTOПодразделение = ФабрикаXDTO . Тип ( «http://v8.1c.ru/8.1/data/enterprise/current-config» , «CatalogObject.Подразделения» );
    ПодразделениеXDTO = ФабрикаXDTO . Создать ( ТипОбъектаXDTOПодразделение );
    ПодразделениеXDTO . Ref = СериализаторXDTO . XMLСтрока ( ДокСсылка . Подразделение );
    ПодразделениеXDTO . Code = ДокСсылка . Подразделение . Код ;
    ПодразделениеXDTO . Description = ДокСсылка . Подразделение . Наименование ;
    ТипОбъектаXDTOДокумент = ФабрикаXDTO . Тип ( «http://v8.1c.ru/8.1/data/enterprise/current-config» , «DocumentObject.НачислениеЗарплаты» );
    ДокументХDTO = ФабрикаXDTO . Создать ( ТипОбъектаXDTOДокумент );
    ДокументХDTO . Ref = СериализаторXDTO . XMLСтрока ( ДокСсылка );
    ДокументХDTO . Date = ДокСсылка . Дата ;
    ДокументХDTO . Number = ДокСсылка . Номер ;
    ДокументХDTO . Подразделение = ПодразделениеXDTO . Ref ; //обращение через точку
    Для Каждого СтрокаНачисления Из ДокСсылка . Начисления Цикл
    ТипОбъектаXDTOСотрудник = ФабрикаXDTO . Тип ( «http://v8.1c.ru/8.1/data/enterprise/current-config» , «CatalogObject.Сотрудники» );
    СотрудникXDTO = ФабрикаXDTO . Создать ( ТипОбъектаXDTOСотрудник );
    СотрудникXDTO . Ref = СериализаторXDTO . XMLСтрока ( СтрокаНачисления . Сотрудник );
    СотрудникXDTO . Code = СтрокаНачисления . Сотрудник . Код ;
    СотрудникXDTO . Description = СтрокаНачисления . Сотрудник . Наименование ;
    ТипОбъектаXDTOТабличнаяЧасть = ФабрикаXDTO . Тип ( «http://v8.1c.ru/8.1/data/enterprise/current-config» , «DocumentTabularSectionRow.НачислениеЗарплаты.Начисления» );
    СтрокаНачисленияXDTO = ФабрикаXDTO . Создать ( ТипОбъектаXDTOТабличнаяЧасть );
    СтрокаНачисленияXDTO . Сотрудник = СотрудникXDTO . Ref ;
    СтрокаНачисленияXDTO . Сумма = СтрокаНачисления . Сумма ;
    ДокументХDTO . Начисления . Добавить ( СтрокаНачисленияXDTO );
    КонецЦикла;
    ФабрикаXDTO . ЗаписатьXML ( НоваяЗаписьXML , ДокументХDTO );

    7.png

    Пример 4. Выгрузка документа через XDTO-пакет

    В предыдущем примере мы использовали глобальную фабрику XDTO, не создавая отдельный пакет XDTO. Но средствами языка 1С возможно создавать новые фабрики, включая в них только типы из нужных пакетов. В рабочей ситуации использование пакета XDTO применяется, например, в случае необходимости выгрузки данных отчетности в определенном формате, «зашифрованном» в предоставленном файле *.xsd, который можно загрузить в конфигурацию как XDTO-пакет.

    Выгрузим наш документ с помощью ручного создания пакета XDTO. Добавим в дерево конфигурации пакет ИнфоСофт с пространством имен www.infosoft.ru (что, как мы помним, не является веб-ссылкой. Можно было использовать просто имя infosoft или другое).

    8.png9.png

    Создадим типы объектов соответственно нашим справочникам и документам, у типов добавим свойства аналогично реквизитам объектов. В момент выбора типа значения для нового свойства в окне Выбор пакетов XDTO можно увидеть все доступные в конфигурации типы.

    Для простых типов выберем типы из пакета http://www.w3.org/2001/XMLSchema , для «ссылочных» типов, в частности, свойства Подразделение типа Начисление зарплаты выберем ссылку на тип Подразделение из пакета ИнфоСофт.

    Для табличной части поставим Тип — СтрокаТабличнойЧасти из того же пространства имен, максимальное количество = -1 (неограничено).

    10.png

    ПодразделениеXDTO = ФабрикаXDTO . Создать ( ФабрикаXDTO . Тип ( «www.infosoft.ru» , «Подразделение» ));
    ПодразделениеXDTO . Ссылка = СериализаторXDTO . XMLСтрока ( ДокСсылка . Подразделение );
    ПодразделениеXDTO . Код = ДокСсылка . Подразделение . Код ;
    ПодразделениеXDTO . Наименование = ДокСсылка . Подразделение . Наименование ;
    ДокументХDTO = ФабрикаXDTO . Создать ( ФабрикаXDTO . Тип ( «www.infosoft.ru» , «НачислениеЗарплаты» ));
    ДокументХDTO . Ссылка = СериализаторXDTO . XMLСтрока ( ДокСсылка );
    ДокументХDTO . Дата = ДокСсылка . Дата ;
    ДокументХDTO . Номер = ДокСсылка . Номер ;
    ДокументХDTO . Подразделение = ПодразделениеXDTO ;
    ДокументХDTO . СуммаДокумента = ДокСсылка . СуммаДокумента ;
    ДокументХDTO . РасчетАванса = ДокСсылка . РасчетАванса ;
    Для Каждого СтрокаНачисления Из ДокСсылка . Начисления Цикл
    СотрудникXDTO = ФабрикаXDTO . Создать ( ФабрикаXDTO . Тип ( «www.infosoft.ru» , «Сотрудник» ));
    СотрудникXDTO . Ссылка = СериализаторXDTO . XMLСтрока ( СтрокаНачисления . Сотрудник );
    СотрудникXDTO . Код = СтрокаНачисления . Сотрудник . Код ;
    СотрудникXDTO . Наименование = СтрокаНачисления . Сотрудник . Наименование ;
    СтрокаНачисленияXDTO = ФабрикаXDTO . Создать ( ФабрикаXDTO . Тип ( «www.infosoft.ru» , «СтрокаТабличнойЧасти» ));
    СтрокаНачисленияXDTO . Сотрудник = СотрудникXDTO ;
    СтрокаНачисленияXDTO . Сумма = СтрокаНачисления . Сумма ;
    ДокументХDTO . ТабличнаяЧастьНачисления . Добавить ( СтрокаНачисленияXDTO );
    КонецЦикла;
    ФабрикаXDTO . ЗаписатьXML ( Файл , ДокументХDTO );

    Нужно ли изменять конфигурацию для работы XDTO?

    Не обязательно. Как мы видели, для выгружаемых объектов, существующих в конфигурации, можно использовать глобальную фабрику XDTO. Если же имеется готовая схема xsd из файла, то возможно как загрузить ее в качестве XDTO-пакета, так хранить ее в расширении или же считать файл и создать из него фабрику XDTO, не меняя конфигурацию.

    Пример 5. Хранение схемы XDTO в файле

    Сохраним схему ИнфоСофт в файл Схема.xsd в нашем каталоге выгрузки.

    Создадим фабрику XDTO на основе схемы XML, содержащейся в файле.

    // Создать фабрику XDTO на основе схемы XML, содержащейся в файле XML
    // Создать объект чтения XML по умолчанию
    ЧтениеXML = Новый ЧтениеXML ;
    // Открыть файл XML
    ЧтениеXML . ОткрытьФайл ( КаталогВыгрузки + «\схема.xsd» );
    // Создать построитель документа DOM по умолчанию
    ПостроительDOM = Новый ПостроительDOM ;
    // Прочитать файл XML в документ DOM
    ДокументDOM = ПостроительDOM . Прочитать ( ЧтениеXML );
    // Создать построитель схемы XML по умолчанию
    ПостроительСхемыXML = Новый ПостроительСхемXML ;
    // Получить схему XML из документа DOM
    СхемаXML = ПостроительСхемыXML . СоздатьСхемуXML ( ДокументDOM );
    // Создать набор схем XML по умолчанию
    НаборСхемXML = Новый НаборСхемXML ;
    // Добавить схему XML в набор схем XML
    НаборСхемXML . Добавить ( СхемаXML );
    // Создать фабрику XDTO на основе набора схем XML
    НоваяФабрикаXDTO = Новый ФабрикаXDTO ( НаборСхемXML );

    Далее код идентичен Примеру 4 с заменой ФабрикаXDTO на НоваяФабрикаXDTO.

    Для чистоты эксперимента можно удалить из конфигурации XDTO пакет ИнфоСофт, выгрузка будет работать.

    Можно ли «нарисовать» схему XDTO не в 1С, а в каком-нибудь редакторе?

    Да, существует, например, программа Liquid XML Studio , а также онлайн-сервисы.

    Что делать, если есть xml, но нет схемы к нему?

    Существует множество инструментов, как онлайн так и оффлайн, способных по входящему XML-файлу распознать его структуру и вывести в формате XSD. Например, xsd.exe, являющийся частью NET Framework (отдельно файл удалось найти по адресу https://juliankay.com/development/download-xsd-exe) или бесплатный онлайн-конвертер https://www.liquid-technologies.com/online-xml-to-xsd-converter

    Результат автоматического распознавания, скорее всего, потребует ручных правок.

    Мы выгрузили в XML один документ различными способами, как с XDTO, так и без. Результирующие файлы немного отличаются форматом, но в выгрузку попали все имеющиеся поля документа. В заключение статьи сделаем следующие выводы:

    1) XDTO можно использовать как инструмент выгрузки в XML-формат

    2) Использовать именно XDTO для XML необязательно, но может быть удобно или необходимо (например, при обмене с другими приложениями в случае имеющегося файла со схемой *.xsd)

    3) Работа с XDTO необязательно подразумевает изменение конфигурации и добавление XDTO-пакета.

    Напомним, что все примеры,
    приведенные в статье, находятся в приложенной тестовой базе в обработке Примеры
    выгрузки в XML.

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

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