1c-bsp-registration · diff
git:20260309.c8d3b6e to git:20260828.e6ca64d
18 added, 18 removed. Audit A to A.
---
name: 1c-bsp-registration
description: "Добавить функцию регистрации БСП (СведенияОВнешнейОбработке) в модуль объекта обработки"
---
- # /epf-bsp-init — Регистрация обработки в БСП
+ # /epf-bsp-init - Регистрация обработки в БСП
- Добавляет в модуль объекта обработки функцию `СведенияОВнешнейОбработке`, необходимую для регистрации в подсистеме «Дополнительные отчёты и обработки» БСП.
+ Добавляет в модуль объекта обработки функцию `СведенияОВнешнейОбработке`, необходимую для регистрации в подсистеме "Дополнительные отчеты и обработки" БСП.
## Usage
```
/epf-bsp-init <ProcessorName> <Вид> [Назначение...]
```
| Параметр | Обязательный | По умолчанию | Описание |
|---------------|:------------:|--------------|---------------------------------------------------------|
- | ProcessorName | да | — | Имя обработки (должна быть создана через `/epf-init`) |
- | Вид | да | — | Вид обработки (см. маппинг ниже) |
- | Назначение | * | — | Объекты метаданных для назначаемых видов |
+ | ProcessorName | да | - | Имя обработки (должна быть создана через `/epf-init`) |
+ | Вид | да | - | Вид обработки (см. маппинг ниже) |
+ | Назначение | * | - | Объекты метаданных для назначаемых видов |
| SrcDir | нет | `src` | Каталог исходников |
\* Назначение обязательно для видов: ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов.
## Маппинг вида обработки
Пользователь может указать вид в свободной форме. Определи нужный по контексту:
| Пользователь пишет | Вид | API-метод |
|-------------------------------------------|----------------------------|----------------------------------------------|
| доп обработка, обработка, глобальная | ДополнительнаяОбработка | `ВидОбработкиДополнительнаяОбработка` |
- | доп отчёт, глобальный отчёт | ДополнительныйОтчет | `ВидОбработкиДополнительныйОтчет` |
+ | доп отчет, глобальный отчет | ДополнительныйОтчет | `ВидОбработкиДополнительныйОтчет` |
| заполнение, заполнить | ЗаполнениеОбъекта | `ВидОбработкиЗаполнениеОбъекта` |
- | отчёт (назначаемый, для объекта) | Отчет | `ВидОбработкиОтчет` |
+ | отчет (назначаемый, для объекта) | Отчет | `ВидОбработкиОтчет` |
| печатная форма, печать | ПечатнаяФорма | `ВидОбработкиПечатнаяФорма` |
| создание связанных объектов | СозданиеСвязанныхОбъектов | `ВидОбработкиСозданиеСвязанныхОбъектов` |
## Тип команды по умолчанию
| Вид | ТипКоманды по умолчанию |
|----------------------------|-------------------------------------------|
| ДополнительнаяОбработка | `ТипКомандыОткрытиеФормы` |
| ДополнительныйОтчет | `ТипКомандыОткрытиеФормы` |
| ЗаполнениеОбъекта | `ТипКомандыВызовСерверногоМетода` |
| Отчет | `ТипКомандыОткрытиеФормы` |
| ПечатнаяФорма | `ТипКомандыВызовСерверногоМетода` |
| СозданиеСвязанныхОбъектов | `ТипКомандыВызовСерверногоМетода` |
## Шаблон: СведенияОВнешнейОбработке
- Базовый шаблон — одинаковый для всех видов, отличаются только вызовы API-методов и условные секции.
+ Базовый шаблон - одинаковый для всех видов, отличаются только вызовы API-методов и условные секции.
```bsl
Функция СведенияОВнешнейОбработке Экспорт
МетаданныеОбработки = Метаданные;
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ВидОбработки}};
ПараметрыРегистрации.Версия = "1.0";
{{СЕКЦИЯ_НАЗНАЧЕНИЕ}}
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить;
НоваяКоманда.Представление = МетаданныеОбработки.Представление;
НоваяКоманда.Идентификатор = МетаданныеОбработки.Имя;
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ТипКоманды}};
НоваяКоманда.ПоказыватьОповещение = Ложь;
{{СЕКЦИЯ_МОДИФИКАТОР}}
Возврат ПараметрыРегистрации;
КонецФункции
```
### Подстановки
- - `{{ВидОбработки}}` — API-метод из таблицы маппинга вида
- - `{{ТипКоманды}}` — API-метод из таблицы типа команды по умолчанию
+ - `{{ВидОбработки}}` - 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`
+ 3. Если `СведенияОВнешнейОбработке` уже есть - сообщи пользователю и не дублируй
+ 4. Если файл не найден - предложи сначала вызвать `/epf-init`
5. Найди область `#Область ПрограммныйИнтерфейс` ... `#КонецОбласти`
6. Вставь функцию `СведенияОВнешнейОбработке` внутрь этой области
- 7. Если вид требует серверный обработчик — вставь его тоже в эту область, после функции
+ 7. Если вид требует серверный обработчик - вставь его тоже в эту область, после функции
8. Используй табы для отступов (как в исходном файле)
## Пример
Пользователь: `/epf-bsp-init МояОбработка печатная форма для Документ.СчетНаОплату`
Результат в `ObjectModule.bsl`:
```bsl
#Область ОписаниеПеременных
#КонецОбласти
#Область ПрограммныйИнтерфейс
Функция СведенияОВнешнейОбработке Экспорт
МетаданныеОбработки = Метаданные;
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма;
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплату");
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить;
НоваяКоманда.Представление = МетаданныеОбработки.Представление;
НоваяКоманда.Идентификатор = МетаданныеОбработки.Имя;
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода;
НоваяКоманда.ПоказыватьОповещение = Ложь;
НоваяКоманда.Модификатор = "ПечатьMXL";
Возврат ПараметрыРегистрации;
КонецФункции
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
// TODO: Реализация
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти
```
## Дальнейшие шаги
- - Добавить ещё команду: `/epf-bsp-add-command`
+ - Добавить еще команду: `/epf-bsp-add-command`
- Добавить форму: `/epf-add-form`
- Добавить макет: `/template-add`
- Собрать EPF: `/epf-build`