Добавление расшифровки в стандартные и добавленные внешние отчеты со стандартной формой отчета на СКД

Программирование - Универсальные функции

СКД Расшифровка

66
Описан способ добавления расшифровки отчета на СКД как встроенного в систему, так и добавленного внешнего отчета.

Как известно, подключаемый внешний отчет, если не указывать свою форму отчета, будет использовать общую формуОтчета из конфигурации,

Всем она хороша,но вот добавить свою расшифровку в такой отчет как я думал затруднительно, но разработчики позаботились и об этом.

Ниже предоставлен код который можно добавить в расширение либо в сам общий модуль "ОтчетыКлиентПереопределяемый", Он снабжен комментариями поэтому понять сто к чему можно будет из кода.

&После("ОбработкаДополнительнойРасшифровки")
Процедура NF_ОбработкаДополнительнойРасшифровки(ЭтаФорма, Элемент, Расшифровка, СтандартнаяОбработка)
	ПолноеИмяОтчета = ЭтаФорма.НастройкиОтчета.ПолноеИмя;
	КлючТекущегоВарианта = ЭтаФорма.КлючТекущегоВарианта;
	
	МенюОтчетов  = Новый Массив;
	МенюДействий = Новый Массив;
	
	Если ПолноеИмяОтчета = "ВнешнийОтчет.РеестрОригиналов" Тогда
		СтандартнаяОбработка  = Ложь;
		Если КлючТекущегоВарианта = "РеестОригиналов" Тогда
			
			
			// Расшифровать отчетом -> Себестоимость продаж
			#Область АнализСебестоимостиТоваровРасширенный
			ПараметрыОтчета = Новый Структура;
			ПараметрыОтчета.Вставить("Имя",              "РеестрОригиналов");
			ПараметрыОтчета.Вставить("Заголовок",        НСтр("ru = 'История документа'"));
			ПараметрыОтчета.Вставить("ИмяОтчета",        "ВнешнийОтчет.РеестрОригиналов");
			ПараметрыОтчета.Вставить("КлючВарианта",      "ИсторияОригиналов");
			//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			//Указываются поля расшифровки которые могут быть переданы в открываемый отчет как отбор
			//	а так же для отбора показывать меню на данной строке или нет,
			// или для замены параметров см ниже комментарии
			ПоляРасшифровки  = Новый Массив;
			ПоляРасшифровки.Добавить("Документ");
			//ПоляРасшифровки.Добавить("СостояниеДокумента");
			ПараметрыОтчета.Вставить("ПоляРасшифровки", ПоляРасшифровки);
			//---------------------------------------------------------------------------------------
			
			//++++++++++++++++++++++++++++++++++++++Параметры открываемого отчета++++++++++++++++++++++++++++++++++++++++++++++++
			// В данном массиве указываются параметры текущего отчета которые будут переданы как параметр в открываемый отчет
			//	а так же для отбора показывать меню на данной строке или нет,
			// или для замены параметров см выше комментарии
			СписокПараметров = Новый Массив;
			СписокПараметров.Добавить("Период");
			СписокПараметров.Добавить("Тип");
			ПараметрыОтчета.Вставить("СписокПараметров", СписокПараметров);
			//----------------------------------------Параметры открываемого отчета------------------------------------------------
			// В выше приведенных структурах нужно указать параметры отчета и поля расшифровки по которым будет анализироваться поведение 
			// расшифровки ( показывать доп меню или нет ), для замены параметров, ну и соответственно то что будет передано в открыаемый отчет как отборы
			// и параметры
			
			//+++++++++++++++++++++++++Замена параметров++++++++++++++++++++++++++++++++++++++++
			//"ЗаменяющиеПараметры" Соответствие где ключ это значение заменяемого параметра, значение Структура 
			//	в котором указывается "ключ" это имя и "значение" значение параметра текущего запроса
			//"ЗаменаПараметров" - Структура Где ключ это имя  параметра который будет передан в открываемый отчет
			//  Значение данной структура может быть либо строкой, либо соответствием см.выше "ЗаменяющиеПараметры" или Неопределено
			//  если значение Неопределено то параметр будет удален из отборов, если строка то значение параметра будет искаться в отборах текущего отчета по имени
			//  т.е "Значение элемента структуры = "Документ", тогда  значение параметра будет получено "ПараметрыОтбора[Элемент.Значение]" Где "ПараметрыОтбора"
			// то что мы указали выше в структурах расшифровки и параметров ( важное замечание, они обязательно дожны присутствовать или в строке расшифровки или в параметрах,
			// иначе они не попадут "ПараметрыОтбора"
			// Помледний вариант соответствие, тут просто помимо проверки что есть такой элемент в параметрах отбора, он заменяется на то что указано в самом соответствии
			ЗаменаПараметров = Новый Структура;
			ЗаменяющиеПараметры = Новый Соответствие;
			
			ЗаменяющиеПараметры.Вставить(0,Новый Структура("Тип",1));
			ЗаменаПараметров.Вставить("Тип", ЗаменяющиеПараметры);
			//ЗаменаПараметров.Вставить("Показатель_Родитель", Неопределено);
			//ЗаменаПараметров.Вставить("ДинамическаяГруппировкаПоТипуАнализа", "СтруктураПредприятия_Организация");
			ПараметрыОтчета.Вставить("ЗаменаПараметров", ЗаменаПараметров);
			//-------------------------Замена параметров------------------------------------------------------------------
			//++++++++++++++++++++++++++Блок для отбора показа меню+++++++++++++++++++++++++++++++++++++++++++++++++++
			// Данный блок служит для отбора показывать меню или нет по выбранной расшифровке , 
			//   	ключ структуры "Необходимые параметы" должен быть так же добавлен в массив "ПоляРасшифровки" если параметр идет в самой расшифровке.
			// "НеобходимыеЗначенияПараметра" Массив - перечисляются значения параметров при которм будет показано меню.
			// "НеобходимыеПараметры" Структура;Ключи - Имена параметров, Значения-Неопределено( тогда значения параметра не проверяется, главное что бы он присутсвовал),
			//  	ИЛИ массив "НеобходимыеЗначенияПараметра" ( тогда помимо того что параметр присутвовать должен но и значение должно быть одним из тех что будут в данном массиве)
			НеобходимыеЗначенияПараметра = Новый Массив;
			НеобходимыеЗначенияПараметра.Добавить(0);
			НеобходимыеПараметры = Новый Структура;
			НеобходимыеЗначенияПараметра1 = Новый Массив;
			НеобходимыеЗначенияПараметра1.Добавить(ПредопределенноеЗначение("Перечисление.NF_ВариантыПолученияДокументовОтПоставщика.ДокументыПолучены"));
			НеобходимыеПараметры = Новый Структура;
			НеобходимыеПараметры.Вставить("Тип", НеобходимыеЗначенияПараметра);
			НеобходимыеПараметры.Вставить("Документ");
			ПараметрыОтчета.Вставить("НеобходимыеПараметры", НеобходимыеПараметры);
			//---------------------------------------Блок для отбора показа меню--------------------------------------------------
			МенюОтчетов.Добавить(ПараметрыОтчета);		
			#КонецОбласти
		КонецЕсли;
	КонецЕсли;
	Если МенюОтчетов.Количество() > 0 
		ИЛИ МенюДействий.Количество() > 0 Тогда
			ПараметрыРасшифровки = Новый Структура;
			ПараметрыРасшифровки.Вставить("МенюОтчетов",  МенюОтчетов);
			ПараметрыРасшифровки.Вставить("МенюДействий", МенюДействий);
			ПараметрыРасшифровки.Вставить("Расшифровка",  Расшифровка);
			
			КомпоновкаДанныхКлиент.ОбработкаРасшифровкиСДополнительнымМеню(ЭтаФорма, ПараметрыРасшифровки, СтандартнаяОбработка);
	КонецЕсли;
	
КонецПроцедуры

Все тестировалось на 1С ERP 2.2.4

Платформа 8.3.10

66

См. также

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение