# 1c Bsp Registration

> Добавить функцию регистрации БСП (СведенияОВнешнейОбработке) в модуль объекта обработки

- Skill: `desko77/1c-bsp-registration` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add desko77/1c-bsp-registration`
- Raw SKILL.md: https://api.skillmd.com/api/skills/desko77/1c-bsp-registration/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Desko77 (https://skillmd.com/u/desko77)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/desko77/1c-bsp-registration

---


# /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: Реализация

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

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

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

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`
- Добавить форму: `/epf-add-form`
- Добавить макет: `/template-add`
- Собрать EPF: `/epf-build`

