Задолженность поставщикам / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область СлужебныйПрограммныйИнтерфейс

// Настройки общей формы отчета подсистемы "Варианты отчетов".
//
// Параметры:
//   Форма - ФормаКлиентскогоПриложения - Форма отчета.
//   КлючВарианта - Строка - Имя предопределенного варианта отчета или уникальный идентификатор пользовательского.
//   Настройки - См. ОтчетыКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию
//
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
	Настройки.События.ПриСозданииНаСервере = Истина;
	Настройки.События.ПередЗагрузкойВариантаНаСервере = Истина;
	Настройки.События.ПриЗагрузкеПользовательскихНастроекНаСервере = Истина;
КонецПроцедуры

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

КонецПроцедуры

// Вызывается в одноименном обработчике формы отчета после выполнения кода формы.
//
// Подробнее - см. ОтчетыПереопределяемый.ПередЗагрузкойВариантаНаСервере
//
Процедура ПередЗагрузкойВариантаНаСервере(ЭтаФорма, НовыеНастройкиКД) Экспорт
	
	
	Отчет = ЭтаФорма.Отчет;
	КомпоновщикНастроекФормы = Отчет.КомпоновщикНастроек;
	
	// Изменение настроек по функциональным опциям
	НастроитьПараметрыОтборыПоФункциональнымОпциям(КомпоновщикНастроекФормы);
	
	НовыеНастройкиКД = КомпоновщикНастроекФормы.Настройки;
	

КонецПроцедуры

// Вызывается в одноименном обработчике формы отчета после выполнения кода формы.
//
// Параметры:
//  ЭтаФорма                         - ФормаКлиентскогоПриложения - Форма отчета
//  НовыеПользовательскиеНастройкиКД - НастройкиКомпоновкиДанных - 
//                                        Пользовательские настройки для загрузки в компоновщик настроек.
//
Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(ЭтаФорма, НовыеПользовательскиеНастройкиКД) Экспорт
	
	Отчет = ЭтаФорма.Отчет;
	КомпоновщикНастроекФормы = Отчет.КомпоновщикНастроек;
	
	НастроитьПользовательскиеНастройкиПоФункциональнымОпциям(КомпоновщикНастроекФормы);
	
	НовыеПользовательскиеНастройкиКД = КомпоновщикНастроекФормы.ПользовательскиеНастройки;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытий
	
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	СегментыСервер.ВключитьОтборПоСегментуПартнеровВСКД(КомпоновщикНастроек);
	
	
	НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	
	//Предупреждение о невыполенном распределении взаиморасчетов.
	ВзаиморасчетыСервер.ВывестиПредупреждениеОбОбновлении(ДокументРезультат);
	
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
КонецПроцедуры

#КонецОбласти 

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

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

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

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

Функция ИмяКлючаВариантаВЗависимостиОтФлагаБазовая(ИмяКлючаВарианта, ЭтоБазовая)
	
	Если Не ЭтоБазовая Тогда
		Возврат ИмяКлючаВарианта;
	КонецЕсли;
	
	Если ИмяКлючаВарианта = "СостояниеРасчетовСПоставщиками" Тогда
		Возврат "СостояниеРасчетовСПоставщикамиБазовая";
	ИначеЕсли ИмяКлючаВарианта = "СостояниеРасчетовПоОбъектуРасчетовКонтекст" Тогда
		Возврат "СостояниеРасчетовПоОбъектуРасчетовКонтекстБазовая";
	ИначеЕсли ИмяКлючаВарианта = "СостояниеРасчетовСПоставщикомКонтекст" Тогда
		Возврат "СостояниеРасчетовСПоставщикомКонтекстБазовая";
	ИначеЕсли ИмяКлючаВарианта = "СостояниеРасчетовСПоставщикамиКонтекст" Тогда
		Возврат "СостояниеРасчетовСПоставщикамиКонтекстБазовая";
	КонецЕсли;
	
КонецФункции

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

#КонецОбласти

#КонецЕсли

Связанные материалы