2025-07-09 21:58:17 +05:00

5.8 KiB
Raw Blame History

title, slug
title slug
Механизм доп.отчетов и обработок общие-подключение-объектов-к-бсп-подключение-к-подсистемам/механизм-доп-отчетов-и-обработок

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

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

Шаг 1

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

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


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

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

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

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


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

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

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

Шаг 2

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

Шаг 3

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

Шаг 4

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

Например:


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

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

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

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

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