Skip to main content
skill CX Codex

xdto-compile — Claude Code skill: what it does, how to install

Builds a 1C XDTO package from an XSD and writes it into configuration sources. Use it for data exchange, integrations, or web services.

Install into Claude Code · Plugin marketplace All methods and platforms ↓
/plugin marketplace add Nikolay-Shirokov/cc-1c-skills
/plugin install 1c-skills@cc-1c-skills
Open on GitHub

What xdto-compile does

The skill reads an XML Schema from -XsdPath or from the -Xsd argument. It creates XDTOPackages/<Name>.xml, Ext/Package.bin, and the matching entry in Configuration.xml. Package metadata can come from xs:appinfo or from -Name, -Synonym, and -Comment; -Force permits replacing an existing package.

A PowerShell script performs the build. Afterward, /xdto-info shows the package contents, /xdto-decompile exposes the full schema, and /xdto-validate checks type resolution. The skill reports cases where XSD structures cannot map exactly, such as nested xs:choice or particle cardinality.

The build skips xs:include, so that schema must become a separate package and use import instead. Imported namespaces must resolve to packages already present in the configuration or extension; otherwise the platform can silently replace the type with xs:anyType.

What it helps with

  • build a 1C XDTO package from an XSD file
  • register the package in Configuration.xml
  • set package metadata through xs:appinfo
  • validate types across imported packages
  • rebuild an edited schema with -Force

Example prompts for the agent

  • Build an XDTO package from bank.xsd into the src configuration sources.
  • Run /xdto-compile -XsdPath <file> -OutputDir <source-directory> and review the warnings.
  • Rebuild the package from fss.xsd in src, allowing the existing output to be replaced with -Force.

How to install xdto-compile

1Plugin marketplace

/plugin marketplace add Nikolay-Shirokov/cc-1c-skills
/plugin install 1c-skills@cc-1c-skills

This installs the whole 1c-skills plugin with all its skills

2Skills CLI (Vercel)

npx skills add Nikolay-Shirokov/cc-1c-skills --skill xdto-compile -a claude-code

3Manually: put the files in place

~/.claude/skills/xdto-compile/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/xdto-compile/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about xdto-compile

How do I install xdto-compile in Claude Code?

Add the marketplace with /plugin marketplace add Nikolay-Shirokov/cc-1c-skills, then install it with /plugin install 1c-skills@cc-1c-skills.

What does xdto-compile do?

It turns an XML Schema into a 1C XDTO package and updates the configuration sources. It also reports schema constructs that were converted approximately.

How are xs:include and xs:import handled?

xs:include is skipped, so its schema must be built as a separate package and changed to import. Imports resolve by namespace among packages in the configuration or extension.

Source text

SKILL.md · MIT
---
name: 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`.

© Nikolay Shirokov · MIT · Nikolay-Shirokov/cc-1c-skills

Similar skills

SKILL.md skills catalog →

From the same set32

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor