Поиск по блогу

среда, 29 апреля 2015 г.

Что таит в себе окно редактирования XDTO-пакета

Грабли метода ПрочитатьXML() объекта ФабрикаXDTO

Термин XDTO (XML Data Transfer Objects) - это не какой-то всемирно принятый стандарт, поддерживаемый платформой 1С, а наоборот, стандарт рожденный в недрах фирмы 1С, хотя очень похож на XML Schema, на недоделанный XML Schema.

При добавлении пакета XDTO в дерево конфигурации окно редактирования пакета открывается автоматически.
1. Окно редактирования XDTO-пакета
Для того, чтобы открыть окно редактирования пакета XDTO, следует выбрать нужный пакет и выполнить команду "Открыть пакет".
2. Контекстное меню XDTO-пакета

Окно редактирования пакета XDTO содержит иерархическую структуру, которая отображается в виде дерева. В корневом элементе расположен идентификатор пакета XDTO, который содержит URI пространства имен данного пакета.

На первом уровне иерархии могут располагаться следующие элементы пакета (см. рисунок 1):
  • Директивы импорта - перечень директив импорта, предназначены для импорта типов из внешнего именного пространства. При работе с данным пакетом XDTO средствами встроенного языка данный перечень директив импорта будет доступен в виде объекта КоллекцияПакетовXDTO, содержащегося в свойстве Зависимости пакета XDTO.
  • Типы значений - перечень типов значений XDTO, которые содержит пакет XDTO, предназначены для создания нового типа, используя существующие простые типы.
  • Типы объектов - перечень типов объектов XDTO, которые содержит пакет XDTO
  • Свойства - перечень свойств пакета XDTO. Представляет собой объявления объектов/значений, которые могут являться корневыми элементами документов XML, принадлежащих URI пространству имен пакета XDTO.
Каждый тип значения XDTO описывается иерархической структурой и может содержать в своем составе следующие элементы:
  • Образец - описывает один фасет XDTO типа Образец;
  • Перечисление - описывает один фасет XDTO типа Перечисление.
Каждый тип объекта XDTO описывается иерархической структурой, которая может содержать в своем составе набор свойств объекта (комплексный тип).

Свойства пакета XDTO


Редактирование свойств пакета XDTO выполняется в палитре свойств. Кроме основных свойств (показываются, если окно редактирования закрыто) требуется указать пространство имен импортируемого пакета.
3. Свойства XDTO-пакета

Свойства типа значения XDTO


Редактирование свойств типа значения  XDTO выполняется в палитре свойств. Для типа значения XDTO палитра свойств содержит следующие свойства:
  • Имя - имя типа значения XDTO;
  • Базовый тип - базовый тип для данного типа значения XDTO;
  • Вариант - вариант простого типа (атомарный тип, список, объединение). Если значение установлено, то оно должно противоречить значениям Тип элемента и Типы объединения.
  • Тип элемента - тип элемента списка в случае, когда тип значения XDTO определяется списком. При этом все фасеты и свойство Типы подчиненных должны быть пустыми;
  • Типы объединения - список типов, образующих объединение в случае, когда тип значения XDTO определяется объединением. Объединяться могут только типы значений XDTO. При этом все фасеты и свойство Тип Элемента должны быть пустыми;
  • Длина - фасет длины;
  • Минимальная длина - фасет минимальной длины;
  • Максимальная длина - фасет максимальной длины;
  • Пробельные символы - фасет пробельных символов;
  • Минимум, включающий границу - фасет минимума, включающего границу;
  • Минимум, не включающий границу - фасет минимума, не включающего границу;
  • Максимум, включающий границу - фасет максимума, включающего границу;
  • Максимум, не включающий границу - фасет максимума, не включающего границу;
  • Общее количество цифр - фасет общего количества цифр;
  • Количество цифр дробной части - фасет количества цифр дробной части.
4. Свойства типа значения XDTO

Свойства типа объекта XDTO


Редактирование свойств типа объекта XDTO выполняется в палитре свойств. Для типа объекта XDTO палитра свойств содержит следующие свойства:
  • Имя - имя типа объекта XDTO;
  • Базовый тип - базовый тип для данного типа объекта XDTO, указывает на то, что новый тип создается путем расширения базового типа;
  • Открытый - признак, является ли тип объекта XDTO открытым. Данное свойство показывает, может ли экземпляр объекта XDTO содержать свойства, не определенные в его типе;
  • Абстрактный - признак, является ли тип объекта XDTO абстрактным;
  • Смешанный - показывает, имеет ли соответствующий объект XDTO смешанное содержание. Если значение свойства Истина, то значение Последовательный обязательно равно Истина, так как смешанное содержание невозможно смоделировать без применения последовательности XDTO;
  • Упорядоченный - признак, является ли порядок следования элементов, представляющих значения свойств, строго соответствующим порядку следования свойств в типе объекта XDTO. Если Ложь, то на входе порядок следования элементов XML не контролируется, а на выходе определяется порядком следования свойств, если только свойство Последовательный не имеет значение Истина;
  • Последовательный - показывает, содержит ли экземпляр соответствующего объекта XDTO последовательность XDTO. Истина в тех случаях, когда порядок следования вложенных элементов XML не может однозначно определяться порядком следования свойств в типе или соответствующий объект XDTO имеет смешанное содержание. Последовательность XDTO позволяет задать в явном виде порядок следования элементов, как они будут представлены в документе XML. Для объектов типов, у которых свойство Ложь, порядок вложенных элементов соответствует порядку следования свойств.
5. Свойства типа объекта XDTO

Свойства свойств типа объекта XDTO


Редактирование свойства свойств типа объекта XDTO выполняется в палитре свойств. Для свойства свойств типа объекта XDTO палитра свойств содержит следующие свойства:
  • Имя - имя свойства. В пределах одного типа объекта XDTO имена свойств должны быть уникальными;
  • Тип - тип свойства. Может быть как типом значения XDTO, так и типом объекта XDTO;
  • Минимальное количество - минимальное количество значений свойства. Минимальное количество значений свойства может принимать значения больше или равное 0; Свойство типа объекта XDTO может быть определено как содержащее одно или множество значений. Свойство считается содержащим одно значение, если данное свойство равно 1. Для значений свойства больше 1 считается, что свойство может принимать множество значений. Такое свойство в структуре объекта моделируется списком.
  • Максимальное количество - показывает максимальное количество значений свойства. Максимальное количество больше 1 может быть задано только для свойств, представленных в виде элемента XML;
  • Возможно пустое - показывает, может ли свойство принимать неопределенное значение. Истина может быть определено только для свойств с формой представления Элемент. Если Максимальное количество больше 1, неопределенное значение является допустимым для элемента списка значений свойства;
  • Фиксированное - указывает, является ли значение свойства фиксированным. Истина - само фиксированное значение можно получить через свойство По умолчанию;
  • По умолчанию -  значение свойства по умолчанию. Тип значения по умолчанию может быть только типом значения XDTO. При этом, данное значение должно быть совместимо с типом свойства (быть того же типа, что и тип свойства или же унаследованного типа). При создании объекта XDTO свойство, если оно допускает единственное значение, принимает значение по умолчанию. Для свойств с множеством значений список значения пуст, независимо от того, определено или нет значение по умолчанию;
  • Форма - форма представления свойства в XML. Это может быть Текст, Элемент или Атрибут. Если формой представления является Атрибут или Текст, то значение свойства Максимальное количество не может быть больше 1. Если свойство принимает значение Текст, то значение свойства Максимальное количество также должно быть равным 1. У одного типа только одно свойство может иметь форму представления Текст, при этом все остальные свойства должны иметь форму представления Атрибут;
  • Локальное имя - локальное имя, используемое для представления свойства. Для свойств с формой представления Текст - пустая строка.
6. Свойства свойств типа объекта XDTO

Глобальное свойство


Редактирование свойств глобального свойства выполняется в палитре свойств. Для глобального свойства палитра свойств содержит следующие свойства:
  • Имя - имя глобального свойства. В пределах одного типа объекта XDTO имена глобальных свойств должны быть уникальными;
  • Ссылка - ссылка на корневое определение свойств пакета;
  • Тип - тип глобального свойства;
  • Минимальное количество - минимальное количество значений свойства. Если данное свойство = 0, то значение свойства может быть не установлено;
  • Максимальное количество - максимальное количество значений свойства. Если = -1, то количество значений свойства неограниченно;
  • Возможно пустое - показывает, может ли свойство принимать неопределенное значение;
  • Фиксированное - указывает, является ли значение свойства фиксированным;
  • По умолчанию -  значение свойства по умолчанию. Лексическое представление значения свойства должно соответствовать правилам проверки типа данного свойства;
  • Форма - форма представления свойства в XML. Это может быть Текст, Элемент или Атрибут;
  • Локальное имя - локальное имя, используемое для представления свойства.

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

Copyright © ООО "1С"

4 комментария:

  1. Добрый день! А как прочитать с помощью XDTO файл, где в узле присутствует и атрибут, и текстовое значение? Например, строка 70. У меня читался атрибут (kg), но не значение..

    ОтветитьУдалить
    Ответы
    1. Не понимаю что там у вас за строка 70. Пользуюсь всегда методом Прочитать() объекта ФабрикаXDTO, проблем еще не возникало.

      Удалить
  2. Нужно при описании типа в XDTO-пакете определить два свойства, одно с именем атрибута, у него в свойстве "Форма" указать "атрибут", туда будет читаться значение атрибута. Второй с произвольным именем, в свойстве "Форма" указать "Текст". Туда будет читаться само значение.

    ОтветитьУдалить
  3. Не очень понятно что такое "последовательный"

    ОтветитьУдалить