Как добавить xdto пакет в 1с
Перейти к содержимому

Как добавить xdto пакет в 1с

  • автор:

XDTO-пакет в 1С: что это такое, как осуществляется обмен и выгрузка данных

Бобков Олег

Конструкторы

Релиз платформы 1С версии 8.1 открыл для пользователей новый механизм, получивший название XML Data Transfer Objects. Его использование позволяет упростить конвертацию информации из учетной программы в соответствии со стандартной конфигурацией, обеспечивающей возможность чтения документа другими приложениями и сводящей к минимуму вероятность возникновения ошибок обработки. Функциональная задача инструмента — помощь в создании файлов, формат и структура которых будет понятна как юзеру, так и машинному алгоритму. Давайте разберемся, что такое пакет XDTO в 1С 8,1, схему выгрузки в таблицу значений, обмена и записи в XML, и почему это просто находка для тех, кто не слишком хорошо знаком с нюансами работы в нескольких системных программах.

Общее представление

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

Функциональные возможности

  • Описание параметров и возвращаемых значений различных Web-сервисов.
  • Обмен информацией между конфигурацией Предприятия.
  • Передача данных с использованием структуры XML без привязки к форме.
  • Формирование собственной системы типовых характеристик, позволяющей обрабатывать произвольную информацию.

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

Готовые решения для всех направлений

Ускорьте работу сотрудников склада при помощи мобильной автоматизации. Навсегда устраните ошибки при приёмке, отгрузке, инвентаризации и перемещении товара.

Мобильность, точность и скорость пересчёта товара в торговом зале и на складе, позволят вам не потерять дни продаж во время проведения инвентаризации и при приёмке товара.

Обязательная маркировка товаров — это возможность для каждой организации на 100% исключить приёмку на свой склад контрафактного товара и отследить цепочку поставок от производителя

Скорость, точность приёмки и отгрузки товаров на складе — краеугольный камень в E-commerce бизнесе. Начни использовать современные, более эффективные мобильные инструменты.

Учреждения

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

Повысьте эффективность деятельности производственного предприятия за счет внедрения мобильной автоматизации для учёта товарно-материальных ценностей.

Первое в России готовое решение для учёта товара по RFID-меткам на каждом из этапов цепочки поставок.

Исключи ошибки сопоставления и считывания акцизных марок алкогольной продукции при помощи мобильных инструментов учёта.

Стать партнером

Получение статуса партнёра «Клеверенс» позволит вашей компании выйти на новый уровень решения задач на предприятиях ваших клиентов.

Получение сертифицированного статуса партнёра «Клеверенс» позволит вашей компании выйти на новый уровень решения задач на предприятиях ваших клиентов..

Используй современные мобильные инструменты для проведения инвентаризации товара. Повысь скорость и точность бизнес-процесса.

Типы, объекты и фабрики

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

Собственная фабрика

Расширение XDTO пакета 1С

Главным корневым элементом подсистемы выступают рассматриваемые массивы, от которых разветвляются и множатся все остальные связи. Именно с них и стоит начать рассмотрение предложенной модели данных.

Особенности конфигурации

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

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

Выгрузка модели данных

Особенности устройства

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

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

  • ТипЗначения XDTO;
  • ТипОбъекта XDTO;
  • Значение XDTO;
  • Объект XDTO;
  • Список XDTO.

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

Интеграция в конфигурацию

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

Повторение значений

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

Сериализация XDTO

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

  • Создание XDTO и последующая сериализация в обоих направлениях
  • Извлечение из объектов прикладных элементов, включая строки, ссылки и т. д.

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

Очевидно, что указанные механизмы, несмотря на четкое разграничение, на самом деле неотделимы друг от друга. И все же их функциональная сущность различна — платформа пытается замаскировать существующую принципиальность различий, автоматически реализуя процедуру сериализации тех типов, которые ей доступны.

Метод Тип

Чистый XDTO

В тех ситуациях, когда пользователю требуется, например, извлечь из «Карточки» непосредственное значение, не адаптированное сериализатором под готовые 1С строки, следует воспользоваться методом «Получить», функционал которого обеспечивает возврат искомого объекта.

Список XDTO

Еще один класс, функциональные возможности которого позволяют создавать условия для группового взаимодействия с объектными наборами. Формируется при условии, что одному из свойств установлена предельная граница, не равная нулю — число определяет максимально допустимое количество, при этом значение «-1» показывает отсутствие ограничений.

Задача списков — обработка и оптимизация рутинных процессов, однако в этом аспекте важно понимать, когда именно реализуется подобный формат сериализации. Так, обход синтаксис-помощника работает через итератор, а также через метод «Получить» (Номер) — в обоих случаях результирующий показатель получится сериализованным, представляя собой ссылку 1С.

Фабрика XDTO

Здесь речь идет о классе, выступающим единственным средством, обеспечивающим прямую и обратную конвертацию файлов формата XML в объектные элементы. Фабрика тщательно отслеживает соответствие установленной по умолчанию схеме, и в тех ситуациях, когда наполнение расходится с заданной конфигурацией, возникает исключение времени выполнения.

Свойство «Пакеты»

Ранее мы уже упоминали о том, что под моделью данных подразумевается пакетный массив. Исходя из этого, можно рассматривать предыдущий класс в качестве его непосредственного пользователя. Обращение к коллекции допускается как на основании присвоенного автоматически числового параметра, так и по унифицированному кодификатору ресурса, либо, при необходимости, с использованием стандартного перебора.

Теперь рассмотрим основные применяемые методы.

Тип ()

Предусматривает получение полной вводной, т. е. URI и имени, и в качестве результата возвращает конкретный объект или значение — в зависимости от параметров. Подобные элементы сопоставимы с классом «Метаданные», применяемым в синтаксисе 1С, и обеспечивают определение типа XDTO, к примеру, по таким характеристикам, как перечень свойств, длина, маска и т. д.

Создать ()

Пожалуй, наиболее популярная опция, благодаря которой фабрика в полной мере оправдывает собственное название. Конфигурирует объектные файлы в соответствии с заданной схемой.

Записать XML ()/Прочитать XML ()

Обеспечивают отправку в поток, чтение и последующее создание объекта на его основании. Характеризуются наличием ряда особенностей.

Чтение XML

Любое взаимодействие с документами подобного рода подразумевает наличие источника, в качестве которого могут выступать текстовые документы, модели данных, либо FastInfoset. Само происхождение не имеет принципиального значения, поскольку все указанные варианты взаимно заменяют друг друга. Перед тем как создать и добавить пакет XDTO в 1С, потребуется соотнести область происхождения файла с началом конкретного узла, и воспользоваться методом Фабрика XDTO.Прочитать XML ().

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

Устройство пакета

Запись XML

Для реализации процедуры применяется 1С пример Фабрика XDTO.Записать XML (ПотокЗаписи, Объект XDTO), что позволяет по дефолту помещает компонент в соответствующий типовому значению именной узел. Важно учесть, что структура XML допускает запись особого атрибута — xsi:type — который содержит явное указание на заданный критериями объектный тип. Необходимость пометки в файле обеспечивается вводом в методе параметра «УказаниеТипа».

Собственная фабрика и модель данных XDTO

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

Конструкторы

Существует два варианта, каждый из которых сводится к потребности наличия доступного для осуществления функционала пакетного массива, выступающего основой для модели данных. Изучение синтаксис-помощника позволяет уточнить, что от пользователя требуется создать объект, имеющий тип Model, который был объявлен в именном пространстве http://v8.1c.ru/8.1/xdto. Таким образом, решение задачи рассматривается в качестве простого алгоритма, предусматривающего создание очередного описания Объект XDTO для дальнейшего использования конструктором. Упростить процедуру помогают два метода экспортирования — «ЭкспортМодели XDTO ()» и «ЭкспортСхемы XML ()», которые обеспечивают возврат готовых элементов, адаптированных к конфигурации системы.

Выгрузка модели данных

Стандартная последовательность действий предусматривает несколько этапов:

  1. Формирование перечня пакетов с указанием в списке нужных вариантов.
  2. Создание массива URI с отмеченными значениями и генерация файла.
  3. Запись с явным указанием параметров необязательного типа.
  4. Запуск собственной фабрики на основе полученного результата.

Функции XDTO 1С — описание возврата web-сервисов, конвертация, передача и чтение информации — заметно упрощают взаимодействие с платформой и другими системными приложениями. Подобные решения представляют особую значимость для успешной реализации бизнеса, специфика которого предусматривает активную работу с учетными базами. Для тех, кто предпочитает оптимизировать все процессы, создавая эффективный управленческий цикл, стоит также рассмотреть возможности мобильной автоматизации, предлагаемые компанией «Клеверенс» — интеграция Mobile SMARTS на 70% сокращает издержки на проведение рутинных операций по учету товара, и позволяет свести к минимуму ошибки и расхождения, вызванные человеческим фактором.

Работа с XDTO в 1С 8.3

Анна Викулина

Гарантируем стабильный обмен без ошибок между программами 1С. Гарантии фиксируем в договоре.

от 5 400 руб.

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

Преимущества механизма XDTO

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

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

Существует два способа добавить XDTO-пакет в конфигурацию:

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

XDTO пакеты

Чтобы загрузить данные из присланной нам схемы, необходимо в режиме конфигуратор открыть раздел «Общие» и «XDTO-пакеты». Через контекстное меню выбрать пункт «Импорт XML-схемы…», выбрать файл и подтвердить пространство имен, взятое из файла. После этого необходимо обновить конфигурацию, и предварительные настройки сделаны.

Но на самом деле в последнем случае нам необязательно создавать XDTO-пакеты в конфигурации 1С 8.3. Существует возможность только использовать XSD-схему, присланную нам из отдельного файла, не внося изменения в структуру базы 1С. Для этого нужно воспользоваться кодом, объясняющим платформе 1С, какой тип объекта с какими параметрами будет загружаться.

Это происходит следующими командами:

 ФайлXSD = Новый Массив(); ФайлXSD.Добавить("D:\1\strust.xsd"); ФабрикаXDTOИзФайла = СоздатьФабрикуXDTO(ФайлXSD); Номенклатура = ФабрикаXDTOИзФайла.Тип("http://www.1c.ru/products", "Номенклатура"); 

Экспорт и импорт файла

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

  1. Заполняем URI-пространство имен в свойствах XDTO пакета. Среди разработчиков 1С принято заполнять этот реквизит адресом страницы, заполненной описанием тех данных, с которыми происходит работа. Это помогает в работе, но не всегда возможно. В иных случаях заполняют произвольным текстом;
  2. Задаем тип объекта и его свойства, используя контекстное меню. Задаем имя этих параметров и для свойств определяем тип, выбирая его из предложенных платформой.

Параметры пакета

Следующим этапом будет написание процедуры для создания файла XML по описанной выше схеме. Код достаточно прост, поскольку создан XDTO-пакет, а у элемента всего 2 свойства – «Наименование» и «Артикул». Обращаться к конкретной схеме позволяет объект платформы «ФабрикаXDTO». Сама процедура состоит из:

    Определение схемы будущей XML;

 ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура"); 
 Номенклатура = ФабрикаXDTO.Создать(ТипФабрики); Номенклатура.Наименование = "Тест XML"; Номенклатура.Артикул = "2"; 
 ИмяФайла = "D:\1\struct1.xml"; МойXML = Новый ЗаписьXML; ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь); МойXML.ОткрытьФайл(ИмяФайла, ПараметрыЗаписиXML); МойXML.ЗаписатьОбъявлениеXML(); ФабрикаXDTO.ЗаписатьXML(МойXML, номенклатура); МойXML.Закрыть(); 

Чтение XML-файлов с помощью конкретной фабрики XDTO по уже созданному в конфигурации пакету ничуть не сложнее. Алгоритм похож по структуре и отличается только операциями взаимодействия с XML-файлами. В данном случае нам нужно воспользоваться объектом платформы «ЧтениеXML» и прочитать содержимое в переменную. На выходе у нее будет тип «ОбъектXDTO», и вы сможете обращаться ко всем ее свойствам через точку.

 ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура"); ИмяФайла = "D:\1\struct1.xml"; МойXML = Новый ЧтениеXML; МойXML.ОткрытьФайл(ИмяФайла); номенклатура = ФабрикаXDTO.ПрочитатьXML(МойXML, ТипФабрики); МойXML.Закрыть(); 

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

Экспорт XDTO-пакета

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

Исправление ошибок

Одной из достаточно распространенных ошибок, связанных с работой с XDTO-пакетами, является «Ошибка преобразования данных XDTO». Ее суть заключается в том, что платформа не может разобрать данный ей XML-файл по заданной схеме. При получении подобной ошибки при импорте данных, необходимо проверить формат файлов – возможно, присутствуют незакрытые теги.

Зачастую проблема с ошибками преобразования данных возникает и по другим причинам:

  • Ошибки в обновлении платформы или конфигурации;
  • Обмен между базами разных версий;
  • Недочеты в алгоритме приема данных;
  • Проблемы с временной памятью конкретного компьютера.

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

Ошибка преобразования данных

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

Ошибка проверки данных

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

Несоответствие типов XDTO

На первый взгляд работа с XDTO достаточно сложна, поэтому на первое время рекомендуется добавлять XDTO-пакеты в 1С для большего порядка и учета. Конечно, все нюансы изучить сразу невозможно, но в процессе работы вы будете продолжать учиться. Но с уверенной теоретической базой намного удобнее начинать разбираться в этом вопросе.

XDTO для чайников

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

&НаСервере Функция КомандаВыгрузитьНаСервере() // Вставить содержимое обработчика. ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); РеализацияXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("infostart", "ДокументРеализация")); РеализацияXDTO.Ссылка = СериализаторXDTO.XMLСтрока(выбРеализация.Ссылка); РеализацияXDTO.Дата = выбРеализация.Дата; РеализацияXDTO.Номер = выбРеализация.Номер; РеализацияXDTO.Контрагент = выбРеализация.Контрагент.Наименование; ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, РеализацияXDTO); Возврат ЗаписьXML.Закрыть(); КонецФункции &НаКлиенте Процедура КомандаВыгрузить(Команда) ОбъектXDTO = КомандаВыгрузитьНаСервере(); ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.ОткрытьФайл(выбФайл); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.ЗаписатьБезОбработки(ОбъектXDTO); ЗаписьXML.Закрыть(); КонецПроцедуры 
  <ДокументРеализация xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="infostart"><Ссылка xsi:type="xs:string">63d07913-1e98-11e6-a31d-14dae9b19a48 <Дата xsi:type="xs:dateTime">2016-12-29T12:00:00 <Номер xsi:type="xs:string">0000-000603 <Контрагент xsi:type="xs:string">Внуковский комбинат бортового питания 

Изменим форму представления для свойств объекта XDTO Результат

Переходим к загрузке данных. Создадим обработку загрузки. Код

&НаСервереБезКонтекста Функция ПолучитьСсылкуПоУИ(УникальныйИдентификатор, МенеджерОбъекта) УИДСсылки = СериализаторXDTO.XMLЗначение(Тип("УникальныйИдентификатор"), УникальныйИдентификатор); Возврат МенеджерОбъекта.ПолучитьСсылку(УИДСсылки); КонецФункции &НаСервереБезКонтекста Процедура ЗагрузитьРеализации(ТекстФайла) ЧтениеXML = Новый ЧтениеXML(); ЧтениеXML.УстановитьСтроку(ТекстФайла); РеализацияXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип("infostart", "ДокументРеализация")); сРеализацияТоваров = ПолучитьСсылкуПоУИ(РеализацияXDTO.Ссылка, Документы.РеализацияТоваровУслуг); оРеализацияТоваров = сРеализацияТоваров.ПолучитьОбъект(); Если оРеализацияТоваров = Неопределено Тогда оРеализацияТоваров = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); оРеализацияТоваров.УстановитьСсылкуНового(сРеализацияТоваров); КонецЕсли; оРеализацияТоваров.Дата = РеализацияXDTO.Дата; оРеализацияТоваров.Номер = РеализацияXDTO.Номер; оРеализацияТоваров.Записать(РежимЗаписиДокумента.Запись); КонецПроцедуры &НаКлиенте Процедура КомандаЗагрузить(Команда) // Вставить содержимое обработчика. ЧтениеТекста = Новый ЧтениеТекста(выбФайл); ТекстФайла = ЧтениеТекста.Прочитать(); ЗагрузитьРеализации(ТекстФайла); КонецПроцедуры 

Проверяем загрузку. Выполнение прерывается ошибкой. Через отладку можно увидеть, что значения свойств объекта РеализацияXDTO имеют строковый тип, конкретно дата в таком виде преобразуется к пустому значению. В пакете XDTO укажем свойству «Дата» тип Проверим еще раз загрузку, все должно было пройти успешно. Отдельно обращу внимание на эту строчку кода

РеализацияXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип("infostart", "ДокументРеализация")); 

При чтение объекта XDTO я принудительно указал его тип, хотя параметр не является обязательным. И сделал я это не просто так, для корневого элемента тип объекта не выгружается, это хорошо видно в xml файле, где все свойства выгружали в форме элементов. Для объекта ДокументРеализация не указан атрибут xsi:type.

  <ДокументРеализация xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="infostart"><Ссылка xsi:type="xs:string">63d07913-1e98-11e6-a31d-14dae9b19a48 <Дата xsi:type="xs:dateTime">2016-12-29T12:00:00 <Номер xsi:type="xs:string">0000-000603 <Контрагент xsi:type="xs:string">Внуковский комбинат бортового питания 

В свойство «контрагент» мы помещали наименование контрагента. Добавим новый тип объекта в пакет XDTO «СправочникКонтрагенты» со свойствами: Ссылка, Код, Наименование, НаименованиеПолное. Для свойства «Контрагент» в типе объекта «ДокументРеализация» укажем форму хранения в виде элемента. Внесем изменения в код выгрузки.

&НаСервере Функция КомандаВыгрузитьНаСервере() // Вставить содержимое обработчика. ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); КонтрагентXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("infostart", "СправочникКонтрагенты")); КонтрагентXDTO.Ссылка = СериализаторXDTO.XMLСтрока(выбРеализация.Контрагент.Ссылка); КонтрагентXDTO.Код = выбРеализация.Контрагент.Код; КонтрагентXDTO.Наименование = выбРеализация.Контрагент.Наименование; КонтрагентXDTO.НаименованиеПолное = выбРеализация.Контрагент.НаименованиеПолное; РеализацияXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("infostart", "ДокументРеализация")); РеализацияXDTO.Ссылка = СериализаторXDTO.XMLСтрока(выбРеализация.Ссылка); РеализацияXDTO.Дата = выбРеализация.Дата; РеализацияXDTO.Номер = выбРеализация.Номер; РеализацияXDTO.Контрагент = КонтрагентXDTO; ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, РеализацияXDTO); Возврат ЗаписьXML.Закрыть(); КонецФункции 

Думаю, здесь все понятно. Дольше всего я не мог разобраться, как выгружать табличные части. Создадим тип объекта «ТабличнаяЧасть» со свойством «Строки». Максимальное количество -1, означает неограниченное количество элементов. Создадим объект.

ТоварыXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("infostart", "ТабличнаяЧасть"));

И посмотрим его свойства в отладчике. Дальше, думаю, уже все понятно. Изменения в коде обработки выгрузки.

&НаСервере Функция КомандаВыгрузитьНаСервере() // Вставить содержимое обработчика. ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); КонтрагентXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("infostart", "СправочникКонтрагенты")); КонтрагентXDTO.Ссылка = СериализаторXDTO.XMLСтрока(выбРеализация.Контрагент.Ссылка); КонтрагентXDTO.Код = выбРеализация.Контрагент.Код; КонтрагентXDTO.Наименование = выбРеализация.Контрагент.Наименование; КонтрагентXDTO.НаименованиеПолное = выбРеализация.Контрагент.НаименованиеПолное; РеализацияXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("infostart", "ДокументРеализация")); РеализацияXDTO.Ссылка = СериализаторXDTO.XMLСтрока(выбРеализация.Ссылка); РеализацияXDTO.Дата = выбРеализация.Дата; РеализацияXDTO.Номер = выбРеализация.Номер; РеализацияXDTO.Контрагент = КонтрагентXDTO; ТоварыXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("infostart", "ТабличнаяЧасть")); Для Каждого сТовары Из выбРеализация.Товары Цикл НоменклатураXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("infostart", "СправочникНоменклатура")); НоменклатураXDTO.Ссылка = СериализаторXDTO.XMLСтрока(сТовары.Номенклатура); НоменклатураXDTO.Код = сТовары.Номенклатура.Код; НоменклатураXDTO.Наименование = сТовары.Номенклатура.Наименование; НоменклатураXDTO.НаименованиеПолное = сТовары.Номенклатура.НаименованиеПолное; сТоварыXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("infostart", "ДокументРеализацияТовары")); сТоварыXDTO.Номенклатура = НоменклатураXDTO; сТоварыXDTO.Количество = сТовары.Количество; сТоварыXDTO.Цена = сТовары.Цена; сТоварыXDTO.Сумма = сТовары.Сумма; сТоварыXDTO.СтавкаНДС = XMLСтрока(сТовары.СтавкаНДС); сТоварыXDTO.СуммаНДС = сТовары.СуммаНДС; ТоварыXDTO.Строки.Добавить(сТоварыXDTO); КонецЦикла; РеализацияXDTO.тчТовары = ТоварыXDTO; ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, РеализацияXDTO); Возврат ЗаписьXML.Закрыть(); КонецФункции 

Код загрузки

&НаСервереБезКонтекста Процедура ЗагрузитьРеализации(ТекстФайла) ЧтениеXML = Новый ЧтениеXML(); ЧтениеXML.УстановитьСтроку(ТекстФайла); РеализацияXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип("infostart", "ДокументРеализация")); сРеализацияТоваров = ПолучитьСсылкуПоУИ(РеализацияXDTO.Ссылка, Документы.РеализацияТоваровУслуг); оРеализацияТоваров = сРеализацияТоваров.ПолучитьОбъект(); Если оРеализацияТоваров = Неопределено Тогда оРеализацияТоваров = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); оРеализацияТоваров.УстановитьСсылкуНового(сРеализацияТоваров); КонецЕсли; оРеализацияТоваров.Дата = РеализацияXDTO.Дата; оРеализацияТоваров.Номер = РеализацияXDTO.Номер; КонтрагентXDTO = РеализацияXDTO.Контрагент; сКонтрагент = ПолучитьСсылкуПоУИ(КонтрагентXDTO.Ссылка, Справочники.Контрагенты); оКонтрагент = сКонтрагент.ПолучитьОбъект(); Если оКонтрагент = Неопределено Тогда оКонтрагент = Справочники.Контрагенты.СоздатьЭлемент(); оКонтрагент.УстановитьСсылкуНового(сКонтрагент); КонецЕсли; оКонтрагент.Код = КонтрагентXDTO.Код; оКонтрагент.Наименование = КонтрагентXDTO.Наименование; оКонтрагент.НаименованиеПолное = КонтрагентXDTO.НаименованиеПолное; оКонтрагент.Записать(); оРеализацияТоваров.Контрагент = оКонтрагент.Ссылка; оРеализацияТоваров.Товары.Очистить(); Для Каждого сТоварыXDTO Из РеализацияXDTO.тчТовары.Строки Цикл сТовары = оРеализацияТоваров.Товары.Добавить(); ЗаполнитьЗначенияСвойств(сТовары, сТоварыXDTO,,"СтавкаНДС,Номенклатура"); сТовары.СтавкаНДС = Перечисления.СтавкиНДС[сТоварыXDTO.СтавкаНДС]; НоменклатураXDTO = сТоварыXDTO.Номенклатура; сНоменклатура = ПолучитьСсылкуПоУИ(НоменклатураXDTO.Ссылка, Справочники.Номенклатура); оНоменклатура = сНоменклатура.ПолучитьОбъект(); Если оНоменклатура = Неопределено Тогда оНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); оНоменклатура.УстановитьСсылкуНового(сНоменклатура); КонецЕсли; оНоменклатура.Код = НоменклатураXDTO.Код; оНоменклатура.Наименование = НоменклатураXDTO.Наименование; оНоменклатура.НаименованиеПолное = НоменклатураXDTO.НаименованиеПолное; оНоменклатура.Записать(); сТовары.Номенклатура = оНоменклатура.Ссылка; КонецЦикла; оРеализацияТоваров.Записать(РежимЗаписиДокумента.Запись); КонецПроцедуры

Для создания примера использовались программные файлы 1С:Предприятие 8.3 (8.3.14.1694).

XDTO — это просто

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко — XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

XDTO — это просто

upd 09.01.2012. Это первая статья про XDTO. Продолжение здесь и здесь.

Введение

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко — XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. В результате, не всегда можно разобраться — что за зверь такой — XDTO. Кроме того, даже разобравшись немного и осмелев, специалисты сталкиваются с проблемами, когда начинают использовать его более активно и в более сложных сценариях. За несколько лет плотной работы с XDTO я набил массу шишек и, как мне кажется, достаточно близко подошел к постижению дао :). С моей подачи в механизме XDTO даже было исправлено несколько серьезных ошибок, нарушавших стандарты XML. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше, чем это делает стандартная документация. Надеюсь, что данный материал поможет специалистам, начинающим знакомство с XDTO избежать моих ошибок, а значит более эффективно решить поставленные задачи. Кроме того, я часто сталкиваюсь с тем, что уже достаточно опытные специалисты в сфере “1С” довольно слабо знают язык XML. Как правило, в повседневной деятельности им хватает базовых знаний синтаксиса, и погружение в более сложные моменты им не нужно. Поэтому, в данной статье будут затронуты темы не только напрямую касающиеся XDTO, но и обсуждаются некоторые синтаксические моменты XML-стандартов.

Что такое XDTO

Для начала, давайте определимся — что же это за зверь такой — XDTO? Как я уже говорил, это сокращение от XML Data Transfer Objects, что по-русски означает “XML-объекты переноса данных”. Оказывается, это не какой-то всемирно принятый стандарт, поддерживаемый платформой 1С. Наоборот, аббревиатура XDTO родилась в недрах фирмы 1С и представляет собой ее собственный креатив. Нигде, кроме как в сфере 1С, вы не встретите данного сочетания букв.

Зачем оно надо?

Мне не ведомы истинные мотивы создания целой подсистемы, но кажется, что основная цель — это создание простой объектной модели доступа к XML документам. Причем, под объектной моделью должно пониматься не абстрактное дерево узлов XML, а именно прикладные классы данных, полезные с точки зрения бизнес-логики.. И вот эти объекты должны участвовать в таких механизмах взаимодействия, где нужно передать с машины на машину удобный для использования объект. Как пример — объекты XDTO используются для обмена с веб-сервисами.

Что в итоге?

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

Начнем знакомство

Для начала, давайте обратимся к концепции XML документа, как такового. Как правило, документ содержит некоторую структурированную информацию, которую можно условно представить в виде набора объектов. Например, документ “СписокСотрудников.xml” содержит узел “Сотрудники”, внутри которого имеются элементы с типом “Сотрудник”. Для того, чтобы корректно прочитать данный документ, мы должны знать структуру того, как в документе расположены данные. Для этого существует такая вещь, как Схема XML. Схема XML представляет собой документ, в котором описаны все типы, которые могут встретиться в документе. Строго говоря, это не совсем точное определение схемы, но для XDTO его вполне достаточно. Схема однозначно указывает, какие узлы и в каком порядке должны располагаться в документе. Кроме того, она представляет наборы узлов в виде функциональных типов данных, таких, как “Сотрудник”. Что еще более приятно — типы могут наследоваться и составлять иерархии типов. А теперь, вспомним, зачем нужен XDTO — представление XML в виде объектов бизнес-логики. Если у нас будет набор бизнес-объектов, которые нужно передать по сети в виде XML, то мы можем создать XML-документ с помощью стандартного средства записи — объекта ЗаписьXML и поэлементно создать структуру, постаравшись ничего не напутать в структуре документа. Либо, мы можем создать XML-документ c помощью XDTO, используя более простой код: Сотрудник . ФИО = “Иванов Иван Иванович” ;
Сотрудники . Добавить ( Сотрудник ); Низкоуровневые вопросы формирования XML и размещения его в документе возьмет на себя платформа. Здесь я заранее хочу попросить прощения за такое длинное вступление у тех, кто хорошо знаком с XML и с XDTO. Мне хочется, чтобы рассказ шел от самых начал, т.к. я не могу заранее предсказать квалификацию читателя. Если все вышесказанное вам и так известно, пролистайте ниже :). Вернемся к приведенному примеру кода. Видно, что есть некий объект сотрудник со свойством “ФИО”, которому присваивается строка. Далее этот сотрудник помещается в коллекцию. После записи коллекции, мы получим готовый XML документ, что явно проще, чем ручное создание элементов и атрибутов с помощью ЗаписьXML. Закономерный вопрос — как платформа узнает о том, какие свойства есть у сотрудника и как его записывать в XML-файл? Ответ только один — из схемы XML документа. Платформа знает какие свойства могут быть у объекта, потому, что этот объект описан в схеме будущего документа. Закономерный вывод — XDTO без схемы документа работать не может. Система типов обязательно должна быть известна, только тогда мы сможем создавать объекты этих типов, присваивать им свойства, записывать и читать их из XML потока. Теперь все вместе: Платформа позволяет оперировать фрагментами XML-документов, как обыкновенными объектами, к которым можно, например, обращаться “через точку”. При этом, сами объекты описываются в XML-схеме, и именно из нее платформа узнает — как выглядит тот или иной объект. То, как выглядит объект, называется типом . То есть, чтобы получить объект мы должны знать его тип .

Типы, объекты и фабрики

Пространства имен

На свете существует огромное количество программистов, которые создают те или иные XML-документы. При этом, очень часто они оперируют одинаковыми понятиями, например “Дата”, “Цена” и “Сотрудник”. Если вдруг две системы имен (созданных разными программистами) встретятся в рамках одной информационной системы, то произойдет конфликт имен. Например, Вася создал тип данных “Сотрудник” со свойством “ФИО” и Петя создал объект «Сотрудник» со свойствами “Фамилия”, “Имя”, “Отчество” и “ИНН”. Объекты разные, а имя типа одно, возникает путаница. Чтобы этого избежать, используются пространства имен. Все имена должны быть уникальны в рамках одного пространства имен. Имена в разных пространствах запросто могут повторять друг друга. По традиции (и по многим другим соображениям), пространства именуются в виде URL-подобных строк. Например, “ http://vasya.org/xml/sotrudniki ”. Причем, это не ссылка в сети, это просто строка-идентификатор. Документы пестрят этими “ссылками” и ,сталкиваясь с ними, начинающий специалист впадает в ступор — “что это за адреса, что по ним расположено, а что, если нет интернета. ” Так вот, это не адреса, это уникальные идентификаторы пространств имен. Строка может быть любой. Теперь, все типы, которые изобретет Вася, он поместит в свое пространство имен и творчество Пети ему не страшно. Всегда можно отличить одного “Сотрудника” от другого.

Типы данных

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

Модель данных и Фабрика XDTO

При построении системы типов XDTO используется понятие Модели данных . Модель представляет собой совокупность всех типов, которые можно записать в один XML документ. С понятием модели неразрывно связано понятие Фабрики XDTO. Фабрика, это объект платформы 1С:Предприятие, который позволяет создавать те самые объекты “Сотрудник”, к которым можно обращаться “через точку”. Именно фабрика создает объект встроенного языка и наделяет его свойствами “ФИО” и “ИНН”, позволяя виртуальной машине обращаться к этим свойствам. Перечень возможных типов и их свойств фабрика берет из модели данных , которая в конечном итоге представляет собой просто набор схем XML.

Что в итоге?

Представьте, что у нас есть большая система взаимосвязанных типов. Каждый тип входит в определенный логический блок типов, а блоки для удобства разнесены по разным схемам XML. Например, у нас есть блок “Коллекции”, представляющий абстрактные списки объектов и есть блок “Сотрудники”, представляющий типы объектов, описывающие сотрудников, их зарплату, должности и т.п. Нам нужно выгрузить и передать куда-то XML документ со списком сотрудников. Для этого, нам удобно взять тип “Список” из схемы списков и наполнить его “Сотрудниками” из схемы “Сотрудники”. В результате, наша модель типов включает в себя 2 схемы (2 пакета) типов — “Списки” и “Сотрудники”. На основании данной модели типов мы можем создать Фабрику, которая будет “строить” объекты, к которым мы сможем обращаться из встроенного языка.

Меньше слов, ближе к делу

Для того, чтобы воспользоваться механизмом XDTO нам потребуется модель типов. Модель типов — это набор схем XML, а сами схемы можно сделать любым текстовым редактором, но лучше воспользоваться специализированным инструментом. Для разработки схем я использую Liquid XML Studio. Отличный инструмент позволяющий построить схему посредством тыкания мышкой. Я пользуюсь версией 2008, она бесплатная, но слегка глючная. Более старшие версии мощны, но за деньги. Liquid XML Studio позволяет строить схемы в виде вот-таких картинок: Создаваемая схема описывает типы данных, которые мы можем использовать. Обязательно задается пространство имен, которому наши типы будут принадлежать. Сами типы подразделяются на простые и составные (simple и complex). Соответственно, простые типы, это те, которые можно представить одним значением — строка, дата, булево и т.п. Составные объекты — те, которые содержат несколько значений, а стало быть одной строчкой представлены быть не могут. В конфигураторе, каждая схема XML может быть представлена в виде ПакетаXDTO , а вся совокупность типов, имеющихся в конфигурации составляет Модель данных конфигурации. Соответственно, все типы Модели (включая созданные нами Пакеты ) могут создаваться глобальным объектом ФабрикаXDTO . Простые типы XML представляются в виде объектов языка 1С с типом “ЗначениеXDTO”. Составные типы XML представляются в виде объектов языка 1С с типом “ОбъектXDTO”. Подобно тому, как в конфигурации есть метаданные, предоставляющие информацию о типах, в XDTO тоже есть подобные объекты — ТипЗначенияXDTO и ТипОбъектаXDTO. Эти объекты позволяют узнать информацию о типе данных — размер, число знаков после запятой, неотрицательность и т.п.

Что со всем этим делать?

Давайте еще раз подведем краткий итог и воспользуемся полученной информацией. Итак, у нас есть 2 пакета типов (2 схемы XML). Первая — разные коллекции, списки, соответствия и т.п. Вторая — сотрудники. Нам нужно сформировать список сотрудников. 1. Предположим, что пакет коллекций имеет пространство имен “http://super-puper/collections”, а пакет сотрудников — “ http://super-puper/employees ”. 2. В конфигураторе раскрываем ветку ПакетыXDTO и в контекстном меню выбираем “Импорт схемы XML”. Указываем файлы со схемами. 3. В ветке пакетов появятся наши пакеты. Зададим им осмысленные имена (любые) 4. Теперь конфигурация “знает” о наших типах данных и они включены в модель типов конфигурации

Применение в коде

Как уже говорилось, для создания объектов XDTO применяется ФабрикаXDTO. Чтобы создать объект, фабрика должна знать его тип. Делается это следующим образом: // Создается объект языка 1С с типом “ТипОбъектаXDTO”
// Первый параметр пространство имен, второй — имя типа в пространстве имен.
ТипОбъектаСписок = ФабрикаXDTO . Тип ( “http : //super-puper/collections”, “Список”);

// Создаем объект списка
ОбъектСписок = ФабрикаXDTO . Создать ( ТипОбъектаСписок );

// обход сотрудников для выгрузки
Пока Выборка . Следующий () Цикл
ТипОбъектаСотрудник = ФабрикаXDTO . Тип ( “http : //super-puper/employees”, “Сотрудник”);
Сотрудник = ФабрикаXDTO . Создать ( ТипОбъектаСотрудник );

// Свойство “ФИО” объявлено в схеме
Сотрудник . ФИО = Выборка . Наименование ;

// Добавление “Сотрудников” в “Список”
ОбъектСписок . Добавить ( Сотрудник );

// А теперь, запись в поток XML

Запись = Новый ЗаписьXML ;
Запись . УстановитьСтроку (); // запись в строку

ФабрикаXDTO . Записать ( Запись , ОбъектСписок );
ДанныеXML = Запись . Закрыть (); // документ готов!

Резюме

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

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

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