Skip to main content
skill CX Codex

epf-bsp-init — Claude Code skill: what it does, how to install

Generates the BSP registration function in a 1C processor object module to connect it via the standard reports and data processors subsystem.

Install into Claude Code · Plugin marketplace All methods and platforms ↓
/plugin marketplace add Nikolay-Shirokov/cc-1c-skills
/plugin install 1c-skills@cc-1c-skills
Open on GitHub

What epf-bsp-init does

The skill locates ObjectModule.bsl inside src/<ProcessorName>/Ext/ and inserts the registration export function into the programmatic interface area. It maps user input to standard BSP processor types, sets default execution parameters, and formats the code with tabs.

For assigned types like print forms or object fillers, the skill registers target metadata objects and adds server stubs such as ExecuteCommand or Print. Without source files prepared in advance via /epf-init, the skill halts.

If the registration function is already present in the target module, the skill notifies you and avoids duplicate code.

What it helps with

  • configure an external processor for 1C BSP integration
  • generate the standard metadata registration function
  • create server handler boilerplate for print forms
  • assign target document types to data filling processors

Example prompts for the agent

  • /epf-bsp-init InvoicePrintForm print form Document.Invoice
  • /epf-bsp-init FillOrderData fill Document.CustomerOrder
  • /epf-bsp-init ExportBalances additional processor

How to install epf-bsp-init

1Plugin marketplace

/plugin marketplace add Nikolay-Shirokov/cc-1c-skills
/plugin install 1c-skills@cc-1c-skills

This installs the whole 1c-skills plugin with all its skills

2Skills CLI (Vercel)

npx skills add Nikolay-Shirokov/cc-1c-skills --skill epf-bsp-init -a claude-code

3Manually: put the files in place

~/.claude/skills/epf-bsp-init/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/epf-bsp-init/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about epf-bsp-init

How to install epf-bsp-init in Claude Code?

Run /plugin marketplace add Nikolay-Shirokov/cc-1c-skills and then /plugin install 1c-skills@cc-1c-skills.

What does epf-bsp-init do?

It adds the export registration function and required server handlers to ObjectModule.bsl for integration with 1C standard subsystems.

What if ObjectModule.bsl is missing?

The skill halts and asks you to generate the initial processor structure with /epf-init first.

Source text

SKILL.md · MIT
---
name: epf-bsp-init
description: Сформировать функцию `СведенияОВнешнейОбработке` в модуле объекта обработки — описание для подключения через подсистему БСП «Дополнительные отчёты и обработки». Используй когда нужно сделать обработку совместимой с БСП, подключаемой через «Дополнительные отчёты и обработки»
argument-hint: <ProcessorName> <Вид>
allowed-tools:
  - Read
  - Edit
  - Glob
  - Grep
---

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

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

## Usage

```
/epf-bsp-init <ProcessorName> <Вид> [Назначение...]
```

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

### Подстановки

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

### Условные секции

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

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

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

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

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

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

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

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

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

### Для ЗаполнениеОбъекта

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

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

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

### Для СозданиеСвязанныхОбъектов

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

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

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

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

### Для ПечатнаяФорма

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

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

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

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

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

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

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

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

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

## Инструкции

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

## Пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

© Nikolay Shirokov · MIT · Nikolay-Shirokov/cc-1c-skills

Topics and platforms

SKILL.md skills catalog →

From the same set59

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor