mcpField
X
xdto-edit

xdto-edit

github.com/nikolay-shirokov開発74143 回インストール今日更新
リポジトリ

xdto-edit について

スキーマ全体を読み直して書き換えずに、1C XDTO パッケージを部分編集するスキルです。大規模パッケージの個別変更に適しており、無効にしない限り編集後に自動検証を実行します。

主な機能

  1. 01プロパティや型の追加・置換・削除
  2. 02列挙型、インポート、オブジェクト属性を編集
  3. 03型名とプロパティパスで対象を指定
  4. 04バッチ操作とファイル入力に対応
  5. 05編集後に自動検証

活用シーン

  1. 01大規模 XDTO パッケージの単一プロパティを変更
  2. 02パッケージ名や名前空間を変更
  3. 03複数の型を削除、または列挙値を追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/nikolay-shirokov/cc-1c-skills --skill xdto-edit

インストール後、Claude Code で/xdto-editを入力して読み込まれたか確認します。

同梱ファイルscripts/xdto-edit.ps1scripts/xdto-edit.py

README(原文)English

プロジェクトの README より

この 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

コメント