framework/skills/tool-usage/platform-data/xml-generation/extension-operations/SKILL.md
xml-gen CFE: init, borrow, interceptors, validate
npx skillsauth add steelmorgan/1c-agent-based-dev-framework extension-operationsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Работа с расширениями конфигурации 1С.
| Триггер | Действие |
|---------|----------|
| Нужно создать расширение | extension init <output_dir> <Name> [--config-path <configPath>] |
| Нужно заимствовать объект из конфигурации | extension borrow <extPath> <configPath> "Type.Name" |
| Нужно заимствовать форму | extension borrow <extPath> <configPath> "Catalog.Name.Form.FormName" |
| Нужно добавить реквизит и вывести его на форму типовой | extension borrow ... "Type.Name.Form.X" --borrow-main-attribute form |
| Нужно сгенерировать перехватчик метода | extension patch-method <extPath> --module "Catalog.X.Form.Y" --method "ПриЗаписи" --type Before |
| Нужно проанализировать расширение | extension diff <extPath> <configPath> |
| Нужно проверить расширение | extension validate <extPath> |
Создать расширение конфигурации.
xml-gen extension init <output_dir> <Name> [--config-path <configPath>] [--purpose Patch|Customization|AddOn] [--prefix <Prefix>]
Параметры (позиционные):
<output_dir> — каталог, куда будет создано расширение (первый позиционный аргумент)<Name> — имя расширения (второй позиционный аргумент)Параметры (флаги):
--config-path — путь к базовой конфигурации (для чтения CompatibilityMode, DefaultLanguage и Language UUID). Без него — [WARN] Language ExtendedConfigurationObject set to zeros.--purpose — назначение (по умолчанию: Customization)--prefix — префикс имён (по умолчанию: из имени с суффиксом _)Антипаттерн (старый синтаксис): --name <Name> и --config <Path> НЕ работают — CLI принимает имя и output как позиционные, а флаг для базовой конфигурации называется --config-path.
Заимствование объекта из базовой конфигурации.
xml-gen extension borrow <extensionPath> <configPath> "<objectSpec>"
Формат objectSpec:
Catalog.Товары — заимствовать объектCatalog.Товары.Form.ФормаЭлемента — заимствовать формуСправочник.Товары — русские синонимы поддерживаютсяCatalog.Товары ;; Document.Заказ — batch (разделитель ;;)Анализ расширения: состав, перехватчики, проверка переноса.
xml-gen extension diff <extensionPath> <configPath> [--mode A|B]
&ИзменениеИКонтроль, проверка #Вставка/#КонецВставки, сверка с базовой конфигурацией.Без флага заимствованная форма не имеет DataPath — form-edit упадёт при попытке вывести реквизит расширения.
# Реквизиты, уже выведенные на форме (рекомендуется)
xml-gen extension borrow <extPath> <configPath> "Catalog.Номенклатура.Form.ФормаЭлемента" --borrow-main-attribute form
# Все реквизиты и табличные части объекта
xml-gen extension borrow <extPath> <configPath> "Catalog.Номенклатура.Form.ФормаЭлемента" --borrow-main-attribute all
form — только реквизиты, уже выведенные на форме (оптимально в большинстве случаев).all — все реквизиты объекта (нужно, если планируешь выводить реквизиты, которых на форме ещё нет).Типовой сценарий: borrow с --borrow-main-attribute form → добавить реквизит → form-edit.
Поведение borrow формы: без --borrow-main-attribute базовые data bindings формы вырезаются, чтобы расширение не ссылалось на отсутствующие реквизиты. С --borrow-main-attribute привязки Объект.* сохраняются, а referenced-реквизиты добираются в объект расширения; picture bindings (RowPictureDataPath, MultipleValuePictureDataPath) всё равно вырезаются.
Важно: если объект уже заимствован — CLI добавляет недостающее, не перезаписывает.
Генерация перехватчика метода в модуле расширения.
xml-gen extension patch-method <extPath> \
--module "Catalog.X.Form.Y" \
--method "ПриЗаписи" \
--type Before|After|Instead|ModificationAndControl \
[--config <configPath>]
Параметры:
<extPath> — путь к каталогу расширения--module — путь к модулю в формате Тип.Имя.ТипМодуля или Тип.Имя.Form.ИмяФормы--method — имя перехватываемого метода типовой конфигурации--type — тип перехвата (см. таблицу)--config — путь к базовой конфигурации (обязателен для ModificationAndControl)Типы перехвата:
| --type | Декоратор BSL | Назначение |
|----------|--------------|------------|
| Before | &Перед | Код до вызова оригинального метода |
| After | &После | Код после вызова оригинального метода |
| Instead | &Вместо | Полная замена оригинального метода |
| ModificationAndControl | &ИзменениеИКонтроль | Копия тела оригинального метода с маркерами вставки |
Маппинг ModulePath → BSL-файл:
| ModulePath | Файл в расширении |
|------------|-------------------|
| Catalog.X.ObjectModule | Catalogs/X/Ext/ObjectModule.bsl |
| Catalog.X.ManagerModule | Catalogs/X/Ext/ManagerModule.bsl |
| Catalog.X.Form.Y | Catalogs/X/Forms/Y/Ext/Form/Module.bsl |
| CommonModule.X | CommonModules/X/Ext/Module.bsl |
| Document.X.ObjectModule | Documents/X/Ext/ObjectModule.bsl |
| Document.X.Form.Y | Documents/X/Forms/Y/Ext/Form/Module.bsl |
| InformationRegister.X.RecordSetModule | InformationRegisters/X/Ext/RecordSetModule.bsl |
Аналогично для Report, DataProcessor и других типов объектов.
Имя процедуры-перехватчика формируется с NamePrefix расширения: Расш1_ПриЗаписи (читается из Configuration.xml расширения).
ModificationAndControl: CLI читает тело оригинального метода из --config и вставляет его с маркерами #Вставка/#КонецВставки. Требует --config.
При существующем файле: дописывает процедуру в конец модуля, не перезаписывает.
Валидация расширения (9 проверок).
xml-gen extension validate <extensionPath>
Проверки: MetaDataObject/Configuration, InternalInfo (7 ClassId), Properties (ObjectBelonging, Name, Purpose, Prefix), enum-значения, ChildObjects, DefaultLanguage, файлы языков, каталоги объектов, заимствованные объекты (ObjectBelonging=Adopted + ExtendedConfigurationObject).
Adopted — заимствованный объект; отсутствие атрибута — собственный.&Перед, &После, &Вместо, &ИзменениеИКонтроль над процедурой с префиксом расширения.#Вставка / #КонецВставки (или #Область <Префикс>_Вставка).development
1C server maintenance webhooks: container restart and external component cache cleanup
development
Interactive DAP debugging of a single BSL procedure
tools
Rules for using RLM tools for project search and navigation in 1C/BSL
development
Creates web applications and routes on Winow (a web server on OneScript and Autumn). Use when working with a web server on OneScript, routing, or Winow controllers.