$npx -y skills add Nikolay-Shirokov/cc-1c-skills --skill cfe-borrowЗаимствование объектов из конфигурации 1С в расширение (CFE). Используй когда нужно перехватить метод, изменить форму или добавить реквизит к существующему объекту конфигурации
| 1 | # /cfe-borrow — Заимствование объектов из конфигурации |
| 2 | |
| 3 | Заимствует объекты из основной конфигурации в расширение. Создаёт XML-файлы с `ObjectBelonging=Adopted` и `ExtendedConfigurationObject`, добавляет запись в ChildObjects расширения. |
| 4 | |
| 5 | ## Предусловие |
| 6 | |
| 7 | Расширение должно быть создано (`/cfe-init`) и содержать валидный `Configuration.xml`. |
| 8 | |
| 9 | ### Авто-определение ConfigPath |
| 10 | |
| 11 | Если пользователь не указал `-ConfigPath` — попробуй определить автоматически: |
| 12 | 1. Прочитай `.v8-project.json` из корня проекта |
| 13 | 2. Разреши целевую базу (по имени, ветке или `default` — алгоритм из `/db-list`) |
| 14 | 3. Если у базы есть поле `configSrc` — используй как `-ConfigPath` |
| 15 | 4. Если `configSrc` нет — спроси у пользователя |
| 16 | |
| 17 | ## Параметры |
| 18 | |
| 19 | | Параметр | Описание | |
| 20 | |----------|----------| |
| 21 | | `ExtensionPath` | Путь к каталогу расширения (обязат.) | |
| 22 | | `ConfigPath` | Путь к конфигурации-источнику (обязат.) | |
| 23 | | `Object` | Что заимствовать (обязат.), batch через `;;` | |
| 24 | | `BorrowMainAttribute` | Заимствовать основной реквизит формы. Без параметра — не заимствует. `Form` — реквизиты, используемые на форме. `All` — все реквизиты объекта. Требует форму в -Object | |
| 25 | |
| 26 | ## Формат -Object |
| 27 | |
| 28 | - `Catalog.Контрагенты` — справочник |
| 29 | - `CommonModule.РаботаСФайлами` — общий модуль |
| 30 | - `Document.РеализацияТоваров` — документ |
| 31 | - `Enum.ВидыОплат` — перечисление |
| 32 | - `Catalog.Контрагенты.Form.ФормаЭлемента` — форма объекта (заимствование формы) |
| 33 | - `Catalog.X ;; CommonModule.Y ;; Enum.Z` — несколько объектов |
| 34 | Поддерживаются все 44 типа объектов конфигурации. |
| 35 | |
| 36 | ### Заимствование форм |
| 37 | |
| 38 | Формат `Тип.Имя.Form.ИмяФормы` заимствует форму конкретного объекта. Если родительский объект ещё не заимствован — он будет заимствован автоматически. |
| 39 | |
| 40 | Создаётся: |
| 41 | 1. **Метаданные формы** — `Forms/ИмяФормы.xml` с `ObjectBelonging=Adopted`, `FormType=Managed` |
| 42 | 2. **Form.xml** — `Forms/ИмяФормы/Ext/Form.xml` с копией исходной формы + `<BaseForm>` (начальное состояние) |
| 43 | 3. **Module.bsl** — пустой файл `Forms/ИмяФормы/Ext/Form/Module.bsl` |
| 44 | 4. **Регистрация** — `<Form>` в ChildObjects родительского объекта |
| 45 | |
| 46 | ### Заимствование основного реквизита формы (-BorrowMainAttribute) |
| 47 | |
| 48 | **Когда нужно**: пользователь хочет добавить новый реквизит в существующий объект конфигурации и вывести его на заимствованную форму. Без `-BorrowMainAttribute` форма заимствуется "пустой" — только визуальные элементы, без привязки к данным объекта. С `-BorrowMainAttribute` форма сохраняет привязки к реквизитам объекта (DataPath), что позволяет затем добавить на неё новые элементы через `/form-edit`. |
| 49 | |
| 50 | **Два режима**: |
| 51 | - `Form` (по умолчанию) — заимствует только те реквизиты объекта, которые уже выведены на форму. Оптимальный выбор для большинства случаев |
| 52 | - `All` — заимствует все реквизиты и табличные части объекта. Используй если планируешь выводить на форму реквизиты, которых на ней ещё нет |
| 53 | |
| 54 | **Типовой сценарий** (добавление реквизита + вывод на форму): |
| 55 | 1. `/cfe-borrow` с `-BorrowMainAttribute` — заимствовать форму с реквизитами |
| 56 | 2. `/meta-edit` — добавить новый реквизит в объект расширения |
| 57 | 3. `/form-edit` — вывести реквизит на заимствованную форму |
| 58 | |
| 59 | **Защита существующих данных**: если зависимый объект уже заимствован с содержимым (реквизитами, формами) — скрипт не перезаписывает его, а добавляет только недостающее. |
| 60 | |
| 61 | ## Команда |
| 62 | |
| 63 | ```powershell |
| 64 | powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-borrow.ps1" -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты" |
| 65 | ``` |
| 66 | |
| 67 | ## Примеры |
| 68 | |
| 69 | ```powershell |
| 70 | # Заимствовать один объект |
| 71 | ... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты" |
| 72 | |
| 73 | # Заимствовать форму (автоматически заимствует родительский объект) |
| 74 | ... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты.Form.ФормаЭлемента" |
| 75 | |
| 76 | # Несколько объектов за раз |
| 77 | ... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты ;; CommonModule.ОбщийМодуль ;; Enum.ВидыОплат" |
| 78 | |
| 79 | # Заимствовать форму с основным реквизитом (реквизиты по DataPath формы) |
| 80 | ... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Номенклатура.Form.ФормаЭлемента" -BorrowMainAttribute |
| 81 | |
| 82 | # Заимствовать форму с ВСЕМИ реквизитами объекта |
| 83 | ... -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Номенклатура.Form.ФормаЭлемента" -BorrowMainAttribute All |
| 84 | ``` |
| 85 | |
| 86 | ## Верификация |
| 87 | |
| 88 | ``` |
| 89 | /cfe-validate <ExtensionPath> |
| 90 | ``` |