Adds a command to an existing function СведенияОВнешнейОбработке() and generates the corresponding handler.
First, the processing must be initialized via /epf-bsp-init.
Usage
/epf-bsp-add-command <ProcessorName> <Идентификатор> [ТипКоманды] [Представление]
| Parameter | Required | Default | Description |
|---|---|---|---|
| ProcessorName | yes | — | Processing name |
| Identifier | yes | — | Internal command name (Latin characters) |
| CommandType | no | from the processing type | Command launch type (see the mapping below) |
| Presentation | no | = Identifier | Displayed command name for the user |
| SrcDir | no | src |
Source directory |
Command type mapping
The user can specify the type in free form:
| The user writes | CommandType |
|---|---|
| open form, form | ТипКомандыОткрытиеФормы() |
| client method, on the client | ТипКомандыВызовКлиентскогоМетода() |
| server method, on the server | ТипКомандыВызовСерверногоМетода() |
| form filling, fill form | ТипКомандыЗаполнениеФормы() |
| script, safe mode | ТипКомандыСценарийВБезопасномРежиме() |
If the user has not specified the type — determine it by the processing type from the existing code СведенияОВнешнейОбработке():
| Processing type (from the code) | Default CommandType |
|---|---|
| AdditionalProcessing | ТипКомандыОткрытиеФормы() |
| AdditionalReport | ТипКомандыОткрытиеФормы() |
| ObjectFilling | ТипКомандыВызовСерверногоМетода() |
| Report | ТипКомандыОткрытиеФормы() |
| PrintedForm | ТипКомандыВызовСерверногоМетода() |
| CreatingRelatedObjects | ТипКомандыВызовСерверногоМетода() |
Command addition template
Inserted into СведенияОВнешнейОбработке() before the line Возврат ПараметрыРегистрации:
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = '{{Представление}}'");
НоваяКоманда.Идентификатор = "{{Идентификатор}}";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ТипКоманды}};
НоваяКоманда.ПоказыватьОповещение = Ложь;
For printed forms (ProcessingTypePrintedForm) also add:
НоваяКоманда.Модификатор = "ПечатьMXL";
Note: unlike the first command (from /epf-bsp-init), additional commands use string literals НСтр("ru = '...'") for the presentation and a string for the identifier, rather than Метаданные().
Handler templates
CallServerMethod — if the handler already exists
If the procedure ВыполнитьКоманду already exists in the object module, add a branch before КонецЕсли:
ИначеЕсли ИдентификаторКоманды = "{{Идентификатор}}" Тогда
// TODO: Реализация {{Идентификатор}}
CallServerMethod — if there is no handler
For global処理 (without ОбъектыНазначения):
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
// TODO: Реализация {{Идентификатор}}
КонецЕсли;
КонецПроцедуры
For assigned処理 (with ОбъектыНазначения):
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполненияКоманды) Экспорт
Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
// TODO: Реализация {{Идентификатор}}
КонецЕсли;
КонецПроцедуры
PrintForm — if the procedure Print already exists
Add a block before КонецПроцедуры:
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "{{Идентификатор}}");
Если ПечатнаяФорма <> Неопределено Тогда
ПечатнаяФорма.ТабличныйДокумент = Сформировать{{Идентификатор}}(МассивОбъектов, ОбъектыПечати);
ПечатнаяФорма.СинонимМакета = НСтр("ru = '{{Представление}}'");
КонецЕсли;
PrintForm — if there is no procedure Print
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "{{Идентификатор}}");
Если ПечатнаяФорма <> Неопределено Тогда
ПечатнаяФорма.ТабличныйДокумент = Сформировать{{Идентификатор}}(МассивОбъектов, ОбъектыПечати);
ПечатнаяФорма.СинонимМакета = НСтр("ru = '{{Представление}}'");
КонецЕсли;
КонецПроцедуры
CallClientMethod
Added to form module (Forms/<FormName>/Ext/Form/Module.bsl):
For global処理:
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
// TODO: Реализация {{Идентификатор}}
КонецЕсли;
КонецПроцедуры
For assigned処理:
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
// TODO: Реализация {{Идентификатор}}
КонецЕсли;
КонецПроцедуры
If the procedure already exists — add a branch ИначеЕсли.
Instructions
- Find and read
ObjectModule.bslvia Glob:src/{{ProcessorName}}/Ext/ObjectModule.bsl - Make sure that
СведенияОВнешнейОбработке()exists. If not — suggest calling/epf-bsp-init - Determine the processing type from the existing code (find the line with
ВидОбработки...()) - Insert the command block before
Возврат ПараметрыРегистрации - Add the handler:
- For server handlers — in
ObjectModule.bsl, regionПрограммныйИнтерфейс - For client handlers — in the form module (find via Glob:
src/{{ProcessorName}}/Forms/*/Ext/Form/Module.bsl)
- For server handlers — in
- If the handler (
ВыполнитьКоманду/Печать) already exists — add a branch, do not create a duplicate procedure - Use tabs for indentation
Example
User: /epf-bsp-add-command МояОбработка ЗаказПокупателя серверный "Заказ покупателя"
В СведенияОВнешнейОбработке() before Возврат will be added:
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Заказ покупателя'");
НоваяКоманда.Идентификатор = "ЗаказПокупателя";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Ложь;
НоваяКоманда.Модификатор = "ПечатьMXL";
And to the existing procedure Печать a processing block will be added.