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

SkillDev tools

Add a command to a standard subsystem (BSP) add-in

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the /epf-bsp-add-command - Добавление команды БСП skill

What this skill tells your AI

The instructions your AI receives, as published by desko77/cursor-1c-skills in skills/1c-bsp-command/SKILL.md and read by ahel’s review.

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

Предварительно обработка должна быть инициализирована через /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)
  1. Если обработчик (ВыполнитьКоманду / Печать) уже есть - добавь ветку, не создавай дубль процедуры
  2. Используй табы для отступов

Пример

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

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

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

И в существующую процедуру ВыполнитьКоманду добавится блок обработки.

Signals

GitHub stars
57
Forks
13
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
x-1c-bsp-command-desko77
Source
github.com/desko77/cursor-1c-skills