--- name: epf-bsp-init description: Сформировать функцию `СведенияОВнешнейОбработке` в модуле объекта обработки — описание для подключения через подсистему БСП «Дополнительные отчёты и обработки». Используй когда нужно сделать обработку совместимой с БСП, подключаемой через «Дополнительные отчёты и обработки» argument-hint: <Вид> allowed-tools: - Read - Edit - Glob - Grep --- # /epf-bsp-init — Регистрация обработки в БСП Добавляет в модуль объекта обработки функцию `СведенияОВнешнейОбработке()`, необходимую для регистрации в подсистеме «Дополнительные отчёты и обработки» БСП. ## Usage ``` /epf-bsp-init <Вид> [Назначение...] ``` | Параметр | Обязательный | По умолчанию | Описание | |---------------|:------------:|--------------|---------------------------------------------------------| | ProcessorName | да | — | Имя обработки (должна быть создана через `/epf-init`) | | Вид | да | — | Вид обработки (см. маппинг ниже) | | Назначение | * | — | Объекты метаданных для назначаемых видов | | SrcDir | нет | `src` | Каталог исходников | \* Назначение обязательно для видов: ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов. ## Маппинг вида обработки Пользователь может указать вид в свободной форме. Определи нужный по контексту: | Пользователь пишет | Вид | API-метод | |-------------------------------------------|----------------------------|----------------------------------------------| | доп обработка, обработка, глобальная | ДополнительнаяОбработка | `ВидОбработкиДополнительнаяОбработка()` | | доп отчёт, глобальный отчёт | ДополнительныйОтчет | `ВидОбработкиДополнительныйОтчет()` | | заполнение, заполнить | ЗаполнениеОбъекта | `ВидОбработкиЗаполнениеОбъекта()` | | отчёт (назначаемый, для объекта) | Отчет | `ВидОбработкиОтчет()` | | печатная форма, печать | ПечатнаяФорма | `ВидОбработкиПечатнаяФорма()` | | создание связанных объектов | СозданиеСвязанныхОбъектов | `ВидОбработкиСозданиеСвязанныхОбъектов()` | ## Тип команды по умолчанию | Вид | ТипКоманды по умолчанию | |----------------------------|-------------------------------------------| | ДополнительнаяОбработка | `ТипКомандыОткрытиеФормы()` | | ДополнительныйОтчет | `ТипКомандыОткрытиеФормы()` | | ЗаполнениеОбъекта | `ТипКомандыВызовСерверногоМетода()` | | Отчет | `ТипКомандыОткрытиеФормы()` | | ПечатнаяФорма | `ТипКомандыВызовСерверногоМетода()` | | СозданиеСвязанныхОбъектов | `ТипКомандыВызовСерверногоМетода()` | ## Шаблон: СведенияОВнешнейОбработке Базовый шаблон — одинаковый для всех видов, отличаются только вызовы API-методов и условные секции. ```bsl Функция СведенияОВнешнейОбработке() Экспорт МетаданныеОбработки = Метаданные(); ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ВидОбработки}}; ПараметрыРегистрации.Версия = "1.0"; {{СЕКЦИЯ_НАЗНАЧЕНИЕ}} НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = МетаданныеОбработки.Представление(); НоваяКоманда.Идентификатор = МетаданныеОбработки.Имя; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ТипКоманды}}; НоваяКоманда.ПоказыватьОповещение = Ложь; {{СЕКЦИЯ_МОДИФИКАТОР}} Возврат ПараметрыРегистрации; КонецФункции ``` ### Подстановки - `{{ВидОбработки}}` — API-метод из таблицы маппинга вида - `{{ТипКоманды}}` — API-метод из таблицы типа команды по умолчанию ### Условные секции **`{{СЕКЦИЯ_НАЗНАЧЕНИЕ}}`** — только для назначаемых видов (ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов). Одна строка на каждый объект: ```bsl ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату"); ``` Формат имени объекта: `ИмяКлассаОбъектаМетаданного.ИмяОбъекта` (например `Документ.СчетНаОплату`, `Справочник.Контрагенты`). Для глобальных видов (ДополнительнаяОбработка, ДополнительныйОтчет) — секция не нужна, удалить вместе с пустой строкой. **`{{СЕКЦИЯ_МОДИФИКАТОР}}`** — только для ПечатнаяФорма: ```bsl НоваяКоманда.Модификатор = "ПечатьMXL"; ``` Для остальных видов — удалить вместе с пустой строкой. ## Шаблоны серверных обработчиков Для видов с типом команды `ВызовСерверногоМетода` добавь соответствующую процедуру-обработчик в ту же область `ПрограммныйИнтерфейс`, после `СведенияОВнешнейОбработке`. ### Для ЗаполнениеОбъекта / СозданиеСвязанныхОбъектов ```bsl Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполненияКоманды) Экспорт // TODO: Реализация КонецПроцедуры ``` ### Для ПечатнаяФорма ```bsl Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт // TODO: Реализация КонецПроцедуры ``` ### Для ДополнительнаяОбработка / ДополнительныйОтчет (с ВызовСерверногоМетода) Если пользователь явно выбрал серверный метод вместо открытия формы: ```bsl Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт // TODO: Реализация КонецПроцедуры ``` Обрати внимание: у глобальных обработок нет параметра `ОбъектыНазначения`. ## Инструкции 1. Найди `ObjectModule.bsl` через Glob: `src/{{ProcessorName}}/Ext/ObjectModule.bsl` 2. Прочитай файл 3. Если `СведенияОВнешнейОбработке` уже есть — сообщи пользователю и не дублируй 4. Если файл не найден — предложи сначала вызвать `/epf-init` 5. Найди область `#Область ПрограммныйИнтерфейс` ... `#КонецОбласти` 6. Вставь функцию `СведенияОВнешнейОбработке()` внутрь этой области 7. Если вид требует серверный обработчик — вставь его тоже в эту область, после функции 8. Используй табы для отступов (как в исходном файле) ## Пример Пользователь: `/epf-bsp-init МояОбработка печатная форма для Документ.СчетНаОплату` Результат в `ObjectModule.bsl`: ```bsl #Область ОписаниеПеременных #КонецОбласти #Область ПрограммныйИнтерфейс Функция СведенияОВнешнейОбработке() Экспорт МетаданныеОбработки = Метаданные(); ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма(); ПараметрыРегистрации.Версия = "1.0"; ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату"); НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = МетаданныеОбработки.Представление(); НоваяКоманда.Идентификатор = МетаданныеОбработки.Имя; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); НоваяКоманда.ПоказыватьОповещение = Ложь; НоваяКоманда.Модификатор = "ПечатьMXL"; Возврат ПараметрыРегистрации; КонецФункции Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт // TODO: Реализация КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции #КонецОбласти ``` ## Дальнейшие шаги - Добавить ещё команду: `/epf-bsp-add-command` - Добавить форму: `/form-add` - Добавить макет: `/template-add` - Собрать EPF: `/epf-build`