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