--- name: xdto-info description: Анализ структуры пакета XDTO 1С — типы, свойства, точки входа. Используй как подготовительный шаг при написании кода, создающего и заполняющего объект XDTO, при разборе входящего XML, а также чтобы узнать, какие пакеты есть в конфигурации argument-hint: [-Namespace |-Package <имя>] [-Name <Тип>] [-Depth N] [-RequiredOnly] [-Mode used-by] [-Limit N] [-Offset N] [-OutFile <файл>] allowed-tools: - Bash - Read - Glob --- # /xdto-info — Анализ структуры пакета XDTO Показывает структуру типа в терминах 1С: какой тип значения присваивать, что обязательно, где нужен вложенный объект, какие значения допустимы. Заменяет чтение `Package.bin` или XSD с ручным переводом `xs:decimal` → `Число` и `lowerBound="0"` → необязательный. ## Параметры | Параметр | Обязательный | Описание | |----------|--------------|----------| | `PackagePath` | да | Каталог пакета либо корень исходников конфигурации. Псевдоним — `-Path` | | `Namespace` | нет | Выбрать пакет по пространству имён (когда путь — корень исходников) | | `Package` | нет | Выбрать пакет по имени объекта метаданных | | `Name` | нет | Имя типа. Без выбранного пакета ищется по всей конфигурации | | `Depth` | нет | Глубина разузлования вложенных объектов. По умолчанию 1 | | `RequiredOnly` | нет | Оставить только обязательные свойства — скелет для «заполни обязательное». Необязательный объект уходит вместе со своим содержимым | | `Mode` | нет | `used-by` — показать, кто ссылается на тип | | `Limit` / `Offset` | нет | Пагинация. По умолчанию 150 строк | | `OutFile` | нет | Записать результат в файл (UTF-8 BOM) | ```powershell python ".opencode/skills/xdto-info/scripts/xdto-info.py" -PackagePath "<путь>" ``` ## Что показывает Точка входа определяется по пути: корень исходников — список пакетов, каталог пакета — его состав. | Вызов | Результат | |---|---| | `-PackagePath src` | все пакеты конфигурации: имя, число типов, namespace | | `-PackagePath src/XDTOPackages/ОбменСБанком` | импорты, точки входа, списки типов | | `... -Name ПлатежныйДокумент` | структура типа для заполнения | | `... -Name ПлатежныйДокумент -Depth 3` | то же с раскрытием вложенных объектов | | `... -Mode used-by -Name СуммаТип` | кто ссылается на тип, включая соседние пакеты | ## Когда известны namespace и тип, но не имя пакета Так бывает чаще всего: namespace и имя типа видны в коде или в образце XML, а как называется пакет — нет. Вызов повторяет строку, от которой отталкиваешься: ```powershell # ФабрикаXDTO.Тип("urn:1C.ru:ClientBankExchange", "ПлатежныйДокумент") ... -PackagePath src -Namespace "urn:1C.ru:ClientBankExchange" -Name ПлатежныйДокумент ``` Если известно только имя типа — укажи `-Name` и корень исходников: тип найдётся по всем пакетам. При нескольких совпадениях навык покажет, где именно, чтобы уточнить. ## Что в выводе Свойства показаны так, как их предстоит заполнять в коде: тип значения — в нотации 1С и с учётом ограничений (`Строка(6)`, `Число(18,2)`), обязательность и коллекции — флагами, для перечислимых типов перечислены допустимые значения. Непомеченное свойство необязательно. Обозначения, которые сами по себе неочевидны, навык поясняет прямо в выводе — и только те, что в нём встретились. ## Типичный workflow 1. `/xdto-info src` — какие пакеты есть 2. `/xdto-info src -Namespace ""` — точки входа и типы пакета 3. `/xdto-info src -Namespace "" -Name <Тип> -Depth 2` — структура для кода 4. Перед правкой типа: `-Mode used-by -Name <Тип>` — кого затронет Нужна сама XML-схема, а не сводка, — это `/xdto-decompile`.