Cc-1c-skills epf-bsp-init
Добавить функцию регистрации БСП (СведенияОВнешнейОбработке) в модуль объекта обработки
git clone https://github.com/Nikolay-Shirokov/cc-1c-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/Nikolay-Shirokov/cc-1c-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/epf-bsp-init" ~/.claude/skills/nikolay-shirokov-cc-1c-skills-epf-bsp-init && rm -rf "$T"
.claude/skills/epf-bsp-init/SKILL.md/epf-bsp-init — Регистрация обработки в БСП
Добавляет в модуль объекта обработки функцию
СведенияОВнешнейОбработке(), необходимую для регистрации в подсистеме «Дополнительные отчёты и обработки» БСП.
Usage
/epf-bsp-init <ProcessorName> <Вид> [Назначение...]
| Параметр | Обязательный | По умолчанию | Описание |
|---|---|---|---|
| ProcessorName | да | — | Имя обработки (должна быть создана через ) |
| Вид | да | — | Вид обработки (см. маппинг ниже) |
| Назначение | * | — | Объекты метаданных для назначаемых видов |
| SrcDir | нет | | Каталог исходников |
* Назначение обязательно для видов: ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов.
Маппинг вида обработки
Пользователь может указать вид в свободной форме. Определи нужный по контексту:
| Пользователь пишет | Вид | API-метод |
|---|---|---|
| доп обработка, обработка, глобальная | ДополнительнаяОбработка | |
| доп отчёт, глобальный отчёт | ДополнительныйОтчет | |
| заполнение, заполнить | ЗаполнениеОбъекта | |
| отчёт (назначаемый, для объекта) | Отчет | |
| печатная форма, печать | ПечатнаяФорма | |
| создание связанных объектов | СозданиеСвязанныхОбъектов | |
Тип команды по умолчанию
| Вид | ТипКоманды по умолчанию |
|---|---|
| ДополнительнаяОбработка | |
| ДополнительныйОтчет | |
| ЗаполнениеОбъекта | |
| Отчет | |
| ПечатнаяФорма | |
| СозданиеСвязанныхОбъектов | |
Шаблон: СведенияОВнешнейОбработке
Базовый шаблон — одинаковый для всех видов, отличаются только вызовы API-методов и условные секции.
Функция СведенияОВнешнейОбработке() Экспорт МетаданныеОбработки = Метаданные(); ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ВидОбработки}}; ПараметрыРегистрации.Версия = "1.0"; {{СЕКЦИЯ_НАЗНАЧЕНИЕ}} НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = МетаданныеОбработки.Представление(); НоваяКоманда.Идентификатор = МетаданныеОбработки.Имя; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ТипКоманды}}; НоваяКоманда.ПоказыватьОповещение = Ложь; {{СЕКЦИЯ_МОДИФИКАТОР}} Возврат ПараметрыРегистрации; КонецФункции
Подстановки
— API-метод из таблицы маппинга вида{{ВидОбработки}}
— API-метод из таблицы типа команды по умолчанию{{ТипКоманды}}
Условные секции
— только для назначаемых видов (ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов). Одна строка на каждый объект:{{СЕКЦИЯ_НАЗНАЧЕНИЕ}}
ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату");
Формат имени объекта:
ИмяКлассаОбъектаМетаданного.ИмяОбъекта (например Документ.СчетНаОплату, Справочник.Контрагенты).
Для глобальных видов (ДополнительнаяОбработка, ДополнительныйОтчет) — секция не нужна, удалить вместе с пустой строкой.
— только для ПечатнаяФорма:{{СЕКЦИЯ_МОДИФИКАТОР}}
НоваяКоманда.Модификатор = "ПечатьMXL";
Для остальных видов — удалить вместе с пустой строкой.
Шаблоны серверных обработчиков
Для видов с типом команды
ВызовСерверногоМетода добавь соответствующую процедуру-обработчик в ту же область ПрограммныйИнтерфейс, после СведенияОВнешнейОбработке.
Для ЗаполнениеОбъекта / СозданиеСвязанныхОбъектов
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполненияКоманды) Экспорт // TODO: Реализация КонецПроцедуры
Для ПечатнаяФорма
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт // TODO: Реализация КонецПроцедуры
Для ДополнительнаяОбработка / ДополнительныйОтчет (с ВызовСерверногоМетода)
Если пользователь явно выбрал серверный метод вместо открытия формы:
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт // TODO: Реализация КонецПроцедуры
Обрати внимание: у глобальных обработок нет параметра
ОбъектыНазначения.
Инструкции
- Найди
через Glob:ObjectModule.bslsrc/{{ProcessorName}}/Ext/ObjectModule.bsl - Прочитай файл
- Если
уже есть — сообщи пользователю и не дублируйСведенияОВнешнейОбработке - Если файл не найден — предложи сначала вызвать
/epf-init - Найди область
...#Область ПрограммныйИнтерфейс#КонецОбласти - Вставь функцию
внутрь этой областиСведенияОВнешнейОбработке() - Если вид требует серверный обработчик — вставь его тоже в эту область, после функции
- Используй табы для отступов (как в исходном файле)
Пример
Пользователь:
/epf-bsp-init МояОбработка печатная форма для Документ.СчетНаОплату
Результат в
ObjectModule.bsl:
#Область ОписаниеПеременных #КонецОбласти #Область ПрограммныйИнтерфейс Функция СведенияОВнешнейОбработке() Экспорт МетаданныеОбработки = Метаданные(); ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма(); ПараметрыРегистрации.Версия = "1.0"; ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату"); НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = МетаданныеОбработки.Представление(); НоваяКоманда.Идентификатор = МетаданныеОбработки.Имя; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); НоваяКоманда.ПоказыватьОповещение = Ложь; НоваяКоманда.Модификатор = "ПечатьMXL"; Возврат ПараметрыРегистрации; КонецФункции Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт // TODO: Реализация КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции #КонецОбласти
Дальнейшие шаги
- Добавить ещё команду:
/epf-bsp-add-command - Добавить форму:
/epf-add-form - Добавить макет:
/template-add - Собрать EPF:
/epf-build