mcpField
X
xdto-edit

xdto-edit

github.com/nikolay-shirokovDevelopment74143 installsUpdated today
Repository

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

  1. 01Add, replace, or remove properties and types
  2. 02Edit enums, imports, and object metadata
  3. 03Address items by type and property path
  4. 04Support batches and file-based input
  5. 05Validate automatically after edits

Use cases

  1. 01Change one property in a large XDTO package
  2. 02Update a package name or namespace
  3. 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-edit

After 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

  1. /xdto-info <пакет> — найти нужный тип
  2. /xdto-info <пакет> -Mode used-by -Name <Тип> — если меняешь существующее
  3. /xdto-edit <пакет> -Operation <op> …
  4. /db-load-xml + /db-update

Comments

Markdown supported