К основному содержанию
скилл CX Codex

cfe-borrow — скилл для Claude Code: заимствование объектов 1С

Скилл переносит объекты основной конфигурации 1С в расширение CFE. Пригодится, когда нужно изменить форму, добавить реквизит или перехватить метод.

Установить в Claude Code · Через маркетплейс плагинов Все способы и платформы ↓
/plugin marketplace add Nikolay-Shirokov/cc-1c-skills
/plugin install 1c-skills@cc-1c-skills
Открыть на GitHub

Что делает cfe-borrow

Скилл создаёт XML-описания заимствованных объектов и регистрирует их в расширении. Можно выбрать объект, форму, реквизит или табличную часть; родительский объект для дочернего заимствуется автоматически. Для пакетной обработки укажите объекты через ;;.

Для формы можно задать -BorrowMainAttribute Form, чтобы сохранить привязки к реквизитам, уже выведенным на неё. Вариант All захватывает все реквизиты и табличные части. Затем новый реквизит добавляют через /meta-edit, а на форму выводят через /form-edit.

Сначала создайте расширение командой /cfe-init и проверьте, что в нём есть корректный Configuration.xml. Повторный вызов сохраняет собственные реквизиты и код модулей. У некоторых видов объектов платформа не примет собственные реквизиты табличной части; для бизнес-процессов и задач это ограничение действует до платформы 8.3.25.

Какие задачи решает

  • заимствовать объект конфигурации в расширение
  • сохранить привязки реквизитов при заимствовании формы
  • добавить реквизит в табличную часть расширения
  • заимствовать несколько объектов за один вызов

Примеры запросов агенту

  • Заимствуй форму объекта и сохрани привязки к реквизитам через -BorrowMainAttribute Form.
  • Добавь в расширение табличную часть документа, чтобы затем создать в ней собственный реквизит.
  • Заимствуй несколько объектов конфигурации одним вызовом, разделив их через ;;.

Как установить cfe-borrow

1Через маркетплейс плагинов

/plugin marketplace add Nikolay-Shirokov/cc-1c-skills
/plugin install 1c-skills@cc-1c-skills

Команда ставит плагин 1c-skills целиком, со всеми его скиллами

2Через Skills CLI (Vercel)

npx skills add Nikolay-Shirokov/cc-1c-skills --skill cfe-borrow -a claude-code

3Вручную: положить файлы

~/.claude/skills/cfe-borrow/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/cfe-borrow/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о cfe-borrow

Как установить cfe-borrow в Claude Code?

В Claude Code добавьте маркетплейс командой /plugin marketplace add Nikolay-Shirokov/cc-1c-skills, затем установите плагин командой /plugin install 1c-skills@cc-1c-skills.

Что делает cfe-borrow?

Скилл заимствует объекты основной конфигурации 1С в расширение CFE и создаёт для них XML-описания. Он также умеет переносить формы с привязками к реквизитам.

Что нужно подготовить перед запуском cfe-borrow?

Расширение должно быть создано через /cfe-init и содержать корректный Configuration.xml. Для заимствования также нужны пути к расширению и конфигурации-источнику.

Исходный текст

SKILL.md · MIT
---
name: cfe-borrow
description: Заимствование объектов из конфигурации 1С в расширение (CFE). Используй когда нужно перехватить метод, изменить форму или добавить реквизит к существующему объекту конфигурации
argument-hint: -ExtensionPath <path> -ConfigPath <path> -Object "Catalog.Контрагенты.Form.ФормаЭлемента" -BorrowMainAttribute Form
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 через `;;` |
| `Module` | Создать пустые модули объекта: `ObjectModule`, `ManagerModule`, `RecordSetModule`, `ValueManagerModule` (через запятую) или `None`. У типов с единственным модулем (`CommonModule`, `HTTPService`, `WebService`) он создаётся и без параметра |
| `BorrowMainAttribute` | Заимствовать основной реквизит формы: `Form` — реквизиты, используемые на форме, `All` — все реквизиты объекта. Не указан — не заимствует. Требует форму в -Object |

## Формат -Object

- `Catalog.Контрагенты` — справочник
- `CommonModule.РаботаСФайлами` — общий модуль
- `Document.РеализацияТоваров` — документ
- `Enum.ВидыОплат` — перечисление
- `Catalog.Контрагенты.Form.ФормаЭлемента` — форма объекта (заимствование формы)
- `CommonForm.ВыборПериода` — общая форма, вместе с содержимым (как форма объекта). С `-BorrowMainAttribute` владелец берётся из типа основного реквизита: объект (`DataProcessorObject.X` и т.п.), основная таблица динамического списка или константы набора констант
- `Document.ЗаказКлиента.TabularSection.Товары`, `Document.ЗаказКлиента.Attribute.Комментарий`, `Document.ЗаказКлиента.TabularSection.Товары.Attribute.Цена`, `InformationRegister.Цены.Dimension.Номенклатура` — отдельный дочерний объект (реквизит, табличная часть, реквизит табличной части, измерение…), без формы. Виды: `Attribute`, `TabularSection`, `Dimension`, `Resource`, `AddressingAttribute`, `AccountingFlag`
- `Catalog.X ;; CommonModule.Y ;; Enum.Z` — несколько объектов

### Заимствование форм

Формат `Тип.Имя.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` — заимствует все реквизиты и табличные части объекта. Используй если планируешь выводить на форму реквизиты, которых на ней ещё нет

Объект, чьи реквизиты заимствуются, — тот, что в типе основного реквизита формы. Обычно это владелец формы; если другой (форма обработки с основным реквизитом `DocumentObject.X`), заимствуется он сам и его реквизиты.

**Типовой сценарий** (добавление реквизита + вывод на форму):
1. `/cfe-borrow` с `-BorrowMainAttribute` — заимствовать форму с реквизитами
2. `/meta-edit` — добавить новый реквизит в объект расширения
3. `/form-edit` — вывести реквизит на заимствованную форму

**Защита существующих данных**: уже заимствованный объект не перезаписывается — добавляется только недостающее. Повторный вызов безопасен: собственные реквизиты расширения, заимствованные дочерние объекты и код в модулях сохраняются.

### Заимствование реквизитов и табличных частей без формы

Формат `Тип.Имя.<Вид>.<Имя>` (и `Тип.Имя.TabularSection.<ТЧ>.Attribute.<Реквизит>`) заимствует один дочерний объект — реквизит, табличную часть, реквизит табличной части, измерение и т.п.:
- родительский объект заимствуется автоматически, для реквизита табличной части — и сама табличная часть
- табличная часть приходит без реквизитов. Форма, заимствованная позже с `-BorrowMainAttribute`, дозаимствует в неё недостающие реквизиты, собственные реквизиты сохраняются
- объект из ссылочного типа реквизита (`CatalogRef.Номенклатура`) заимствуется оболочкой — пустым, без реквизитов и форм
- вид не из списка или дочерний объект, которого нет в источнике, — ошибка, расширение не меняется

Коду модулей расширения реквизиты источника доступны и без заимствования — заимствуй их, только когда табличная часть нужна под собственные реквизиты или реквизит выводит своя форма расширения.

**Собственный реквизит табличной части** — когда форма не нужна (например, реквизит использует только код):
1. `/cfe-borrow -Object "Document.ЗаказКлиента.TabularSection.Товары"`
2. `/meta-edit` на `Documents/ЗаказКлиента.xml` расширения: `-Operation add-ts-attribute -Value "Товары.пд_Скидка: Number(15,2)"`

У плана видов характеристик, плана счетов и плана видов расчёта собственный реквизит в заимствованную табличную часть платформа не примет (отказ при обновлении конфигурации БД), у бизнес-процесса и задачи — только с платформы 8.3.25. Навык такую табличную часть заимствует, но выводит `[WARN]` — собственных реквизитов в неё не добавляй.

**Своя форма расширения** видит только заимствованные реквизиты объекта: путь `Объект.Склад` к незаимствованному реквизиту — «Неверный путь к данным». Заимствуй выводимые реквизиты по одному (`Document.ЗаказКлиента.Attribute.Склад ;; Document.ЗаказКлиента.TabularSection.Товары.Attribute.Цена`), саму форму создай через `/form-add` и `/form-compile`.

## Команда

```powershell
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-borrow.ps1" -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты"
```

## Примеры

```powershell
# Заимствовать один объект
... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты"

# Заимствовать справочник вместе с модулями объекта и менеджера
... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты" -Module ObjectModule,ManagerModule

# Общий модуль без файла модуля
... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "CommonModule.РаботаСФайлами" -Module None

# Заимствовать форму (автоматически заимствует родительский объект)
... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты.Form.ФормаЭлемента"

# Несколько объектов за раз
... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты ;; CommonModule.ОбщийМодуль ;; Enum.ВидыОплат"

# Заимствовать форму с основным реквизитом (реквизиты по DataPath формы)
... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Номенклатура.Form.ФормаЭлемента" -BorrowMainAttribute Form

# Заимствовать форму с ВСЕМИ реквизитами объекта
... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Номенклатура.Form.ФормаЭлемента" -BorrowMainAttribute All

# Табличная часть без формы — под собственные реквизиты
... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Document.ЗаказКлиента.TabularSection.Товары"

# Реквизит документа и реквизит табличной части — для своей формы расширения
... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Document.ЗаказКлиента.Attribute.Склад ;; Document.ЗаказКлиента.TabularSection.Товары.Attribute.Цена"
```

## Верификация

```
/cfe-validate <ExtensionPath> -ConfigPath <ConfigPath>
```

Конфигурацию-источник передавай и валидатору: заимствованные формы он проверяет по ней.

© Nikolay Shirokov · MIT · Nikolay-Shirokov/cc-1c-skills

Похожие скиллы

Каталог скиллов SKILL.md →

Из того же набора14

skd-edit Точечно меняет схему компоновки данных 1С: добавляет поля, итоги, фильтры и параметры, правит текст запроса. Пригодится, когда СКД уже есть и её надо доработать. CX Codex 52установок cfe-init Скилл разворачивает каркас расширения конфигурации 1С: Configuration.xml, язык в Languages/ и при необходимости роль. Пригодится, когда нужно править или дополнять типовую конфигурацию, не трогая её саму. CX Codex 50установок cf-info Показывает структуру конфигурации 1С: свойства, состав и счётчики объектов. Пригодится для быстрого обзора выгрузки Configuration.xml. CX Codex 49установок template-remove Скилл удаляет макет из объекта 1С и снимает его регистрацию в корневом XML. Нужен, когда макет убирают из обработки, отчёта или справочника. CX Codex 47установок epf-build Собирает внешнюю обработку 1С в файл EPF или ERF из XML-исходников и проверяет модули до сборки. CX Codex 47установок erf-init Генерирует минимальный набор XML-исходников внешнего отчёта 1С: корневой файл метаданных и каталог отчёта. Пригодится, когда начинаешь новый отчёт и не хочешь собирать каркас руками. CX Codex 46установок form-compile Собирает управляемую форму 1С в Form.xml из JSON-описания или из метаданных объекта. Пригодится, когда форму нужно создать с нуля или получить типовую. CX Codex 45установок web-publish Готовит default.vrd, правит httpd.conf и поднимает Apache, чтобы база 1С открывалась в браузере. Повторный запуск просто обновляет конфигурацию. CX Codex 44установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой