mcpField
E
epf-bsp-init

epf-bsp-init

github.com/nikolay-shirokov开发74153 次安装今天更新
代码仓库

关于 epf-bsp-init

用于在 1C:Enterprise 外部处理模块中添加 БСП 注册函数的开发技能,使处理能够注册到“附加报表和处理”子系统。它按处理类型生成注册代码,并为需要的类型创建服务器处理程序。

主要功能

  1. 01生成 БСП 注册函数
  2. 02支持多种处理类型
  3. 03按需设置元数据对象用途
  4. 04生成服务器处理程序

适用场景

  1. 01初始化外部处理的 БСП 注册
  2. 02为报表或打印表单设置适用对象
  3. 03为处理类型生成服务器处理程序

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nikolay-shirokov/cc-1c-skills --skill epf-bsp-init

安装后在 Claude Code 中输入/epf-bsp-init确认已加载。

README 原文English

来自项目 README

README 暂无中文译文,以下为英文原文;中文介绍见上方。

/epf-bsp-init — Регистрация обработки в БСП

Добавляет в модуль объекта обработки функцию СведенияОВнешнейОбработке(), необходимую для регистрации в подсистеме «Дополнительные отчёты и обработки» БСП.

Usage

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

* Назначение обязательно для видов: ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов.

Маппинг вида обработки

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

Пользователь пишетВидAPI-метод
доп обработка, обработка, глобальнаяДополнительнаяОбработкаВидОбработкиДополнительнаяОбработка()
доп отчёт, глобальный отчётДополнительныйОтчетВидОбработкиДополнительныйОтчет()
заполнение, заполнитьЗаполнениеОбъектаВидОбработкиЗаполнениеОбъекта()
отчёт (назначаемый, для объекта)ОтчетВидОбработкиОтчет()
печатная форма, печатьПечатнаяФормаВидОбработкиПечатнаяФорма()
создание связанных объектовСозданиеСвязанныхОбъектовВидОбработкиСозданиеСвязанныхОбъектов()

Тип команды по умолчанию

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

Шаблон: СведенияОВнешнейОбработке

Базовый шаблон — одинаковый для всех видов, отличаются только вызовы API-методов и условные секции.

Функция СведенияОВнешнейОбработке() Экспорт

	МетаданныеОбработки = Метаданные();

	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
	ПараметрыРегистрации.Вид    = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ВидОбработки}};
	ПараметрыРегистрации.Версия = "1.0";

	{{СЕКЦИЯ_НАЗНАЧЕНИЕ}}

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

	Возврат ПараметрыРегистрации;

КонецФункции
Подстановки
  • {{ВидОбработки}} — API-метод из таблицы маппинга вида
  • {{ТипКоманды}} — API-метод из таблицы типа команды по умолчанию
Условные секции

{{СЕКЦИЯ_НАЗНАЧЕНИЕ}} — только для назначаемых видов (ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов). Одна строка на каждый объект:

	ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату");

Формат имени объекта: ИмяКлассаОбъектаМетаданного.ИмяОбъекта (например Документ.СчетНаОплату, Справочник.Контрагенты).

Для глобальных видов (ДополнительнаяОбработка, ДополнительныйОтчет) — секция не нужна, удалить вместе с пустой строкой.

{{СЕКЦИЯ_МОДИФИКАТОР}} — только для ПечатнаяФорма:

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

Для остальных видов — удалить вместе с пустой строкой.

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

Для видов с типом команды ВызовСерверногоМетода добавь соответствующую процедуру-обработчик в ту же область ПрограммныйИнтерфейс, после СведенияОВнешнейОбработке.

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

	// TODO: Реализация

КонецПроцедуры
Для СозданиеСвязанныхОбъектов

Ссылки созданных объектов добавляются в массив СозданныеОбъекты:

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

	// TODO: Реализация

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

	// TODO: Реализация

КонецПроцедуры
Для ДополнительнаяОбработка / ДополнительныйОтчет (с ВызовСерверногоМетода)

Если пользователь явно выбрал серверный метод вместо открытия формы:

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

	// TODO: Реализация

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

Обрати внимание: у глобальных обработок нет параметра ОбъектыНазначения.

Инструкции

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

Пример

Пользователь: /epf-bsp-init МояОбработка печатная форма для Документ.СчетНаОплату

Результат в ObjectModule.bsl:

#Область ОписаниеПеременных

#КонецОбласти

#Область ПрограммныйИнтерфейс

Функция СведенияОВнешнейОбработке() Экспорт

	МетаданныеОбработки = Метаданные();

	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
	ПараметрыРегистрации.Вид    = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
	ПараметрыРегистрации.Версия = "1.0";

	ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату");

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

	Возврат ПараметрыРегистрации;

КонецФункции

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

	// TODO: Реализация

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#КонецОбласти

Дальнейшие шаги

  • Добавить ещё команду: /epf-bsp-add-command
  • Добавить форму: /form-add
  • Добавить макет: /template-add
  • Собрать EPF: /epf-build

评论

支持 Markdown