Files

6.2 KiB

name, description, argument-hint, allowed-tools
name description argument-hint allowed-tools
xdto-edit Точечное редактирование пакета XDTO 1С. Используй когда нужно добавить, изменить или удалить тип или свойство в существующем пакете, переименовать пакет, сменить пространство имён <PackagePath> -Operation <операция> [-Target <путь>] [-Value <значение>] [-NoValidate]
Bash
Read
Glob

/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 ".codeassistant/skills/xdto-edit/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