1c-bsp-command · git:20260428.c3dfb0e · 2026-04-28 · sha256 e72f6b0476477b82
1c-bsp-command git:20260428.c3dfb0eA
Immutable. This exact content is served forever at /api/v1/blob/e72f6b0476477b82.
---
name: 1c-bsp-command
description: "Добавить команду в дополнительную обработку БСП"
---
# /epf-bsp-add-command — Добавление команды БСП
Добавляет команду в существующую функцию `СведенияОВнешнейОбработке` и генерирует соответствующий обработчик.
Предварительно обработка должна быть инициализирована через `/epf-bsp-init`.
## Usage
```
/epf-bsp-add-command <ProcessorName> <Идентификатор> [ТипКоманды] [Представление]
```
| Параметр | Обязательный | По умолчанию | Описание |
|---------------|:------------:|-----------------------|--------------------------------------------|
| ProcessorName | да | — | Имя обработки |
| Идентификатор | да | — | Внутреннее имя команды (латиница) |
| ТипКоманды | нет | из вида обработки | Тип запуска команды (см. маппинг ниже) |
| Представление | нет | = Идентификатор | Отображаемое имя команды для пользователя |
| SrcDir | нет | `src` | Каталог исходников |
## Маппинг типов команд
Пользователь может указать тип в свободной форме:
| Пользователь пишет | ТипКоманды |
|---------------------------------------|-----------------------------------------------------|
| открыть форму, форма | `ТипКомандыОткрытиеФормы` |
| клиентский метод, на клиенте | `ТипКомандыВызовКлиентскогоМетода` |
| серверный метод, на сервере | `ТипКомандыВызовСерверногоМетода` |
| заполнение формы, заполнить форму | `ТипКомандыЗаполнениеФормы` |
| сценарий, безопасный режим | `ТипКомандыСценарийВБезопасномРежиме` |
Если пользователь не указал тип — определи по виду обработки из существующего кода `СведенияОВнешнейОбработке`:
| Вид обработки (из кода) | ТипКоманды по умолчанию |
|----------------------------|-------------------------------------------|
| ДополнительнаяОбработка | `ТипКомандыОткрытиеФормы` |
| ДополнительныйОтчет | `ТипКомандыОткрытиеФормы` |
| ЗаполнениеОбъекта | `ТипКомандыВызовСерверногоМетода` |
| Отчет | `ТипКомандыОткрытиеФормы` |
| ПечатнаяФорма | `ТипКомандыВызовСерверногоМетода` |
| СозданиеСвязанныхОбъектов | `ТипКомандыВызовСерверногоМетода` |
## Шаблон добавления команды
Вставляется в `СведенияОВнешнейОбработке` **перед** строкой `Возврат ПараметрыРегистрации`:
```bsl
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить;
НоваяКоманда.Представление = НСтр("ru = '{{Представление}}'");
НоваяКоманда.Идентификатор = "{{Идентификатор}}";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.{{ТипКоманды}};
НоваяКоманда.ПоказыватьОповещение = Ложь;
```
Для печатных форм (ВидОбработкиПечатнаяФорма) добавь также:
```bsl
НоваяКоманда.Модификатор = "ПечатьMXL";
```
Примечание: в отличие от первой команды (из `/epf-bsp-init`), дополнительные команды используют строковые литералы `НСтр("ru = '...'")` для представления и строку для идентификатора, а не `Метаданные`.
## Шаблоны обработчиков
### ВызовСерверногоМетода — если обработчик уже есть
Если процедура `ВыполнитьКоманду` уже существует в модуле объекта, добавь ветку перед `КонецЕсли`:
```bsl
ИначеЕсли ИдентификаторКоманды = "{{Идентификатор}}" Тогда
// TODO: Реализация {{Идентификатор}}
```
### ВызовСерверногоМетода — если обработчика нет
Для глобальных обработок (без `ОбъектыНазначения`):
```bsl
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
// TODO: Реализация {{Идентификатор}}
КонецЕсли;
КонецПроцедуры
```
Для назначаемых обработок (с `ОбъектыНазначения`):
```bsl
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполненияКоманды) Экспорт
Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
// TODO: Реализация {{Идентификатор}}
КонецЕсли;
КонецПроцедуры
```
### ПечатнаяФорма — если процедура Печать уже есть
Добавь блок перед `КонецПроцедуры`:
```bsl
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "{{Идентификатор}}");
Если ПечатнаяФорма <> Неопределено Тогда
ПечатнаяФорма.ТабличныйДокумент = Сформировать{{Идентификатор}}(МассивОбъектов, ОбъектыПечати);
ПечатнаяФорма.СинонимМакета = НСтр("ru = '{{Представление}}'");
КонецЕсли;
```
### ПечатнаяФорма — если процедуры Печать нет
```bsl
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "{{Идентификатор}}");
Если ПечатнаяФорма <> Неопределено Тогда
ПечатнаяФорма.ТабличныйДокумент = Сформировать{{Идентификатор}}(МассивОбъектов, ОбъектыПечати);
ПечатнаяФорма.СинонимМакета = НСтр("ru = '{{Представление}}'");
КонецЕсли;
КонецПроцедуры
```
### ВызовКлиентскогоМетода
Добавляется в **модуль формы** (`Forms/<FormName>/Ext/Form/Module.bsl`):
Для глобальных обработок:
```bsl
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
// TODO: Реализация {{Идентификатор}}
КонецЕсли;
КонецПроцедуры
```
Для назначаемых обработок:
```bsl
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
Если ИдентификаторКоманды = "{{Идентификатор}}" Тогда
// TODO: Реализация {{Идентификатор}}
КонецЕсли;
КонецПроцедуры
```
Если процедура уже есть — добавь ветку `ИначеЕсли`.
## Инструкции
1. Найди и прочитай `ObjectModule.bsl` через Glob: `src/{{ProcessorName}}/Ext/ObjectModule.bsl`
2. Убедись что `СведенияОВнешнейОбработке` существует. Если нет — предложи вызвать `/epf-bsp-init`
3. Определи вид обработки из существующего кода (найди строку с `ВидОбработки...`)
4. Вставь блок команды **перед** `Возврат ПараметрыРегистрации`
5. Добавь обработчик:
- Для серверных обработчиков — в `ObjectModule.bsl`, область `ПрограммныйИнтерфейс`
- Для клиентских обработчиков — в модуль формы (найти через Glob: `src/{{ProcessorName}}/Forms/*/Ext/Form/Module.bsl`)
6. Если обработчик (`ВыполнитьКоманду` / `Печать`) уже есть — добавь ветку, не создавай дубль процедуры
7. Используй табы для отступов
## Пример
Пользователь: `/epf-bsp-add-command МояОбработка ЗаказПокупателя серверный "Заказ покупателя"`
В `СведенияОВнешнейОбработке` перед `Возврат` добавится:
```bsl
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить;
НоваяКоманда.Представление = НСтр("ru = 'Заказ покупателя'");
НоваяКоманда.Идентификатор = "ЗаказПокупателя";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода;
НоваяКоманда.ПоказыватьОповещение = Ложь;
```
И в существующую процедуру `ВыполнитьКоманду` добавится блок обработки.