8. Механизмы интеграции и обмена данными
#39

Готовишься к экзамену?

Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.

Перейти в бота

Вы создаёте XDTO-пакет в 1С и НЕ добавляете в него директивы импорта. Какие типы вы можете использовать при описании своих типов и свойств внутри этого пакета?

Типы, объявленные в этом пакете, плюс стандартные типы XML Schema (например, строка/дата/число), плюс типы, получаемые из метаданных конфигурации.
Неправильно: Стандартные XML-типы действительно можно использовать, но «типы из метаданных» относятся к другому пространству имён (другому пакету типов платформы). Чтобы ссылаться на такие типы, обычно требуется явно подключить соответствующий пакет через директиву импорта.
Типы, объявленные в этом пакете, и стандартные типы XML Schema (например, xs:string, xs:dateTime, xs:decimal).
Правильно: Без директив импорта вы ограничены типами своего пакета (текущее пространство имён) и встроенными «базовыми» типами XML Schema из стандартного пространства имён. Типы из других XDTO-пакетов (включая пакеты платформы и пакет метаданных текущей конфигурации) требуют импорта.
Только типы, которые вы определили в этом XDTO-пакете.
Неправильно: Даже без импорта пакет обычно опирается на стандартные простые типы XML Schema, потому что именно от них наследуются/ограничиваются собственные типы значений (строки, числа, даты и т.п.). Полностью «без XML-типов» описывать большинство значений на практике нельзя и это не соответствует правилам работы XDTO.

Пояснение

XDTO-пакет - это набор описаний типов, принадлежащих одному пространству имён (URI пакета). По умолчанию, пока вы не подключили зависимости через «директивы импорта», вы можете ссылаться только на: 1) типы, описанные внутри текущего пакета (то есть в его пространстве имён); 2) стандартные типы XML Schema из пространства имён XML (например, строка, дата-время, число), которые используются как базовые типы для «типов значений». Если вам нужно использовать тип из другого пространства имён (например, тип из другого XDTO-пакета или тип, соответствующий метаданным текущей конфигурации), его нельзя просто выбрать «как есть» - нужно добавить директиву импорта, чтобы пакет явно заявил зависимость. Практический пример: вы делаете XDTO для обмена заказами и задаёте реквизит Номер как строку - используете стандартный xs:string без импорта. Но если вы хотите сослаться на типы, описывающие объекты конфигурации (например, ссылочные/объектные представления метаданных), такие типы относятся к отдельному пакету платформы и потребуют импорта. Полезные правила на практике: держите пакет «самодостаточным» (локальные типы + XML Schema) и подключайте другие пакеты только когда действительно нужно; следите, чтобы не возникало циклических зависимостей между пакетами (взаимный импорт), иначе модель типов не пройдёт проверку.