When adding a new attribute to a borrowed form, -BorrowMainAttribute
borrows the form's main attribute ("Объект") and all referenced object
attributes, tabular sections, and their transitive type dependencies.
Two modes: Form (default — only attributes referenced by form DataPath)
and All (all object attributes). Deep paths like Объект.A.B are resolved
transitively. Already-borrowed objects are not overwritten.
Also fixed: CommonPicture auto-borrow from AutoCommandBar, form-attribute
DataPath stripping (keep only Объект.* paths).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
11 KiB
Расширения конфигурации (CFE)
Навыки группы /cfe-* позволяют создавать, заимствовать объекты, перехватывать методы, проверять и анализировать расширения конфигурации 1С.
Навыки
| Навык | Параметры | Описание |
|---|---|---|
/cfe-init |
<Name> [-Purpose Patch|Customization|AddOn] [-CompatibilityMode] |
Создание расширения (scaffold XML-исходников) |
/cfe-borrow |
-ExtensionPath <path> -ConfigPath <path> -Object "Type.Name" [-BorrowMainAttribute] |
Заимствование объектов из конфигурации |
/cfe-patch-method |
-ExtensionPath <path> -ModulePath "Type.Name.Module" -MethodName "X" -InterceptorType Before |
Генерация перехватчика метода |
/cfe-validate |
<ExtensionPath> [-MaxErrors 30] |
Валидация структурной корректности (9 проверок) |
/cfe-diff |
-ExtensionPath <path> -ConfigPath <path> [-Mode A|B] |
Анализ расширения и проверка переноса |
Рабочий цикл
cf-info (версия, совместимость)
↓
/cfe-init → scaffold расширения
↓
/cfe-borrow → заимствование объектов из конфигурации
↓
/cfe-patch-method → перехват методов
↓
/cfe-validate → проверка корректности
↓
/cfe-diff Mode A → обзор изменений
Типичные сценарии
Создание расширения для исправления бага
> Создай расширение для исправления бага в справочнике Контрагенты,
конфигурация ERP в C:\cfsrc\erp
Claude выполнит:
/cf-info C:\cfsrc\erp -Mode brief— получить версию и режим совместимости/cfe-init— создать расширение с нужнымCompatibilityMode/cfe-borrow— заимствоватьCatalog.Контрагенты/cfe-patch-method— создать перехватчик нужного метода/cfe-validate— проверить результат
Добавление реквизита в объект и вывод на форму
> Добавь реквизит "ОсновнойПоставщик" (тип СправочникСсылка.Партнеры)
в справочник Номенклатура и выведи на форму элемента.
Конфигурация ERP в C:\cfsrc\erp
Claude выполнит:
/cfe-init— создать расширение/cfe-borrow -Object "Catalog.Номенклатура.Form.ФормаЭлемента" -BorrowMainAttribute— заимствовать форму с реквизитами объекта/meta-edit— добавить новый реквизитРасш1_ОсновнойПоставщикв Номенклатура/form-edit— вывести реквизит на форму/cfe-validate— проверить результат
Анализ существующего расширения
> Покажи что изменено в расширении src/
Claude вызовет /cfe-diff -Mode A и покажет: заимствованные объекты, перехватчики, собственные объекты.
Проверка переноса изменений
> Проверь, все ли изменения из расширения перенесены в конфигурацию
Claude вызовет /cfe-diff -Mode B — найдёт блоки #Вставка и проверит их наличие в конфигурации.
cfe-init — создание расширения
Параметры:
| Параметр | Описание | По умолчанию |
|---|---|---|
Name |
Имя расширения (обязат.) | — |
Synonym |
Синоним | = Name |
NamePrefix |
Префикс собственных объектов | = Name + "_" |
OutputDir |
Каталог | src |
Purpose |
Назначение | Customization |
Version |
Версия | — |
Vendor |
Поставщик | — |
CompatibilityMode |
Режим совместимости | Version8_3_24 |
NoRole |
Без основной роли | false |
Создаёт:
<OutputDir>/
├── Configuration.xml # Свойства расширения
├── Languages/
│ └── Русский.xml # Язык (Adopted)
└── Roles/ # Если не -NoRole
└── <Prefix>ОсновнаяРоль.xml
Назначение расширения (Purpose):
Patch— исправление ошибок (минимальные изменения, только перехватчики)Customization— доработка (реквизиты, формы, модули)AddOn— дополнение (полноценный функционал)
cfe-borrow — заимствование объектов
Заимствует объекты из основной конфигурации в расширение. Создаёт минимальные XML-файлы с ObjectBelonging=Adopted и ExtendedConfigurationObject.
Формат -Object:
Catalog.Контрагенты— справочникCommonModule.РаботаСФайлами— общий модульEnum.ВидыОплат— перечислениеDocument.Заказ ;; Catalog.Товары— несколько объектов через;;
Поддерживаемые типы: Catalog, Document, Enum, CommonModule, Report, DataProcessor, ExchangePlan, InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes, BusinessProcess, Task, и другие (44 типа).
Заимствование формы с реквизитами объекта (-BorrowMainAttribute)
При добавлении нового реквизита на заимствованную форму нужна опция -BorrowMainAttribute:
- Без неё форма заимствуется "пустой" — только визуальные элементы, без привязки к данным
- С ней — форма сохраняет
DataPathпривязки к реквизитам объекта (Объект.XXX)
Два режима:
Form(по умолчанию) — заимствует только реквизиты, выведенные на формуAll— заимствует все реквизиты объекта (включая не выведенные на форму)
Каскадно заимствует зависимые объекты по типам реквизитов (справочники, перечисления, определяемые типы) как оболочки. Если зависимый объект уже заимствован с содержимым — не перезаписывает его.
cfe-patch-method — перехват методов
Генерирует .bsl файл с декоратором перехвата для заимствованного объекта.
Параметры:
| Параметр | Описание |
|---|---|
ModulePath |
Catalog.X.ObjectModule, CommonModule.Y, Catalog.X.Form.Z |
MethodName |
Имя перехватываемого метода |
InterceptorType |
Before / After / ModificationAndControl |
Context |
НаСервере / НаКлиенте / НаСервереБезКонтекста |
IsFunction |
Добавить Возврат |
Типы перехватчиков:
| Тип | Декоратор | Когда использовать |
|---|---|---|
Before |
&Перед |
Выполнить код до вызова оригинального метода |
After |
&После |
Выполнить код после вызова оригинального метода |
ModificationAndControl |
&ИзменениеИКонтроль |
Полная замена тела метода с маркерами #Вставка/#Удаление |
Пример генерируемого кода (Before):
&НаСервере
&Перед("ПриЗаписи")
Процедура Расш1_ПриЗаписи()
// TODO: код перед вызовом оригинального метода
КонецПроцедуры
cfe-validate — проверки
| # | Проверка | Уровень |
|---|---|---|
| 1 | XML well-formedness, MetaDataObject/Configuration, version | ERROR |
| 2 | InternalInfo: 7 ContainedObject, валидные ClassId | ERROR |
| 3 | Extension properties: ObjectBelonging=Adopted, Name, Purpose, NamePrefix, KeepMapping | ERROR |
| 4 | Enum-значения (4 свойства) | ERROR |
| 5 | ChildObjects: валидные типы, нет дубликатов, порядок | ERROR/WARN |
| 6 | DefaultLanguage ссылается на существующий Language | ERROR |
| 7 | Файлы языков существуют | WARN |
| 8 | Каталоги объектов существуют | WARN |
| 9 | Заимствованные объекты: ObjectBelonging=Adopted, ExtendedConfigurationObject UUID | ERROR/WARN |
cfe-diff — режимы
Mode A — обзор расширения
Для каждого объекта показывает:
[BORROWED]— заимствованный: перехватчики, собственные реквизиты/формы[OWN]— собственный: количество реквизитов, ТЧ, форм
Mode B — проверка переноса
Для каждого &ИзменениеИКонтроль проверяет, перенесены ли блоки #Вставка в конфигурацию:
[TRANSFERRED]— код найден в конфигурации[NOT_TRANSFERRED]— код не найден[NEEDS_REVIEW]— нет блоков#Вставкаили модуль конфигурации не найден
Связь с другими навыками
/cf-info— получение версии и совместимости конфигурации передcfe-init/meta-compile— создание собственных объектов расширения (реквизиты, ТЧ)/form-compile,/form-edit— создание и модификация форм расширения/cfe-validate— всегда проверяйте расширение после изменений
Спецификации
- 1c-extension-spec.md — XML-формат выгрузки расширений конфигурации (CFE)