--- name: cfe-borrow description: Заимствование объектов из конфигурации 1С в расширение (CFE). Используй когда нужно перехватить метод, изменить форму или добавить реквизит к существующему объекту конфигурации argument-hint: -ExtensionPath -ConfigPath -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` с копией исходной формы + `` (начальное состояние) 3. **Module.bsl** — пустой файл `Forms/ИмяФормы/Ext/Form/Module.bsl` 4. **Регистрация** — `
` в ChildObjects родительского объекта ### Заимствование основного реквизита формы (-BorrowMainAttribute) **Когда нужно**: пользователь хочет добавить новый реквизит в существующий объект конфигурации и вывести его на заимствованную форму. Без `-BorrowMainAttribute` форма заимствуется "пустой" — только визуальные элементы, без привязки к данным объекта. С `-BorrowMainAttribute` форма сохраняет привязки к реквизитам объекта (DataPath), что позволяет затем добавить на неё новые элементы через `/form-edit`. **Два режима**: - `Form` (по умолчанию) — заимствует только те реквизиты объекта, которые уже выведены на форму. Оптимальный выбор для большинства случаев - `All` — заимствует все реквизиты и табличные части объекта. Используй если планируешь выводить на форму реквизиты, которых на ней ещё нет **Типовой сценарий** (добавление реквизита + вывод на форму): 1. `/cfe-borrow` с `-BorrowMainAttribute` — заимствовать форму с реквизитами 2. `/meta-edit` — добавить новый реквизит в объект расширения 3. `/form-edit` — вывести реквизит на заимствованную форму **Защита существующих данных**: если зависимый объект уже заимствован с содержимым (реквизитами, формами) — скрипт не перезаписывает его, а добавляет только недостающее. ## Команда ```powershell python ".codeassistant/skills/cfe-borrow/scripts/cfe-borrow.py" -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 ```