/epf-bsp-init - Регистрация обработки в БСП
Добавляет в модуль объекта обработки функцию СведенияОВнешнейОбработке(), необходимую для регистрации в подсистеме "Дополнительные отчеты и обработки" БСП.
Usage
/epf-bsp-init <ProcessorName> <Вид> [Назначение...]
| Параметр | Обязательный | По умолчанию | Описание |
|---|---|---|---|
| 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: Реализация КонецПроцедуры
Для ДополнительнаяОбработка / ДополнительныйОтчет (с ВызовСерверногоМетода)
Если пользователь явно выбрал серверный метод вместо открытия формы:
bslПроцедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт // TODO: Реализация КонецПроцедуры
Обрати внимание: у глобальных обработок нет параметра ОбъектыНазначения.
Инструкции
- Найди
ObjectModule.bslчерез Glob:src/{{ProcessorName}}/Ext/ObjectModule.bsl - Прочитай файл
- Если
СведенияОВнешнейОбработкеуже есть - сообщи пользователю и не дублируй - Если файл не найден - предложи сначала вызвать
/epf-init - Найди область
#Область ПрограммныйИнтерфейс...#КонецОбласти - Вставь функцию
СведенияОВнешнейОбработке()внутрь этой области - Если вид требует серверный обработчик - вставь его тоже в эту область, после функции
- Используй табы для отступов (как в исходном файле)
Пример
Пользователь: /epf-bsp-init МояОбработка печатная форма для Документ.СчетНаОплату
Результат в ObjectModule.bsl:
bsl#Область ОписаниеПеременных #КонецОбласти #Область ПрограммныйИнтерфейс Функция СведенияОВнешнейОбработке() Экспорт МетаданныеОбработки = Метаданные(); ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма(); ПараметрыРегистрации.Версия = "1.0"; ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату"); НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = МетаданныеОбработки.Представление(); НоваяКоманда.Идентификатор = МетаданныеОбработки.Имя; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); НоваяКоманда.ПоказыватьОповещение = Ложь; НоваяКоманда.Модификатор = "ПечатьMXL"; Возврат ПараметрыРегистрации; КонецФункции Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт // TODO: Реализация КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции #КонецОбласти
Дальнейшие шаги
- Добавить еще команду:
/epf-bsp-add-command - Добавить форму:
/epf-add-form - Добавить макет:
/template-add - Собрать EPF:
/epf-build


