mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-27 23:21:02 +03:00
Три навыка для работы с пакетами XDTO. Формат описания — обычная XSD, своего DSL нет: рутину снимает конвертер (локальные объявления префиксов dNpM на каждой ссылке, инвертированная кратность lowerBound/upperBound, фасеты атрибутами вместо дочерних элементов, обязательный порядок элементов верхнего уровня). То, чего XSD выразить не может — nillable у атрибута, qualified у свойства, «атрибут записан явно» — едет атрибутами из пространства имён модели XDTO по правилу «то же имя, что в Package.bin». Свойства объекта метаданных живут в xs:appinfo, поэтому пара decompile → compile замыкается без потерь. Инвариант bin → xsd → bin проверен побайтово на 760 пакетах выгрузок Бухгалтерии и ERP 8.3.24 (харнесс debug/xdto/roundtrip-corpus.mjs). Сборка из рукописной XSD проверена загрузкой в базу 8.3.24 — именно она вскрыла обязательный порядок import→property→valueType→objectType, невидимый для корпусной сверки: все выгрузки уже канонические. xdto-validate ловит два класса тихих дефектов, которые платформа не диагностирует: подмену неразрешённого чужого типа на xs:anyType при импорте XML-схемы и nillable у свойства-атрибута, теряемый экспортом схемы в Конфигураторе. Тесты: 18 снэпшот-кейсов на синтетических схемах (типовые конфигурации в репозиторий не тащим), паритет PS↔PY на общих эталонах. Раннер получил caseFiles — копирование файлов кейса в workDir для навыков с файловым, а не JSON входом. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
29 lines
1.3 KiB
XML
29 lines
1.3 KiB
XML
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||
xmlns:xdto="http://v8.1c.ru/8.1/xdto"
|
||
xmlns:tns="urn:test:annotations"
|
||
targetNamespace="urn:test:annotations">
|
||
<xs:annotation>
|
||
<xs:appinfo>
|
||
<xdto:package>
|
||
<xdto:name>ПакетСАннотациями</xdto:name>
|
||
<xdto:synonym lang="ru">Пакет с аннотациями</xdto:synonym>
|
||
<xdto:synonym lang="en">Annotated package</xdto:synonym>
|
||
<xdto:comment>Проверка xs:appinfo</xdto:comment>
|
||
</xdto:package>
|
||
</xs:appinfo>
|
||
</xs:annotation>
|
||
<xs:complexType name="Контакт" xdto:sequenced="true">
|
||
<xs:sequence>
|
||
<xs:element name="Комментарий" type="xs:string" minOccurs="0" xdto:form="Element"/>
|
||
<xs:element name="Имя с пробелом" type="xs:string" xdto:name="Имя_с_пробелом" minOccurs="0"/>
|
||
</xs:sequence>
|
||
<xs:attribute name="Представление" type="xs:string" xdto:nillable="true" xdto:lowerBound="0"/>
|
||
</xs:complexType>
|
||
<xs:complexType name="ЯвныйПорядок" xdto:order="Элемент|Атрибут">
|
||
<xs:sequence>
|
||
<xs:element name="Элемент" type="xs:string"/>
|
||
</xs:sequence>
|
||
<xs:attribute name="Атрибут" type="xs:string"/>
|
||
</xs:complexType>
|
||
</xs:schema>
|