ABC/XYZ - анализ номенклатуры / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

// Настройки общей формы отчета подсистемы "Варианты отчетов".
//
// Параметры:
//	Форма        - ФормаКлиентскогоПриложения - форма отчета,
//	КлючВарианта - Строка           - имя предопределенного варианта отчета или уникальный идентификатор,
//	Настройки    - См. ОтчетыКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию
//
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
	
	Настройки.События.ПриСозданииНаСервере = Истина;
	
КонецПроцедуры

// Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.
//
// Параметры:
//	Форма                - ФормаКлиентскогоПриложения - форма отчета,
//	Отказ                - Булево           - передается из параметров обработчика "как есть",
//	СтандартнаяОбработка - Булево           - передается из параметров обработчика "как есть".
//
// См. также:
//	"ФормаКлиентскогоПриложения.ПриСозданииНаСервере" в синтакс-помощнике.
//
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
	
	Параметры = Форма.Параметры;
	
	Если Параметры.Свойство("ПараметрКоманды")
		И Параметры.Свойство("ОписаниеКоманды") Тогда
			
			// Структура с полями из ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов.
			ОписаниеКоманды = Параметры.ОписаниеКоманды; // Структура -
			ДополнительныеПараметрыКоманды = ОписаниеКоманды.ДополнительныеПараметры; // Структура -
			
			Если ДополнительныеПараметрыКоманды.Свойство("ИмяКоманды") Тогда
				
				Если ДополнительныеПараметрыКоманды.ИмяКоманды = "ПоНоменклатуре" Тогда
					Форма.ФормаПараметры.Отбор.Вставить("Номенклатура", Параметры.ПараметрКоманды);
				КонецЕсли;
				
			КонецЕсли;
			
	КонецЕсли;
	
КонецПроцедуры

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

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

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ПользовательскиеНастройкиМодифицированы = Ложь;
	
	НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
	
	ОбеспечениеВДокументахСервер.ABCXYZАнализНоменклатурыПодменитьСвободныеОстаткиПереопределяемый(
		СхемаКомпоновкиДанных.НаборыДанных[0].Запрос);
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
	УстановитьЗаголовкиПолей(МакетКомпоновки);
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

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

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

#Область СлужебныеПроцедурыИФункции

Процедура УстановитьЗаголовкиПолей(МакетКомпоновки)
	
	Если НЕ ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
		Возврат;
	КонецЕсли;

	Если ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВалют") Тогда
		ВалютаУправленческогоУчета = " (" + Строка(Константы.ВалютаУправленческогоУчета.Получить()) + ")";
	Иначе
		ВалютаУправленческогоУчета = "";
	КонецЕсли;
	
	ABCТипПараметраКлассификации = "";
	
	Для каждого ЭлементОтбора из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
		Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") 
			И СтрНайти(ЭлементОтбора.ЛевоеЗначение, "ABCТипПараметраКлассификации") > 0 Тогда
			ABCТипПараметраКлассификации = ЭлементОтбора.ПравоеЗначение;
		КонецЕсли;
	КонецЦикла;

	Если ABCТипПараметраКлассификации = Перечисления.ТипыПараметровКлассификации.ВаловаяПрибыль 
		Или ABCТипПараметраКлассификации = Перечисления.ТипыПараметровКлассификации.Выручка Тогда
		ABCТипПараметраКлассификации = Строка(ABCТипПараметраКлассификации) + ВалютаУправленческогоУчета;
	КонецЕсли;
	
	СоответствиеЗаголовков = Новый Соответствие();
	СоответствиеЗаголовков.Вставить("1", ABCТипПараметраКлассификации);
	СоответствиеЗаголовков.Вставить("2", ВалютаУправленческогоУчета);
	
	КомпоновкаДанныхСервер.УстановитьЗаголовкиМакетаКомпоновки(СоответствиеЗаголовков, МакетКомпоновки);
	
КонецПроцедуры

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

#КонецЕсли

Связанные материалы