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