Создание пакета XDTO 1С из XML-схемы (XSD). Используй когда нужно добавить в конфигурацию пакет XDTO - под обмен, интеграцию, веб-сервис или внешний XML-формат
Scanned 9/2/2026
Install to Claude Code
npx -y skills add Desko77/claude-code-skills-1c --skill 1c-xdto-compile --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of 1c Xdto Compile?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/desko77-1c-xdto-compile)More formats (shields.io, HTML) on the badges page.
---
name: 1c-xdto-compile
description: Создание пакета XDTO 1С из XML-схемы (XSD). Используй когда нужно добавить в конфигурацию пакет XDTO - под обмен, интеграцию, веб-сервис или внешний XML-формат
argument-hint: -XsdPath <файл.xsd>|-Xsd <схема> -OutputDir <каталог-исходников> [-Name <имя>] [-Synonym <синоним>] [-Comment <текст>] [-Force]
allowed-tools:
- Bash
- Read
- Glob
---
# /xdto-compile - Создание пакета XDTO из XML-схемы
Собирает пакет XDTO по XML-схеме: `XDTOPackages/<Имя>.xml`,
`XDTOPackages/<Имя>/Ext/Package.bin` и регистрацию в `Configuration.xml`.
Вход - обычная XML-схема, писать ее нужно так же, как для любого другого инструмента.
## Параметры
| Параметр | Обязательный | Описание |
|----------|--------------|----------|
| `XsdPath` | один из двух | Путь к файлу XML-схемы. Псевдоним - `-Path` |
| `Xsd` | один из двух | Схема строкой, вместо `-XsdPath` |
| `OutputDir` | да | Каталог исходников конфигурации или расширения - там, где лежит `Configuration.xml` |
| `Name` | нет | Имя объекта метаданных. По умолчанию - из `xs:appinfo`, иначе имя файла XSD, санированное под идентификатор 1С |
| `Synonym` | нет | Синоним (строка). По умолчанию - из `xs:appinfo`, иначе имя пакета. Для нескольких языков задавай синоним в схеме, блоком `xs:appinfo` |
| `Comment` | нет | Комментарий. По умолчанию - из `xs:appinfo` |
| `Force` | нет | Перезаписать существующий пакет. Без него навык откажется затирать уже собранный пакет |
```powershell
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/xdto-compile.ps1" -XsdPath "<схема.xsd>" -OutputDir "<каталог-исходников>"
```
Примеры:
```powershell
... -XsdPath bank.xsd -OutputDir src -Name ОбменСБанком -Synonym "Обмен с банком"
... -XsdPath fss.xsd -OutputDir src -Force
```
## Читай предупреждения
XSD выразительнее модели XDTO. Все, что не переносится один в один, навык переносит
приближенно и **пишет об этом**:
```
Предупреждения (2) - конструкции XSD без точного соответствия в модели XDTO:
! Документ : вложенная xs:choice уплощена в последовательность - выбор одного из вариантов не сохранен
! Документ : кратность на вложенной частице (<xs:sequence minOccurs/maxOccurs>) не выражается в модели XDTO
```
Такое сообщение означает, что пакет собран, но схема упрощена. Если упрощение
недопустимо - меняй схему (например, разноси варианты `xs:choice` по разным типам),
а не игнорируй.
Что переносится приближенно: вложенные `xs:sequence`/`xs:choice` (уплощаются в плоский
список свойств), `xs:all` (становится последовательностью), кратность на частице,
`substitutionGroup`, `xs:key`/`keyref`/`unique`, `xs:redefine`.
`xs:group` и `xs:attributeGroup` раскрываются по ссылке - их содержимое попадает в тип.
`xs:include` игнорируется: зависимости в XDTO разрешаются только по namespace,
поэтому включаемую схему нужно собрать отдельным пакетом и заменить `include` на `import`.
## Посмотреть, что получилось
Модель пакета лежит в `Ext/Package.bin`. Несмотря на расширение, это текстовый XML,
но читать его напрямую обычно незачем: состав собранного пакета показывает
`/xdto-info`, а полную схему - `/xdto-decompile`.
## Зависимости между пакетами
`<xs:import namespace="..."/>` разрешается по namespace среди пакетов конфигурации
или расширения. Если пакета с таким пространством имен нет, платформа при загрузке
молча подменит тип на `xs:anyType` - без ошибки. Собирай сначала зависимости, потом
зависящий пакет, и проверяй результат через `/xdto-validate`.
Какие пакеты уже собраны, видно в `ChildObjects` файла `Configuration.xml`.
## Что XSD выразить не может
Две вещи модель XDTO умеет, а XML Schema - нет: `nillable` у атрибута и `qualified`
у отдельного свойства. Они пишутся атрибутами из пространства имен модели:
```xml
<xs:attribute name="Представление" type="xs:string"
xmlns:xdto="http://v8.1c.ru/8.1/xdto" xdto:nillable="true"/>
```
Схема остается валидной - валидаторы такие атрибуты игнорируют. Полный список
и таблица соответствий XSD ↔ XDTO - в [xsd-reference.md](xsd-reference.md).
Свойства объекта метаданных можно задать прямо в схеме:
```xml
<xs:annotation>
<xs:appinfo>
<xdto:package xmlns:xdto="http://v8.1c.ru/8.1/xdto">
<xdto:name>ОбменСБанком</xdto:name>
<xdto:synonym lang="ru">Обмен с банком</xdto:synonym>
</xdto:package>
</xs:appinfo>
</xs:annotation>
```
## Типичный workflow
1. Получить XSD от контрагента (или выгрузить схему существующего пакета: `/xdto-decompile`)
2. `/xdto-compile -XsdPath <файл> -OutputDir <каталог-исходников>` - прочитать предупреждения
3. `/xdto-validate <каталог-исходников>/XDTOPackages/<Имя>` - убедиться, что типы разрешились
4. `/db-load-xml` + `/db-update`
Правка существующего пакета: точечно - `/xdto-edit`; переработать схему целиком -
`/xdto-decompile` → правка XSD → `/xdto-compile -Force`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!