About xdto-edit
A skill for making targeted edits to 1C XDTO packages without reading and rewriting the entire schema. It is suited to individual changes in large packages, and runs validation automatically after edits unless disabled.
Key features
- 01Add, replace, or remove properties and types
- 02Edit enums, imports, and object metadata
- 03Address items by type and property path
- 04Support batches and file-based input
- 05Validate automatically after edits
Use cases
- 01Change one property in a large XDTO package
- 02Update a package name or namespace
- 03Remove multiple types or add enum values
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ nikolay-shirokov/ cc-1c-skills --skill xdto-editAfter installing, type/xdto-editin Claude Code to confirm it loaded.
Bundled filesscripts/xdto-edit.ps1scripts/xdto-edit.py
Details
From the project README/xdto-edit — Точечное редактирование пакета XDTO
Меняет один элемент пакета, не требуя читать и переписывать всю схему — для больших
пакетов (EnterpriseData — около мегабайта) это единственный практичный путь.
Если нужно переработать схему целиком или сперва разобраться, как она устроена, —
/xdto-decompile → правка XSD → /xdto-compile -Force.
Параметры
| Параметр | Обязательный | Описание |
|---|---|---|
PackagePath | да | Каталог пакета, Ext/Package.bin или <Имя>.xml. Псевдоним — -Path |
Operation | да | Операция из таблицы ниже |
Target | зависит | Адрес: имя типа или путь Тип.Свойство |
Value | зависит | Фрагмент XSD, литерал, URI или текст. @путь — взять содержимое из файла |
NoValidate | нет | Не запускать xdto-validate после правки |
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/xdto-edit.ps1" -PackagePath "<путь>" -Operation <op> -Target "<адрес>" -Value "<значение>"
Операции
| Операция | -Target | -Value |
|---|---|---|
add-property | имя типа | <xs:element> или <xs:attribute> |
replace-property | Тип.Свойство | новое объявление целиком |
remove-property | Тип.Свойство | — |
add-type | — | <xs:complexType> или <xs:simpleType> |
remove-type | имя типа | — |
add-enum | имя типа значения | литерал |
add-import | — | URI пространства имён |
rename | — | новое имя объекта метаданных |
set-synonym | — | синоним |
set-comment | — | комментарий |
set-namespace | — | новый URI пространства имён |
Батч через ;; там, где перечисление осмысленно: remove-property, remove-type,
add-enum, add-import.
... -Operation add-property -Target "Платёж" -Value '<xs:element name="Комментарий" type="xs:string" minOccurs="0"/>'
... -Operation remove-property -Target "Платёж.Комментарий ;; Платёж.Черновик"
... -Operation add-enum -Target "ВидДокумента" -Value "Инкассо ;; Аккредитив"
... -Operation rename -Value ОбменСБанком
Содержимое всегда описывается фрагментом XML-схемы — тем же языком, что и в
/xdto-compile. Отдельных параметров вида -MinOccurs нет: чтобы поменять свойство,
дай его новое объявление целиком через replace-property.
Ограничение длины и прочие фасеты задаются вложенным типом:
<xs:element name="Комментарий" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string"><xs:maxLength value="200"/></xs:restriction>
</xs:simpleType>
</xs:element>
Многострочный фрагмент передавай файлом: -Value "@frag.xsd". Инлайн через оболочку
надёжен только для однострочных фрагментов без вложенных кавычек.
Адресация
Путь Тип.Свойство. Точка безопасна: имена типов и свойств — идентификаторы 1С.
Путь продолжается внутрь встроенных типов: ПлатежныйДокумент.ДатаСписано.ИдПлатежа.
Посмотреть, что есть в пакете и как называется нужный тип, — /xdto-info.
Перед правкой типа полезно /xdto-info -Mode used-by -Name <Тип>: покажет,
кого затронет изменение.
Что тянет за собой переименование и смена namespace
rename меняет имя в объекте метаданных, переименовывает файл <Имя>.xml и каталог
<Имя>/, правит регистрацию в Configuration.xml. Новое имя проверяется на
допустимость как идентификатор 1С и на занятость.
set-namespace меняет targetNamespace, все внутренние ссылки на собственные типы
и <Namespace> объекта метаданных. Пакеты, импортирующие старое пространство имён,
не изменяются — при версионировании они и должны продолжать смотреть на прежнее.
Навык их перечислит; если правка не версионная, поправь их импорты сам.
После правки автоматически запускается /xdto-validate — отключается через -NoValidate.
Типичный workflow
/xdto-info <пакет>— найти нужный тип/xdto-info <пакет> -Mode used-by -Name <Тип>— если меняешь существующее/xdto-edit <пакет> -Operation <op> …/db-load-xml+/db-update