Skip to content
Back to skills

Epf Bsp Add Command

ASecurity

Определить команду в БСП‑описании обработки (`СведенияОВнешнейОбработке`) — открытие формы, вызов клиентского/серверного метода, заполнение объекта и т.п. Используй когда нужно зарегистрировать команду в дополнительной обработке БСП

  • 213 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 11, 2026
tools

Security analysis

A100/100

Scanned June 11, 2026

npx -y skills add IngvarConsulting/unica --skill epf-bsp-add-command --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Epf Bsp Add Command?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Epf Bsp Add Command
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ingvarconsulting-epf-bsp-add-command/badge)](https://www.skillsdirectory.com/skills/ingvarconsulting-epf-bsp-add-command)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: epf-bsp-add-command
description: Определить команду в БСП‑описании обработки (`СведенияОВнешнейОбработке`) — открытие формы, вызов клиентского/серверного метода, заполнение объекта и т.п. Используй когда нужно зарегистрировать команду в дополнительной обработке БСП
argument-hint: <ProcessorName> <Идентификатор> [ТипКоманды] [Представление]
allowed-tools:
  - Read
  - Edit
  - Glob
  - Grep
---

# /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 = 'Заказ покупателя'");
	НоваяКоманда.Идентификатор        = "ЗаказПокупателя";
	НоваяКоманда.Использование        = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.ПоказыватьОповещение = Ложь;
```

И в существующую процедуру `ВыполнитьКоманду` добавится блок обработки.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…