epf-bsp-add-command

SKILL.md

/epf-bsp-add-command — Добавление команды БСП

Добавляет команду в существующую функцию СведенияОВнешнейОбработке() и генерирует соответствующий обработчик.

Предварительно обработка должна быть инициализирована через /epf-bsp-init.

Usage

/epf-bsp-add-command <ProcessorName> <Идентификатор> [ТипКоманды] [Представление]
Параметр Обязательный По умолчанию Описание
ProcessorName да Имя обработки
Идентификатор да Внутреннее имя команды (латиница)
ТипКоманды нет из вида обработки Тип запуска команды (см. маппинг ниже)
Представление нет = Идентификатор Отображаемое имя команды для пользователя
SrcDir нет src Каталог исходников

Маппинг типов команд

Пользователь может указать тип в свободной форме:

Пользователь пишет ТипКоманды
открыть форму, форма ТипКомандыОткрытиеФормы()
клиентский метод, на клиенте ТипКомандыВызовКлиентскогоМетода()
серверный метод, на сервере ТипКомандыВызовСерверногоМетода()
заполнение формы, заполнить форму ТипКомандыЗаполнениеФормы()
сценарий, безопасный режим ТипКомандыСценарийВБезопасномРежиме()

Если пользователь не указал тип — определи по виду обработки из существующего кода СведенияОВнешнейОбработке():

Вид обработки (из кода) ТипКоманды по умолчанию
ДополнительнаяОбработка ТипКомандыОткрытиеФормы()
ДополнительныйОтчет ТипКомандыОткрытиеФормы()
ЗаполнениеОбъекта ТипКомандыВызовСерверногоМетода()
Отчет ТипКомандыОткрытиеФормы()
ПечатнаяФорма ТипКомандыВызовСерверногоМетода()
СозданиеСвязанныхОбъектов ТипКомандыВызовСерверногоМетода()

Шаблон добавления команды

Вставляется в СведенияОВнешнейОбработке() перед строкой Возврат ПараметрыРегистрации:

	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление        = НСтр("ru = '{{Представление}}'");
	НоваяКоманда.Идентификатор        = "{{Идентификатор}}";
	НоваяКоманда.Использование        = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ТипКоманды}};
	НоваяКоманда.ПоказыватьОповещение = Ложь;

Для печатных форм (ВидОбработкиПечатнаяФорма) добавь также:

	НоваяКоманда.Модификатор = "ПечатьMXL";

Примечание: в отличие от первой команды (из /epf-bsp-init), дополнительные команды используют строковые литералы НСтр("ru = '...'") для представления и строку для идентификатора, а не Метаданные().

Шаблоны обработчиков

ВызовСерверногоМетода — если обработчик уже есть

Если процедура ВыполнитьКоманду уже существует в модуле объекта, добавь ветку перед КонецЕсли:

	ИначеЕсли ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}

ВызовСерверногоМетода — если обработчика нет

Для глобальных обработок (без ОбъектыНазначения):

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}
	КонецЕсли;

КонецПроцедуры

Для назначаемых обработок (с ОбъектыНазначения):

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполненияКоманды) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}
	КонецЕсли;

КонецПроцедуры

ПечатнаяФорма — если процедура Печать уже есть

Добавь блок перед КонецПроцедуры:

	ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "{{Идентификатор}}");
	Если ПечатнаяФорма <> Неопределено Тогда
		ПечатнаяФорма.ТабличныйДокумент = Сформировать{{Идентификатор}}(МассивОбъектов, ОбъектыПечати);
		ПечатнаяФорма.СинонимМакета = НСтр("ru = '{{Представление}}'");
	КонецЕсли;

ПечатнаяФорма — если процедуры Печать нет

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

	ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "{{Идентификатор}}");
	Если ПечатнаяФорма <> Неопределено Тогда
		ПечатнаяФорма.ТабличныйДокумент = Сформировать{{Идентификатор}}(МассивОбъектов, ОбъектыПечати);
		ПечатнаяФорма.СинонимМакета = НСтр("ru = '{{Представление}}'");
	КонецЕсли;

КонецПроцедуры

ВызовКлиентскогоМетода

Добавляется в модуль формы (Forms/<FormName>/Ext/Form/Module.bsl):

Для глобальных обработок:

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}
	КонецЕсли;

КонецПроцедуры

Для назначаемых обработок:

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт

	Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
		// TODO: Реализация {{Идентификатор}}
	КонецЕсли;

КонецПроцедуры

Если процедура уже есть — добавь ветку ИначеЕсли.

Инструкции

  1. Найди и прочитай ObjectModule.bsl через Glob: src/{{ProcessorName}}/Ext/ObjectModule.bsl
  2. Убедись что СведенияОВнешнейОбработке() существует. Если нет — предложи вызвать /epf-bsp-init
  3. Определи вид обработки из существующего кода (найди строку с ВидОбработки...())
  4. Вставь блок команды перед Возврат ПараметрыРегистрации
  5. Добавь обработчик:
    • Для серверных обработчиков — в ObjectModule.bsl, область ПрограммныйИнтерфейс
    • Для клиентских обработчиков — в модуль формы (найти через Glob: src/{{ProcessorName}}/Forms/*/Ext/Form/Module.bsl)
  6. Если обработчик (ВыполнитьКоманду / Печать) уже есть — добавь ветку, не создавай дубль процедуры
  7. Используй табы для отступов

Пример

Пользователь: /epf-bsp-add-command МояОбработка ЗаказПокупателя серверный "Заказ покупателя"

В СведенияОВнешнейОбработке() перед Возврат добавится:

	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление        = НСтр("ru = 'Заказ покупателя'");
	НоваяКоманда.Идентификатор        = "ЗаказПокупателя";
	НоваяКоманда.Использование        = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.ПоказыватьОповещение = Ложь;
	НоваяКоманда.Модификатор = "ПечатьMXL";

И в существующую процедуру Печать добавится блок обработки.

Weekly Installs
5
GitHub Stars
89
First Seen
Feb 26, 2026
Installed on
opencode5
gemini-cli5
github-copilot5
codex5
amp5
kimi-cli5