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

评论

支持 Markdown