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