Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
playground:playground [2016/10/26 10:48] alex [Запись объектов XDTO в файл] |
playground:playground [2016/11/18 18:03] (текущий) admin |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ===== Что это такое ===== | + | <pre class=" |
| - | XDTO - это аббревиатура, обозначающая обмен данными посредством XML (XML Data Transfer Objects). Аббревиатура придумана разработчиками 1с и вряд ли встретится где-то ещё. Но реализует она вполне стандартизированный механизм обмена информацией | + | Массив |
| + | НоваяСтрокаМассива = Новый Массив; | ||
| + | НоваяСтрокаМассива.Добавить(1); | ||
| + | НоваяСтрокаМассива.Добавить(2); | ||
| + | Массив.Добавить(НоваяСтрокаМассива); | ||
| + | НоваяСтрокаМассива = Новый Массив; | ||
| + | НоваяСтрокаМассива.Добавить(6); | ||
| + | НоваяСтрокаМассива.Добавить(7); | ||
| + | Массив.Добавить(НоваяСтрокаМассива); | ||
| + | </pre> | ||
| - | Суть этого механизма заключается в том, что создаётся специальный файл, называемый схемой. Этот файл описывает структуру XML-файла. Если XML-файл соответствует этой структуре, | ||
| - | Самым ярким | + | ====== XDTO-пакеты |
| - | С точки зрения | + | ===== Описание |
| - | ===== Получение типа объекта ===== | + | XDTO-пакеты предназначены для сохранения в конфигурации 1с схемы обмена данными между различными информационными системами по стандарту [[https:// |
| - | Это наиболее трудный для понимания этап т.к. он не соответствует | + | |
| - | Платформа позволяет использовать 2 вида схем - встроенные в конфигурацию [[1c:общие:пакетыXDTO|XDTO-пакеты]] | + | У каждого XDTO-пакета, подобно любому другому объекту |
| - | ==== Использование XDTO-пакетов ==== | ||
| - | [[1c: | ||
| - | <code 1c> | ||
| - | ТипОбъектаНоменклатура = ФабрикаXDTO.Тип(" | ||
| - | </ | ||
| - | Здесь [[1c: | ||
| - | <WRAP round tip> | + | ===== URI пространства имён |
| - | ==== Использование файлов с описанием схемы XML ==== | + | Имя пакета относится исключительно к самому объекту конфигурации и нигде не фигурирует |
| - | Такие | + | |
| - | <code 1c> | + | |
| - | МояФабрикаXDTO = СоздатьФабрикуXDTO(" | + | |
| - | ТипОбъектаНоменклатура = МояФабрикаXDTO.Тип(" | + | |
| - | </ | + | |
| - | Здесь мы использовали глобальную функцию [[1c: | + | |
| - | ===== Создание объекта XDTO ===== | + | В конфигурации |
| - | Сами объекты XDTO также создаются фабрикой объектов. Причём | + | |
| - | <code 1c> | + | |
| - | Номенклатура = МояФабрикаXDTO.Создать(ТипОбъектаНоменклатура); | + | |
| - | </ | + | |
| - | В результате | + | |
| - | ===== Запись объектов XDTO в файл ===== | + | Имена типов, описываемые в XDTO-пакетах, должны быть уникальными в пределах одного пространства имён. Контролируется это платформой только в пределах одного XDTO-пакета. В различных пакетах имена объектов могут повторяться, даже если |
| - | Использование фабрики объектов на этом не закончится. Ведь у переменной Номенклатура есть несколько реквизитов, | + | |
| - | <code 1c> | + | |
| - | Номенклатура.Наименование = " | + | |
| - | </ | + | |
| - | Более сложные типы требуют обращения к фабрике | + | |
| - | <code 1c> | + | |
| - | ТипОбъектаЕдиницаИзмерения = МояФабрикаXDTO.Тип(" | + | |
| - | ЕдиницаИзмерения = МояФабрикаXDTO.Создать(ТипОбъектаЕдиницаИзмерения); | + | |
| - | ЕдиницаИзмерения.ОКЕИ = 796; | + | |
| - | ЕдиницаИзмерения.Наименование = "шт"; | + | |
| - | Номенклатура.ЕдиницаИзмерения = ЕдиницаИзмерения; | + | |
| - | </ | + | |
| - | Стандарт позволяет создавать реквизиты-списки и реквизиты-структуры без создания отдельных типов. Заполнять такие реквизиты можно следующим образом: | + | |
| - | <code 1c> | + | |
| - | // Список элементов | + | |
| - | Штрихкоды = Номенклатура.ПолучитьСписок(" | + | |
| - | Штрихкоды.Добавить(" | + | |
| - | Штрихкоды.Добавить(" | + | |
| - | // Список элементов сложных типов, описанных в схеме | + | URI пространства имён |
| - | ПрочиеЕдиницыИзмерения = Номенклатура.ПолучитьСписок(" | + | |
| - | ЕдиницаИзмерения = МояФабрикаXDTO.Создать(ТипОбъектаЕдиницаИзмерения); | + | |
| - | ЕдиницаИзмерения.ОКЕИ = 166; | + | |
| - | ЕдиницаИзмерения.Наименование = "кг"; | + | |
| - | ПрочиеЕдиницыИзмерения.Добавить(ЕдиницаИзмерения); | + | |
| - | </ | + | |
| - | Получение типа элементов-структур немного напоминает | + | ===== Конструктор XDTO-пакетов ===== |
| - | <code 1c> | + | Для |
| - | // Список элементов-структур | + | |
| - | Характеристики = Номенклатура.ПолучитьСписок("Характеристики" | + | {{http:// |
| - | ТипЭлементаХарактеристика = Номенклатура.Свойства().Получить(" | + | |
| - | Характеристика = МояФабрикаXDTO.Создать(ТипЭлементаХарактеристика); | + | С его |
| - | Характеристика.Код = 1; | + | |
| - | Характеристика.Наименование | + | |
| - | Характеристики.Добавить(Характеристика); | + | |
| - | // Реквизиты-структуры | ||
| - | </ | ||