--- name: xdto-edit description: Точечное редактирование пакета XDTO 1С. Используй когда нужно добавить, изменить или удалить тип или свойство в существующем пакете, переименовать пакет, сменить пространство имён argument-hint: -Operation <операция> [-Target <путь>] [-Value <значение>] [-NoValidate] allowed-tools: - 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 python ".github/skills/xdto-edit/scripts/xdto-edit.py" -PackagePath "<путь>" -Operation -Target "<адрес>" -Value "<значение>" ``` ## Операции | Операция | `-Target` | `-Value` | |---|---|---| | `add-property` | имя типа | `` или `` | | `replace-property` | `Тип.Свойство` | новое объявление целиком | | `remove-property` | `Тип.Свойство` | — | | `add-type` | — | `` или `` | | `remove-type` | имя типа | — | | `add-enum` | имя типа значения | литерал | | `add-import` | — | URI пространства имён | | `rename` | — | новое имя объекта метаданных | | `set-synonym` | — | синоним | | `set-comment` | — | комментарий | | `set-namespace` | — | новый URI пространства имён | Батч через `;;` там, где перечисление осмысленно: `remove-property`, `remove-type`, `add-enum`, `add-import`. ```powershell ... -Operation add-property -Target "Платёж" -Value '' ... -Operation remove-property -Target "Платёж.Комментарий ;; Платёж.Черновик" ... -Operation add-enum -Target "ВидДокумента" -Value "Инкассо ;; Аккредитив" ... -Operation rename -Value ОбменСБанком ``` Содержимое всегда описывается фрагментом XML-схемы — тем же языком, что и в `/xdto-compile`. Отдельных параметров вида `-MinOccurs` нет: чтобы поменять свойство, дай его новое объявление целиком через `replace-property`. Ограничение длины и прочие фасеты задаются вложенным типом: ```xml ``` Многострочный фрагмент передавай файлом: `-Value "@frag.xsd"`. Инлайн через оболочку надёжен только для однострочных фрагментов без вложенных кавычек. ## Адресация Путь `Тип.Свойство`. Точка безопасна: имена типов и свойств — идентификаторы 1С. Путь продолжается внутрь встроенных типов: `ПлатежныйДокумент.ДатаСписано.ИдПлатежа`. Посмотреть, что есть в пакете и как называется нужный тип, — `/xdto-info`. Перед правкой типа полезно `/xdto-info -Mode used-by -Name <Тип>`: покажет, кого затронет изменение. ## Что тянет за собой переименование и смена namespace `rename` меняет имя в объекте метаданных, переименовывает файл `<Имя>.xml` и каталог `<Имя>/`, правит регистрацию в `Configuration.xml`. Новое имя проверяется на допустимость как идентификатор 1С и на занятость. `set-namespace` меняет `targetNamespace`, все внутренние ссылки на собственные типы и `` объекта метаданных. Пакеты, импортирующие старое пространство имён, **не изменяются** — при версионировании они и должны продолжать смотреть на прежнее. Навык их перечислит; если правка не версионная, поправь их импорты сам. После правки автоматически запускается `/xdto-validate` — отключается через `-NoValidate`. ## Типичный workflow 1. `/xdto-info <пакет>` — найти нужный тип 2. `/xdto-info <пакет> -Mode used-by -Name <Тип>` — если меняешь существующее 3. `/xdto-edit <пакет> -Operation …` 4. `/db-load-xml` + `/db-update`