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