mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-22 04:31:02 +03:00
209 lines
12 KiB
Markdown
209 lines
12 KiB
Markdown
---
|
|
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: Реализация
|
|
|
|
КонецПроцедуры
|
|
```
|
|
|
|
Обрати внимание: у глобальных обработок нет параметра `ОбъектыНазначения`.
|
|
|
|
## Инструкции
|
|
|
|
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`
|