mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-21 09:01:53 +03:00
102 lines
7.0 KiB
Markdown
102 lines
7.0 KiB
Markdown
---
|
||
name: cfe-borrow
|
||
description: Заимствование объектов из конфигурации 1С в расширение (CFE). Используй когда нужно перехватить метод, изменить форму или добавить реквизит к существующему объекту конфигурации
|
||
argument-hint: -ExtensionPath <path> -ConfigPath <path> -Object "Catalog.Контрагенты.Form.ФормаЭлемента" -BorrowMainAttribute
|
||
allowed-tools:
|
||
- Bash
|
||
- Read
|
||
- Glob
|
||
---
|
||
|
||
# /cfe-borrow — Заимствование объектов из конфигурации
|
||
|
||
Заимствует объекты из основной конфигурации в расширение. Создаёт XML-файлы с `ObjectBelonging=Adopted` и `ExtendedConfigurationObject`, добавляет запись в ChildObjects расширения.
|
||
|
||
## Предусловие
|
||
|
||
Расширение должно быть создано (`/cfe-init`) и содержать валидный `Configuration.xml`.
|
||
|
||
### Авто-определение ConfigPath
|
||
|
||
Если пользователь не указал `-ConfigPath` — попробуй определить автоматически:
|
||
1. Прочитай `.v8-project.json` из корня проекта
|
||
2. Разреши целевую базу (по имени, ветке или `default` — алгоритм из `/db-list`)
|
||
3. Если у базы есть поле `configSrc` — используй как `-ConfigPath`
|
||
4. Если `configSrc` нет — спроси у пользователя
|
||
|
||
## Параметры
|
||
|
||
| Параметр | Описание |
|
||
|----------|----------|
|
||
| `ExtensionPath` | Путь к каталогу расширения (обязат.) |
|
||
| `ConfigPath` | Путь к конфигурации-источнику (обязат.) |
|
||
| `Object` | Что заимствовать (обязат.), batch через `;;` |
|
||
| `BorrowMainAttribute` | Заимствовать основной реквизит формы. Без параметра — не заимствует. `Form` — реквизиты, используемые на форме. `All` — все реквизиты объекта. Требует форму в -Object |
|
||
|
||
## Формат -Object
|
||
|
||
- `Catalog.Контрагенты` — справочник
|
||
- `CommonModule.РаботаСФайлами` — общий модуль
|
||
- `Document.РеализацияТоваров` — документ
|
||
- `Enum.ВидыОплат` — перечисление
|
||
- `Catalog.Контрагенты.Form.ФормаЭлемента` — форма объекта (заимствование формы)
|
||
- `Catalog.X ;; CommonModule.Y ;; Enum.Z` — несколько объектов
|
||
Поддерживаются все 44 типа объектов конфигурации.
|
||
|
||
### Заимствование форм
|
||
|
||
Формат `Тип.Имя.Form.ИмяФормы` заимствует форму конкретного объекта. Если родительский объект ещё не заимствован — он будет заимствован автоматически.
|
||
|
||
Создаётся:
|
||
1. **Метаданные формы** — `Forms/ИмяФормы.xml` с `ObjectBelonging=Adopted`, `FormType=Managed`
|
||
2. **Form.xml** — `Forms/ИмяФормы/Ext/Form.xml` с копией исходной формы + `<BaseForm>` (начальное состояние)
|
||
3. **Module.bsl** — пустой файл `Forms/ИмяФормы/Ext/Form/Module.bsl`
|
||
4. **Регистрация** — `<Form>` в ChildObjects родительского объекта
|
||
|
||
### Заимствование основного реквизита формы (-BorrowMainAttribute)
|
||
|
||
**Когда нужно**: пользователь хочет добавить новый реквизит в существующий объект конфигурации и вывести его на заимствованную форму. Без `-BorrowMainAttribute` форма заимствуется "пустой" — только визуальные элементы, без привязки к данным объекта. С `-BorrowMainAttribute` форма сохраняет привязки к реквизитам объекта (DataPath), что позволяет затем добавить на неё новые элементы через `/form-edit`.
|
||
|
||
**Два режима**:
|
||
- `Form` (по умолчанию) — заимствует только те реквизиты объекта, которые уже выведены на форму. Оптимальный выбор для большинства случаев
|
||
- `All` — заимствует все реквизиты и табличные части объекта. Используй если планируешь выводить на форму реквизиты, которых на ней ещё нет
|
||
|
||
**Типовой сценарий** (добавление реквизита + вывод на форму):
|
||
1. `/cfe-borrow` с `-BorrowMainAttribute` — заимствовать форму с реквизитами
|
||
2. `/meta-edit` — добавить новый реквизит в объект расширения
|
||
3. `/form-edit` — вывести реквизит на заимствованную форму
|
||
|
||
**Защита существующих данных**: если зависимый объект уже заимствован с содержимым (реквизитами, формами) — скрипт не перезаписывает его, а добавляет только недостающее.
|
||
|
||
## Команда
|
||
|
||
```powershell
|
||
powershell.exe -NoProfile -File ".opencode/skills/cfe-borrow/scripts/cfe-borrow.ps1" -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты"
|
||
```
|
||
|
||
## Примеры
|
||
|
||
```powershell
|
||
# Заимствовать один объект
|
||
... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты"
|
||
|
||
# Заимствовать форму (автоматически заимствует родительский объект)
|
||
... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты.Form.ФормаЭлемента"
|
||
|
||
# Несколько объектов за раз
|
||
... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты ;; CommonModule.ОбщийМодуль ;; Enum.ВидыОплат"
|
||
|
||
# Заимствовать форму с основным реквизитом (реквизиты по DataPath формы)
|
||
... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Номенклатура.Form.ФормаЭлемента" -BorrowMainAttribute
|
||
|
||
# Заимствовать форму с ВСЕМИ реквизитами объекта
|
||
... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Номенклатура.Form.ФормаЭлемента" -BorrowMainAttribute All
|
||
```
|
||
|
||
## Верификация
|
||
|
||
```
|
||
/cfe-validate <ExtensionPath>
|
||
```
|
||
|