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

コメント