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

Обновлено: 07.07.2024

С помощью механизма XDTO можно описать систему типов и значений, с помощью которой можно легко выполнить сериализацию/десериализацию в XML/JSON.

XDTO можно сравнить со схемой XML. С помощью механизма XDTO можно создать XML-схему, а потом на основании этой схемы сформировать XML-документ.

XDTO может применяться в следующих случаях:

  • Для описания типов параметров и возвращаемых значений Web-сервисов.
  • Для описания структуры данных, используемой при обмене с внешними системами (в том числе с другими базами на платформе 1С).
  • Для создания собственных типов и значений, используемых внутри конфигурации 1С.

Создание XDTO-пакета

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

Для обмена будет использоваться определенный формат следующего вида:

XDTO

Есть корневой элемент Документ, который имеет 2 свойства: Тип и Состав. Состав включает в себя массив строк со свойствами: Номенклатура, Количество и Сумма.

Для описания данного формата будем использовать XDTO-пакет. XDTO-пакет можно сравнить со схемой XML, в нем мы укажем какие типы будут использоваться внутри пакета и каким образом они должны быть сериализованы в XML.

URI пространства имен

URI пространства имен

Добавим в пакет новый Тип объекта:

Тип объекта

В свойствах укажем Имя Документ:

Тип объекта

Это корневой узел нашего формата.

Свойство

В свойствах укажем Имя Тип:

Свойство

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

Чтобы заполнить тип сначала нужно нажать на зеленую галочку возле свойства:

Тип

Тип
Тип

Данный тип соответствует типу 1С Строка.

Тип

Добавим для объекта Документ еще одно свойство Состав, но тип пока заполнять не будем. Должно получиться так:

Тип объекта

Теперь добавим новый тип объекта Состав. Он будет использоваться для сериализации табличной части документа. Добавим для него одно свойство Строка, тип пока не будем указывать:

Тип объекта

Так как в табличной части может быть несколько строк, то для свойства Строка в свойстве Максимальное количество нужно указать -1 (предварительно нужно нажать на зеленую галку):

Максимальное количество

Это означает, что в данном свойстве может храниться неограниченное количество значений (аналогично массиву).

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


Тип объекта

Тип объекта

Свойства
Свойства
Свойства

И наконец для свойства Строка объекта Состав укажем тип Строка (только что созданный нами тип объекта):

Свойства

На этом создание XDTO-пакета завершено. Для удобства переименуем его в Документ (нужно щелкнуть по пакету правой кнопкой, выбрать Свойства и изменить свойство Имя):

XDTO-пакет

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

Теперь напишем простую процедуру для сериализации приходного документа в XML через механизм XDTO.

Сначала рассмотрим некоторые понятия, которые будут использоваться в процессе сериализации:

Использование объектов XDTO в web-сервисах

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

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

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

Свойство замкнутости позволяет объекту переноса данных обеспечить необходимый уровень целостности, т.к. если бы какая-либо его часть ссылалась на другие объекты, то после переноса и десериализации эта ссылка стала бы недействительной, из чего следовало бы, что и сам объект переноса данных был бы непригоден для дальнейшего использования. Свойство замкнутости не запрещает иметь ссылки внутри объекта переноса данных, т.к. объект сериализуется/десериализуется как единой целое и механизм сериализации обеспечивает правильное преобразование ссылок внутри объекта переноса данных.

Механизм XDTO позволяет определять объекты переноса данных, которые могут образовывать строгую иерархию и могут сериализоваться в XML. Эти свойства позволили использовать объекты XDTO в качестве параметров и возвращаемых значений операций web-сервисов.

Все типы данных XDTO подразделяются на типы-значения и типы-объекты. Типы-значения позволяют определять простые типы, например, строки, числа, даты, булевы значения и т.д. Типы-объекты позволяют определять сложные типы, такие как структуры и массивы. Рассмотрим более подробно, как задавать с помощью XDTO некоторые характерные типы.

Строки

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

Для создания строкового значения нужно:

Строка при передаче представляется в виде текста xml тега:

Следует учесть, что строки конвертируются в UTF-8 при сериализации.

Целые числа

Целые числа моделируются типами-значениями. Целочисленный тип имеет имя: int .

Для создания целочисленного значения нужно:

Число при передаче представляется в виде текста xml тега:

Дробные числа

Дробные числа моделируются типами-значениями. Дробный тип с фиксированной точкой имеет имя: decimal , дробный тип с плавающей точкой имеет имя: float , дробный тип с плавающей точкой двойной точности имеет имя: double .

Для создания дробного значения нужно:

Число при передаче представляется в виде текста xml тега:

Даты моделируются типами-значениями. Тип даты без времени имеет имя: date , тип времени без даты имеет имя: time , тип даты и времени имеет имя: dateTime .

Для создания значения даты нужно:

Число при передаче представляется в виде текста xml тега:

Лексическое представление даты задается в формате:

Временная зона может быть не указана.

Лексическое представление времени задается в формате:

Временная зона может быть не указана.

Лексическое представление даты вместе со временем задается в формате:

Дата от времени разделяется символом T . Временная зона может быть не указана.

Структуры

Структуры моделируются типами-объектами. Перед тем как использовать структуру необходимо создать пакет XDTO, описываающий тип-объект структуры (например, через редактор XDTO). Тип-объект может содержать свойства, котрые соответствуют элементам структуры. Каждое свойство характеризуется уникальным именем и типом. Тип свойства может быть как типом-значением, так и типом-объектом.

Например, для создания структуры Номенклатура из демо-конфигурации Web-Сервисы нужно:

Структура при передаче представляется в виде xml структуры:

Массивы

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

Например, для создания массива номенклатур, определенного в свойстве Элементы структуры НоменклатураГруппа из демо-конфигурации Web-Сервисы нужно:

Массив при передаче представлятся в виде xml структуры:

Рассмотрим, как создавать типы и элементы в случае клиента web-сервиса и в случае сервера web-сервиса.

Каждый клиентский прокси (клиентская часть web-сервиса - объект WSПрокси ) содержит ссылку на фабрику XDTO, которая может использоваться для создания объектов и значений XDTO для передачи в качестве параметров и возвращаемых значений операций web-сервисов. Заметим, что глобальная XDTO фабрика (получаемая через свойство глобального контекста ФабрикаXDTO) не может быть использована для создания объектов и значений для передачи через прокси, даже если она содержит типы с такой же структурой и именами. Эти типы все равно будут считаться несовместимыми с типами данных web-сервиса.

Каждая реализация веб-сервиса (серверная часть web-сервиса) может использовать глобальную XDTO фабрику (получаемую через свойство глобального контекста ФабрикаXDTO) для создания объектов и значений web-сервиса.

Механизм XDTO

Аббревиатура XDTO расшифровывается как XML Data Transfer Objects. XDTO является механизмом объектного моделирования данных, описываемых с помощью схемы XML.

Основные возможности использования XDTO

  • описание типов параметров и возвращаемых значений Web-сервисов;
  • обмен данными между конфигурациями 1С:Предприятия 8 с существенно разными структурами данных;
  • обмен данными на основе схем XML, не привязанных к той или иной конфигурации (например, обмен с информационными системами, построенными не на основе 1С:Предприятия 8);
  • создание собственной системы типов и значений для обработки произвольных данных.

XDTO пакет

Механизм XDTO реализован с помощью набора объектов встроенного языка и объекта конфигурации XDTO пакет.


Возможно выполнение следующих действий:

  • создание XDTO пакета с помощью импорта схемы XML;
  • добавление нового XDTO пакета в дерево конфигурации и последующее его редактирование;
  • экспорт существующего XDTO пакета в схему XML.

Также система 1С:Предприятие 8 поддерживает возможность экспорта набора XML схем данных конфигурации.

Редактирование XDTO пакета осуществляется в специальном окне, отображающем иерархическую структуру XDTO пакета:


XDTO- сериализация

В системе 1С:Предприятие 8 реализована сериализация данных на основе механизма XDTO, которая позволяет сериализовать в/из XML:

  • все типы данных хранящиеся в базе данных
  • некоторые другие типы

XDTO-сериализация предназначена для сохранения данных объекта в файл XML и создания объекта на основе данных, хранящихся в файле XML:

при попытке добавить - пишет какую-то белиберду.
вопрос:
как прописать в пакете что обект является списокс хдто?

Добавлено через 50 секунд
прошу прощения, за пропуски букв это клава дефендер беспроводная буквы жует.
не берите клавы дефендер беспроводные.
очен неудобная.
и не поменять.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Описать функцию, которая будет проверять входит ли список l1 в список l2
Здравствуйте, нужно Описать функцию, которая будет проверять входит ли список l1 в список l2. Ни.


Описать функцию, которая формирует список Common, включив в него элементы, ко-торые входят одновременно в список М1 и М2
Описать функцию, которая формирует список Common, включив в него элементы, ко-торые входят.

Описать картотеку в бюро обмена квартир, которая организована как линейный список
Картотека в бюро обмена квартир организована как линейный список. Сведения о каждой квартире.

макс количество нужно минус 1 задавать.
вот как это узнать самому, это невозможно догадаться ))

1c 7.7 Xdto
Здравствуйте! Скажите пожалуйста возможно ли при помощи XDTO цеплять данные из 1С 7.7. Если.

Подскажите с Xdto
Здравствуйте! Прошу помочь знатоков с XDTO. Вопрос номер один- как выгрузить в XML и загрузить из.

Выгрузка посредством xdto
всем привет необходимо выгрузить всех контрагентов в xml. часть кода КонтрагентыТип=.

XDTO под Битрикс
Люди, у кого есть Битрикс и модуль обмена, помогите, пожалуйста. Как мне кажется, я нашел место.

xdto загрузка xml
Доброго времени суток! Столкнулся с проблемой загрузки xml-файла в 1С. Файл создается другой.


Работа с фабрикой XDTO
Добрый вечер. Необходимо выгрузить xml файл из конфигурации следующего вида: <?xml.

Читайте также: