1c-xdto-edit

Точечное редактирование пакета XDTO 1С. Используй когда нужно добавить, изменить или удалить тип или свойство в существующем пакете, переименовать пакет, сменить пространство имен

SKILL.md

GitHub

/xdto-edit - Точечное редактирование пакета XDTO

Меняет один элемент пакета, не требуя читать и переписывать всю схему - для больших пакетов (EnterpriseData - около мегабайта) это единственный практичный путь.

Если нужно переработать схему целиком или сперва разобраться, как она устроена, - /xdto-decompile → правка XSD → /xdto-compile -Force.

Параметры

Параметр Обязательный Описание
PackagePath да Каталог пакета, Ext/Package.bin или <Имя>.xml. Псевдоним - -Path
Operation да Операция из таблицы ниже
Target зависит Адрес: имя типа или путь Тип.Свойство
Value зависит Фрагмент XSD, литерал, URI или текст. @путь - взять содержимое из файла
NoValidate нет Не запускать 1c-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