--- title: Механизм доп.отчетов и обработок slug: общие-подключение-объектов-к-бсп-подключение-к-подсистемам/механизм-доп-отчетов-и-обработок --- # Постановка задачи Есть подсистема `МояПодсистема`, в которой необходимо реализовать размещение дополнительных отчетов и обработок # Шаг 1 Создаем общие команды: - `ДополнительныеОбработки_МояПодсистема`, размещаем в группе `Панель действий.Сервис` - `ДополнительныеОтчеты_МояПодсистема`, размещаем в группе `Панель действий.Отчеты` В команде `ДополнительныеОбработки_МояПодсистема` прописываем ```bsl #Область ОбработчикиСобытий &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок( ПараметрКоманды, ПараметрыВыполненияКоманды, ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(), "МояПодсистема"); КонецПроцедуры #КонецОбласти ``` В команде `ДополнительныеОтчеты_МояПодсистема` прописываем ```bsl #Область ОбработчикиСобытий &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок( ПараметрКоманды, ПараметрыВыполненияКоманды, ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет(), "МояПодсистема"); КонецПроцедуры #КонецОбласти ``` # Шаг 2 Добавляем созданные команды в состав функциональной опции `ИспользоватьДополнительныеОтчетыИОбработки` # Шаг 3 Для роли, в которой установлены права на просмотр подистемы "МояПодсистема" устанавливаем права на просмотр созданных команде # Шаг 4 В общем модуле `ДополнительныеОтчетыИОбработкиПереопределяемый` (или `ДополнительныеОтчетыИОбработкиЛокализация`) дополняем методы `ОпределитьРазделыСДополнительнымиОбработками` и `ОпределитьРазделыСДополнительнымиОтчетами`. Например: ```bsl Процедура ОпределитьРазделыСДополнительнымиОбработками(Разделы) Экспорт ДополнитьМассивРазделовСДополнительнымиОтчетамиОбработками(Разделы); КонецПроцедуры Процедура ОпределитьРазделыСДополнительнымиОтчетами(Разделы) Экспорт ДополнитьМассивРазделовСДополнительнымиОтчетамиОбработками(Разделы); КонецПроцедуры Процедура ДополнитьМассивРазделовСДополнительнымиОтчетамиОбработками(Разделы) ИменаДобавляемыхПодсистем = Новый Массив; ИменаДобавляемыхПодсистем.Добавить("МояПодсистема"); Для Каждого ИмяПодсистемы Из ИменаДобавляемыхПодсистем Цикл ПроверитьДобавитьПодсистемуПоИмениВСписокДоступныхРазделов(Разделы, ИмяПодсистемы); КонецЦикла; КонецПроцедуры Процедура ПроверитьДобавитьПодсистемуПоИмениВСписокДоступныхРазделов(Разделы, ИмяПодсистемы) Если Метаданные.Подсистемы.Найти(ИмяПодсистемы) = Неопределено Тогда ТекстСообщения = "Не найдена подсистема по имени """ + ИмяПодсистемы + """ |<ОбщийМодуль.ДополнительныеОтчетыИОбработкиПереопределяемый.ПроверитьДобавитьПодсистемуПоИмениВСписокДоступныхРазделов>"; ОбщегоНазначения.СообщитьПользователю(ТекстСообщения); Возврат; КонецЕсли; Если Разделы.Найти(Метаданные.Подсистемы[ИмяПодсистемы]) = Неопределено Тогда Разделы.Добавить(Метаданные.Подсистемы[ИмяПодсистемы]); КонецЕсли; КонецПроцедуры ```