BSP外部处理添加命令Skill epf-bsp-add-command

此技能用于在1C:Enterprise的BSP(业务服务器处理)外部处理中添加新命令,支持多种命令类型如打开表单、服务器方法调用、客户端方法调用、打印表单等,并自动生成BSL代码模板,简化开发流程。适用于1C平台开发者,提高代码编写效率。关键词:1C Enterprise, BSL, 外部处理, 命令添加, 代码生成, 开发工具, 低代码开发。

低代码开发 0 次安装 0 次浏览 更新于 3/20/2026

name: epf-bsp-add-command description: 在BSP额外处理中添加命令 argument-hint: <处理器名称> <标识符> [命令类型] [表示] allowed-tools:

  • 读取
  • 编辑
  • 全局搜索
  • 文本搜索

/epf-bsp-add-command — BSP命令添加

将命令添加到现有函数 СведенияОВнешнейОбработке() 中,并生成相应的处理程序。

预先处理必须通过 /epf-bsp-init 初始化。

用法

/epf-bsp-add-command <处理器名称> <标识符> [命令类型] [表示]
参数 必选 默认值 描述
ProcessorName 处理名称
标识符 命令内部名称(拉丁字母)
命令类型 来自处理类型 命令启动类型(见下方映射)
表示 = 标识符 用户显示的命令名称
SrcDir src 源代码目录

命令类型映射

用户可以自由形式指定类型:

用户输入 命令类型
打开表单, 表单 ТипКомандыОткрытиеФормы()
客户端方法, 在客户端 ТипКомандыВызовКлиентскогоМетода()
服务器方法, 在服务器上 ТипКомандыВызовСерверногоМетода()
填充表单, 填充表单 ТипКомандыЗаполнениеФормы()
脚本, 安全模式 ТипКомандыСценарийВБезопасномРежиме()

如果用户未指定类型,则从现有代码 СведенияОВнешнейОбработке() 中的处理类型确定:

处理类型(来自代码) 默认命令类型
ДополнительнаяОбработка ТипКомандыОткрытиеФормы()
ДополнительныйОтчет ТипКомандыОткрытиеФормы()
ЗаполнениеОбъекта ТипКомандыВызовСерверногоМетода()
Отчет ТипКомандыОткрытиеФормы()
ПечатнаяФорма ТипКомандыВызовСерверногоМетода()
СозданиеСвязанныхОбъектов ТипКомандыВызовСерверногоМетода()

命令添加模板

插入到 СведенияОВнешнейОбработке() 之前Возврат ПараметрыРегистрации

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

对于打印表单(ВидОбработкиПечатнаяФорма)还需添加:

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

注意:与第一个命令(来自 /epf-bsp-init)不同,附加命令使用字符串字面量 НСтр("ru = '...'") 表示表示,字符串表示标识符,而不是 Метаданные()

处理程序模板

ВызовСерверногоМетода — 如果处理程序已存在

如果过程 ВыполнитьКоманду 已在对象模块中存在,在 КонецЕсли 前添加分支:

	ИначеЕсли ИдентификаторКоманды = "{{标识符}}" Тогда
		// TODO: 实现 {{标识符}}

ВызовСерверногоМетода — 如果处理程序不存在

对于全局处理(无 ОбъектыНазначения):

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

	Если ИдентификаторКоманды = "{{标识符}}" Тогда
		// TODO: 实现 {{标识符}}
	КонецЕсли;

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

对于可分配处理(有 ОбъектыНазначения):

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

	Если ИдентификаторКоманды = "{{标识符}}" Тогда
		// TODO: 实现 {{标识符}}
	КонецЕсли;

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

ПечатнаяФорма — 如果过程 Печать 已存在

КонецПроцедуры 前添加块:

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

ПечатнаяФорма — 如果过程 Печать 不存在

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

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

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

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

添加到 表单模块 (Forms/<表单名称>/Ext/Form/Module.bsl):

对于全局处理:

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

	Если ИдентификаторКоманды = "{{标识符}}" Тогда
		// TODO: 实现 {{标识符}}
	КонецЕсли;

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

对于可分配处理:

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

	Если ИдентификаторКоманды = "{{标识符}}" Тогда
		// TODO: 实现 {{标识符}}
	КонецЕсли;

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

如果过程已存在,添加分支 ИначеЕсли

指令

  1. 通过 Glob 查找并读取 ObjectModule.bslsrc/{{处理器名称}}/Ext/ObjectModule.bsl
  2. 确保 СведенияОВнешнейОбработке() 存在。如果不存在,建议调用 /epf-bsp-init
  3. 从现有代码中确定处理类型(查找包含 ВидОбработки...() 的行)
  4. Возврат ПараметрыРегистрации 之前 插入命令块
  5. 添加处理程序:
    • 对于服务器处理程序,在 ObjectModule.bslПрограммныйИнтерфейс 区域
    • 对于客户端处理程序,在表单模块中(通过 Glob 查找:src/{{处理器名称}}/Forms/*/Ext/Form/Module.bsl
  6. 如果处理程序(ВыполнитьКоманду / Печать)已存在,添加分支,不要重复创建过程
  7. 使用制表符进行缩进

示例

用户:/epf-bsp-add-command 我的处理 订单买家 服务器 "订单买家"

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

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

并在现有过程 Печать 中添加处理块。