---
title: Подключение нетиповых подсистем к механизму доп.отчетов и обработок
slug: общие-бсп-стандартные-подсистемы-3-1-10-дополнительные-отчеты-и-обработки/подключение-нетиповых-подсистем-к-механизму-доп-отчетов-и-обработок
---

# Постановка задачи

Есть подсистема `МояПодсистема`, в которой необходимо реализовать размещение дополнительных отчетов и обработок

# Шаг 1

Создаем общие команды:
	- `ДополнительныеОбработки_МояПодсистема`, размещаем в группе `Панель действий.Сервис` 
	- `ДополнительныеОтчеты_МояПодсистема`, размещаем в группе `Панель действий.Отчеты`

В команде `ДополнительныеОбработки_МояПодсистема` прописываем

```bsl

#Область ОбработчикиСобытий

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(
			ПараметрКоманды,
			ПараметрыВыполненияКоманды,
			ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(),
			"МояПодсистема");
КонецПроцедуры

#КонецОбласти

```

В команде `ДополнительныеОтчеты_МояПодсистема` прописываем

```bsl

#Область ОбработчикиСобытий

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(
			ПараметрКоманды,
			ПараметрыВыполненияКоманды,
			ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет(),
			"МояПодсистема");
КонецПроцедуры

#КонецОбласти

```

# Шаг 2

Добавляем созданные команды в состав функциональной опции `ИспользоватьДополнительныеОтчетыИОбработки`

# Шаг 3

Для роли, в которой установлены права на просмотр подистемы "МояПодсистема" устанавливаем права на просмотр созданных команде

# Шаг 4

В общем модуле `ДополнительныеОтчетыИОбработкиПереопределяемый` (или `ДополнительныеОтчетыИОбработкиЛокализация`) 
дополняем методы `ОпределитьРазделыСДополнительнымиОбработками` и `ОпределитьРазделыСДополнительнымиОтчетами`. 

Например:

```bsl

Процедура ОпределитьРазделыСДополнительнымиОбработками(Разделы) Экспорт
	ДополнитьМассивРазделовСДополнительнымиОтчетамиОбработками(Разделы);
КонецПроцедуры

Процедура ОпределитьРазделыСДополнительнымиОтчетами(Разделы) Экспорт
	ДополнитьМассивРазделовСДополнительнымиОтчетамиОбработками(Разделы);
КонецПроцедуры

Процедура ДополнитьМассивРазделовСДополнительнымиОтчетамиОбработками(Разделы)
	
	ИменаДобавляемыхПодсистем = Новый Массив;
	ИменаДобавляемыхПодсистем.Добавить("МояПодсистема");
	
	Для Каждого ИмяПодсистемы Из ИменаДобавляемыхПодсистем Цикл
		ПроверитьДобавитьПодсистемуПоИмениВСписокДоступныхРазделов(Разделы, ИмяПодсистемы);
	КонецЦикла;
	
КонецПроцедуры

Процедура ПроверитьДобавитьПодсистемуПоИмениВСписокДоступныхРазделов(Разделы, ИмяПодсистемы)
	
	Если Метаданные.Подсистемы.Найти(ИмяПодсистемы) = Неопределено Тогда
		ТекстСообщения = "Не найдена подсистема по имени """ + ИмяПодсистемы + """
		|<ОбщийМодуль.ДополнительныеОтчетыИОбработкиПереопределяемый.ПроверитьДобавитьПодсистемуПоИмениВСписокДоступныхРазделов>";
		ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
		Возврат;
	КонецЕсли;
	
	Если Разделы.Найти(Метаданные.Подсистемы[ИмяПодсистемы]) = Неопределено Тогда
		Разделы.Добавить(Метаданные.Подсистемы[ИмяПодсистемы]);
	КонецЕсли;

КонецПроцедуры

```