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