Skip to content

Механизм доп.отчетов и обработок

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

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

Шаг 1

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

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

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

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

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

Шаг 2

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

Шаг 3

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

Шаг 4

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

Например:

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