git:20260428.c3dfb0e to git:20260828.e6ca64d

26 added, 26 removed. Audit A to A.

---
name: 1c-cfe-borrow
description: "Заимствование объектов из конфигурации 1С в расширение (CFE). Используй когда нужно перехватить метод, изменить форму или добавить реквизит к существующему объекту конфигурации"
---
- # /cfe-borrow — Заимствование объектов из конфигурации
+ # /cfe-borrow - Заимствование объектов из конфигурации
- Заимствует объекты из основной конфигурации в расширение. Создаёт XML-файлы с `ObjectBelonging=Adopted` и `ExtendedConfigurationObject`, добавляет запись в ChildObjects расширения.
+ Заимствует объекты из основной конфигурации в расширение. Создает XML-файлы с `ObjectBelonging=Adopted` и `ExtendedConfigurationObject`, добавляет запись в ChildObjects расширения.
## Предусловие
Расширение должно быть создано (`/cfe-init`) и содержать валидный `Configuration.xml`.
### Авто-определение ConfigPath
- Если пользователь не указал `-ConfigPath` — попробуй определить автоматически:
+ Если пользователь не указал `-ConfigPath` - попробуй определить автоматически:
1. Прочитай `.v8-project.json` из корня проекта
- 2. Разреши целевую базу (по имени, ветке или `default` — алгоритм из `/db-list`)
- 3. Если у базы есть поле `configSrc` — используй как `-ConfigPath`
- 4. Если `configSrc` нет — спроси у пользователя
+ 2. Разреши целевую базу (по имени, ветке или `default` - алгоритм из `/db-list`)
+ 3. Если у базы есть поле `configSrc` - используй как `-ConfigPath`
+ 4. Если `configSrc` нет - спроси у пользователя
## Параметры
| Параметр | Описание |
|----------|----------|
| `ExtensionPath` | Путь к каталогу расширения (обязат.) |
| `ConfigPath` | Путь к конфигурации-источнику (обязат.) |
| `Object` | Что заимствовать (обязат.), batch через `;;` |
- | `BorrowMainAttribute` | Заимствовать основной реквизит формы. Без параметра — не заимствует. `Form` — реквизиты, используемые на форме. `All` — все реквизиты объекта. Требует форму в -Object |
+ | `BorrowMainAttribute` | Заимствовать основной реквизит формы. Без параметра - не заимствует. `Form` - реквизиты, используемые на форме. `All` - все реквизиты объекта. Требует форму в -Object |
## Формат -Object
- - `Catalog.Контрагенты` — справочник
- - `CommonModule.РаботаСФайлами` — общий модуль
- - `Document.РеализацияТоваров` — документ
- - `Enum.ВидыОплат` — перечисление
- - `Catalog.Контрагенты.Form.ФормаЭлемента` — форма объекта (заимствование формы)
- - `Catalog.X ;; CommonModule.Y ;; Enum.Z` — несколько объектов
+ - `Catalog.Контрагенты` - справочник
+ - `CommonModule.РаботаСФайлами` - общий модуль
+ - `Document.РеализацияТоваров` - документ
+ - `Enum.ВидыОплат` - перечисление
+ - `Catalog.Контрагенты.Form.ФормаЭлемента` - форма объекта (заимствование формы)
+ - `Catalog.X ;; CommonModule.Y ;; Enum.Z` - несколько объектов
Поддерживаются все 44 типа объектов конфигурации.
### Заимствование форм
- Формат `Тип.Имя.Form.ИмяФормы` заимствует форму конкретного объекта. Если родительский объект ещё не заимствован — он будет заимствован автоматически.
+ Формат `Тип.Имя.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 родительского объекта
+ Создается:
+ 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`.
+ **Когда нужно**: пользователь хочет добавить новый реквизит в существующий объект конфигурации и вывести его на заимствованную форму. Без `-BorrowMainAttribute` форма заимствуется "пустой" - только визуальные элементы, без привязки к данным объекта. С `-BorrowMainAttribute` форма сохраняет привязки к реквизитам объекта (DataPath), что позволяет затем добавить на нее новые элементы через `/form-edit`.
**Два режима**:
- - `Form` (по умолчанию) — заимствует только те реквизиты объекта, которые уже выведены на форму. Оптимальный выбор для большинства случаев
- - `All` — заимствует все реквизиты и табличные части объекта. Используй если планируешь выводить на форму реквизиты, которых на ней ещё нет
+ - `Form` (по умолчанию) - заимствует только те реквизиты объекта, которые уже выведены на форму. Оптимальный выбор для большинства случаев
+ - `All` - заимствует все реквизиты и табличные части объекта. Используй если планируешь выводить на форму реквизиты, которых на ней еще нет
**Типовой сценарий** (добавление реквизита + вывод на форму):
- 1. `/cfe-borrow` с `-BorrowMainAttribute` — заимствовать форму с реквизитами
- 2. `/meta-edit` — добавить новый реквизит в объект расширения
- 3. `/form-edit` — вывести реквизит на заимствованную форму
+ 1. `/cfe-borrow` с `-BorrowMainAttribute` - заимствовать форму с реквизитами
+ 2. `/meta-edit` - добавить новый реквизит в объект расширения
+ 3. `/form-edit` - вывести реквизит на заимствованную форму
- **Защита существующих данных**: если зависимый объект уже заимствован с содержимым (реквизитами, формами) — скрипт не перезаписывает его, а добавляет только недостающее.
+ **Защита существующих данных**: если зависимый объект уже заимствован с содержимым (реквизитами, формами) - скрипт не перезаписывает его, а добавляет только недостающее.
## Команда
```powershell
powershell.exe -NoProfile -File skills/1c-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>
```