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