1c-xdto-edit · diff

git:20260814.b9b7885 to git:20260828.2b87e3e

27 added, 27 removed. Audit A to A.

---
name: 1c-xdto-edit
- description: Точечное редактирование пакета XDTO 1С. Используй когда нужно добавить, изменить или удалить тип или свойство в существующем пакете, переименовать пакет, сменить пространство имён
+ description: Точечное редактирование пакета XDTO 1С. Используй когда нужно добавить, изменить или удалить тип или свойство в существующем пакете, переименовать пакет, сменить пространство имен
argument-hint: <PackagePath> -Operation <операция> [-Target <путь>] [-Value <значение>] [-NoValidate]
allowed-tools:
- Bash
- Read
- Glob
---
- # /xdto-edit — Точечное редактирование пакета XDTO
+ # /xdto-edit - Точечное редактирование пакета XDTO
- Меняет один элемент пакета, не требуя читать и переписывать всю схему — для больших
- пакетов (`EnterpriseData` — около мегабайта) это единственный практичный путь.
+ Меняет один элемент пакета, не требуя читать и переписывать всю схему - для больших
+ пакетов (`EnterpriseData` - около мегабайта) это единственный практичный путь.
- Если нужно переработать схему целиком или сперва разобраться, как она устроена, —
+ Если нужно переработать схему целиком или сперва разобраться, как она устроена, -
`/xdto-decompile` → правка XSD → `/xdto-compile -Force`.
## Параметры
| Параметр | Обязательный | Описание |
|----------|--------------|----------|
- | `PackagePath` | да | Каталог пакета, `Ext/Package.bin` или `<Имя>.xml`. Псевдоним — `-Path` |
+ | `PackagePath` | да | Каталог пакета, `Ext/Package.bin` или `<Имя>.xml`. Псевдоним - `-Path` |
| `Operation` | да | Операция из таблицы ниже |
| `Target` | зависит | Адрес: имя типа или путь `Тип.Свойство` |
- | `Value` | зависит | Фрагмент XSD, литерал, URI или текст. `@путь` — взять содержимое из файла |
+ | `Value` | зависит | Фрагмент XSD, литерал, URI или текст. `@путь` - взять содержимое из файла |
| `NoValidate` | нет | Не запускать `1c-xdto-validate` после правки |
```powershell
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` | имя типа | — |
+ | `remove-property` | `Тип.Свойство` | - |
+ | `add-type` | - | `<xs:complexType>` или `<xs:simpleType>` |
+ | `remove-type` | имя типа | - |
| `add-enum` | имя типа значения | литерал |
- | `add-import` | — | URI пространства имён |
- | `rename` | — | новое имя объекта метаданных |
- | `set-synonym` | — | синоним |
- | `set-comment` | — | комментарий |
- | `set-namespace` | — | новый URI пространства имён |
+ | `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 '<xs:element name="Комментарий" type="xs:string" minOccurs="0"/>'
- ... -Operation remove-property -Target "Платёж.Комментарий ;; Платёж.Черновик"
+ ... -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-схемы — тем же языком, что и в
+ Содержимое всегда описывается фрагментом XML-схемы - тем же языком, что и в
`/xdto-compile`. Отдельных параметров вида `-MinOccurs` нет: чтобы поменять свойство,
дай его новое объявление целиком через `replace-property`.
Ограничение длины и прочие фасеты задаются вложенным типом:
```xml
<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С.
+ Путь `Тип.Свойство`. Точка безопасна: имена типов и свойств - идентификаторы 1С.
Путь продолжается внутрь встроенных типов: `ПлатежныйДокумент.ДатаСписано.ИдПлатежа`.
- Посмотреть, что есть в пакете и как называется нужный тип, — `/xdto-info`.
+ Посмотреть, что есть в пакете и как называется нужный тип, - `/xdto-info`.
Перед правкой типа полезно `/xdto-info -Mode used-by -Name <Тип>`: покажет,
кого затронет изменение.
## Что тянет за собой переименование и смена namespace
`rename` меняет имя в объекте метаданных, переименовывает файл `<Имя>.xml` и каталог
`<Имя>/`, правит регистрацию в `Configuration.xml`. Новое имя проверяется на
допустимость как идентификатор 1С и на занятость.
`set-namespace` меняет `targetNamespace`, все внутренние ссылки на собственные типы
- и `<Namespace>` объекта метаданных. Пакеты, импортирующие старое пространство имён,
- **не изменяются** — при версионировании они и должны продолжать смотреть на прежнее.
+ и `<Namespace>` объекта метаданных. Пакеты, импортирующие старое пространство имен,
+ **не изменяются** - при версионировании они и должны продолжать смотреть на прежнее.
Навык их перечислит; если правка не версионная, поправь их импорты сам.
- После правки автоматически запускается `/xdto-validate` — отключается через `-NoValidate`.
+ После правки автоматически запускается `/xdto-validate` - отключается через `-NoValidate`.
## Типичный workflow
- 1. `/xdto-info <пакет>` — найти нужный тип
- 2. `/xdto-info <пакет> -Mode used-by -Name <Тип>` — если меняешь существующее
- 3. `/xdto-edit <пакет> -Operation <op> …`
+ 1. `/xdto-info <пакет>` - найти нужный тип
+ 2. `/xdto-info <пакет> -Mode used-by -Name <Тип>` - если меняешь существующее
+ 3. `/xdto-edit <пакет> -Operation <op> ...`
4. `/db-load-xml` + `/db-update`