Четырём субагентам выданы реалистичные задачи по песочнице, навыки в формулировках не назывались. Разбор — в debug/xdto/FINDINGS.md, §13. ГЛАВНОЕ — дефект компилятора. При уплощении вложенного xs:choice ветки оставались обязательными: схема «самовывоз ИЛИ адрес доставки» давала пакет, требующий заполнить оба, и ни один реальный документ в него не ложился. Компилятор предупреждал о потере выбора, но молчал о последствии, а валидатор показывал «0 ошибок, 0 предупреждений» — структурно пакет корректен, семантически мёртв. Теперь ветки становятся необязательными (единственное уплощение, оставляющее тип заполнимым), предупреждение называет их поимённо. Корневой xs:choice не затронут: он отображается в ordered="false". xdto-edit: -Value "@файл" по конвенции skd-edit — на кавычках при инлайновой передаче XSD споткнулись двое агентов из четырёх, причём сырой LoadXml уводил чинить схему вместо транспорта. При сбое разбора теперь понятное сообщение. xdto-info: поиск, законно ничего не нашедший, падал throw'ом со стектрейсом и читался как поломка инструмента — теперь строка и exit 1. Блок «Создание» покрывал только корневой тип, хотя вся реальная работа в XDTO — вложенные и анонимные типы; добавлены рецепты по факту наличия. Отсутствие раздела «Точки входа» было неоднозначным — теперь явная строка. Новый -RequiredOnly даёт скелет «заполни обязательное»: необязательный объект уходит вместе с поддеревом. По умолчанию выключен — иначе список читался бы как полный. xdto-validate: предупреждение про anyType описывало историю («платформа заменяет при импорте»), хотя в файле уже зафиксирован anyType; сначала состояние, потом происхождение. Проверено: 40 тестов на обоих рантаймах, round-trip 760/760, валидатор 0 ложных срабатываний на корпусе. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
5.5 KiB
name, description, argument-hint, allowed-tools
| name | description | argument-hint | allowed-tools | |||
|---|---|---|---|---|---|---|
| xdto-info | Анализ структуры пакета XDTO 1С — типы, свойства, точки входа. Используй как подготовительный шаг при написании кода, создающего и заполняющего объект XDTO, при разборе входящего XML, а также чтобы узнать, какие пакеты есть в конфигурации | <PackagePath> [-Namespace <URI>|-Package <имя>] [-Name <Тип>] [-Depth N] [-RequiredOnly] [-Mode used-by] [-Limit N] [-Offset N] [-OutFile <файл>] |
|
/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.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/xdto-info.ps1" -PackagePath "<путь>"
Что показывает
Точка входа определяется по пути: корень исходников — список пакетов, каталог пакета — его состав.
| Вызов | Результат |
|---|---|
-PackagePath src |
все пакеты конфигурации: имя, число типов, namespace |
-PackagePath src/XDTOPackages/ОбменСБанком |
импорты, точки входа, списки типов |
... -Name ПлатежныйДокумент |
структура типа для заполнения |
... -Name ПлатежныйДокумент -Depth 3 |
то же с раскрытием вложенных объектов |
... -Mode used-by -Name СуммаТип |
кто ссылается на тип, включая соседние пакеты |
Когда известны namespace и тип, но не имя пакета
Так бывает чаще всего: namespace и имя типа видны в коде или в образце XML, а как называется пакет — нет. Вызов повторяет строку, от которой отталкиваешься:
# ФабрикаXDTO.Тип("urn:1C.ru:ClientBankExchange", "ПлатежныйДокумент")
... -PackagePath src -Namespace "urn:1C.ru:ClientBankExchange" -Name ПлатежныйДокумент
Если известно только имя типа — укажи -Name и корень исходников: тип найдётся
по всем пакетам. При нескольких совпадениях навык покажет, где именно, чтобы уточнить.
Что в выводе
Свойства показаны так, как их предстоит заполнять в коде: тип значения — в нотации
1С и с учётом ограничений (Строка(6), Число(18,2)), обязательность и коллекции —
флагами, для перечислимых типов перечислены допустимые значения. Непомеченное
свойство необязательно.
Обозначения, которые сами по себе неочевидны, навык поясняет прямо в выводе — и только те, что в нём встретились.
Типичный workflow
/xdto-info src— какие пакеты есть/xdto-info src -Namespace "<URI>"— точки входа и типы пакета/xdto-info src -Namespace "<URI>" -Name <Тип> -Depth 2— структура для кода- Перед правкой типа:
-Mode used-by -Name <Тип>— кого затронет
Нужна сама XML-схема, а не сводка, — это /xdto-decompile.