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

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

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

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

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

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

#Область ОбработчикиСобытий

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

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

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

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

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

#Область СлужебныеПроцедурыИФункции

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

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

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

Функция ТекстЗапроса()
	
	ТекстЗапроса = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
	|	Сегменты.Партнер КАК Партнер,
	|	ИСТИНА КАК ИспользуетсяОтборПоСегментуПартнеров
	|ПОМЕСТИТЬ ОтборПоСегментуПартнеров
	|ИЗ
	|	РегистрСведений.ПартнерыСегмента КАК Сегменты
	|{ГДЕ
	|	Сегменты.Сегмент.* КАК СегментПартнеров,
	|	Сегменты.Партнер.* КАК Партнер}
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Партнер,
	|	ИспользуетсяОтборПоСегментуПартнеров
	|;
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	АналитикаУчета.Организация КАК Организация,
	|	АналитикаУчета.Партнер КАК Партнер,
	|	АналитикаУчета.Контрагент КАК Контрагент,
	|	АналитикаУчета.Договор КАК Договор,
	|	АналитикаУчета.НаправлениеДеятельности КАК НаправлениеДеятельностиАналитики,
	|	АналитикаУчета.КлючАналитики КАК КлючАналитики
	|ПОМЕСТИТЬ ВТ_АналитикаУчетаПоПартнерам
	|ИЗ
	|	РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаУчета
	|ГДЕ
	|		АналитикаУчета.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.НашеПредприятие)
	|{ГДЕ
	|		АналитикаУчета.Организация.* КАК Организация,
	|		АналитикаУчета.Партнер.* КАК Партнер,
	|		АналитикаУчета.Контрагент.* КАК Контрагент,
	|		АналитикаУчета.Договор.* КАК Договор,
	|		(АналитикаУчета.Партнер В
	|				(ВЫБРАТЬ
	|					ОтборПоСегментуПартнеров.Партнер
	|				ИЗ
	|					ОтборПоСегментуПартнеров
	|				ГДЕ
	|					ОтборПоСегментуПартнеров.ИспользуетсяОтборПоСегментуПартнеров = &ИспользуетсяОтборПоСегментуПартнеров))}
	|ИНДЕКСИРОВАТЬ ПО
	|	КлючАналитики
	|;
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Расчеты.Организация                          КАК Организация,
	|	Расчеты.Партнер                              КАК Партнер,
	|	Расчеты.Контрагент                           КАК Контрагент,
	|	Расчеты.Договор                              КАК Договор,
	|	Расчеты.НаправлениеДеятельности              КАК НаправлениеДеятельности,
	|	Расчеты.ОбъектРасчетов                       КАК ОбъектРасчетов,
	|	Расчеты.Валюта                               КАК Валюта,
	|	Расчеты.РасчетныйДокумент                    КАК РасчетныйДокумент,
	|	Расчеты.ДатаПлановогоПогашения               КАК ДатаПлановогоПогашения,
	|	Расчеты.ДатаВозникновения                    КАК ДатаВозникновения,
	|	СУММА(Расчеты.НашДолг)                       КАК НашДолг,
	|	СУММА(Расчеты.ДолгПоставщика)                КАК ДолгПоставщика,
	|	
	|	СУММА(Расчеты.ПлановаяОплатаАванс)           КАК ПлановаяОплатаАванс,
	|	СУММА(Расчеты.ПлановаяОплатаПредоплата)      КАК ПлановаяОплатаПредоплата,
	|	СУММА(Расчеты.ПлановаяОплатаКредит)          КАК ПлановаяОплатаКредит,
	|	СУММА(Расчеты.ПлановаяОплатаНезависимо)      КАК ПлановаяОплатаНезависимо,
	|	СУММА(Расчеты.ПлановаяОплатаПросрочено)      КАК ПлановаяОплатаПросрочено,
	|	СУММА(Расчеты.ПлановаяОплатаВсего)           КАК ПлановаяОплатаВсего,
	|	СУММА(Расчеты.Оплачивается)                  КАК Оплачивается,
	|	
	|	СУММА(Расчеты.ПлановоеПоступление)           КАК ПлановоеПоступление,
	|	СУММА(Расчеты.ПлановоеПоступлениеПросрочено) КАК ПлановоеПоступлениеПросрочено
	|ИЗ (
	|	ВЫБРАТЬ
	|		АналитикаУчета.Организация                                     КАК Организация,
	|		АналитикаУчета.Партнер                                         КАК Партнер,
	|		АналитикаУчета.Контрагент                                      КАК Контрагент,
	|		АналитикаУчета.Договор                                         КАК Договор,
	|		ВЫБОР КОГДА НЕ РасчетыПоСрокам.ОбъектРасчетов.РегистрыВзаиморасчетовНеДелятсяПоНаправлениямДеятельности
	|			ТОГДА АналитикаУчета.НаправлениеДеятельностиАналитики
	|			ИНАЧЕ РасчетыПоСрокам.ОбъектРасчетов.НаправлениеДеятельности
	|		КОНЕЦ                                                          КАК НаправлениеДеятельности,
	|		РасчетыПоСрокам.ОбъектРасчетов                                 КАК ОбъектРасчетов,
	|		РасчетыПоСрокам.Валюта                                         КАК Валюта,
	|		РасчетыПоСрокам.РасчетныйДокумент                              КАК РасчетныйДокумент,
	|		РасчетыПоСрокам.ДатаПлановогоПогашения                         КАК ДатаПлановогоПогашения,
	|		РасчетыПоСрокам.ДатаВозникновения                              КАК ДатаВозникновения,
	|		РасчетыПоСрокам.ДолгОстаток                                    КАК НашДолг,
	|		РасчетыПоСрокам.ПредоплатаОстаток                              КАК ДолгПоставщика,
	|		
	|		0                                                              КАК ПлановаяОплатаАванс,
	|		0                                                              КАК ПлановаяОплатаПредоплата,
	|		РасчетыПоСрокам.ДолгОстаток                                    КАК ПлановаяОплатаКредит,
	|		0                                                              КАК ПлановаяОплатаНезависимо,
	|		ВЫБОР 
	|			КОГДА РасчетыПоСрокам.ДатаПлановогоПогашения < НАЧАЛОПЕРИОДА(&ДатаОтчета,ДЕНЬ)
	|				ТОГДА РасчетыПоСрокам.ДолгОстаток
	|			ИНАЧЕ 0 
	|		КОНЕЦ                                                          КАК ПлановаяОплатаПросрочено,
	|		РасчетыПоСрокам.ДолгОстаток                                    КАК ПлановаяОплатаВсего,
	|		0                                                              КАК Оплачивается,
	|		
	|		0                                                              КАК ПлановоеПоступление,
	|		0                                                              КАК ПлановоеПоступлениеПросрочено
	|	ИЗ
	|		РегистрНакопления.РасчетыСПоставщикамиПоСрокам.Остатки(&ДатаОтчетаГраница,
	|			АналитикаУчетаПоПартнерам В
	|				(ВЫБРАТЬ
	|					ВТ_АналитикаУчетаПоПартнерам.КлючАналитики
	|				ИЗ
	|					ВТ_АналитикаУчетаПоПартнерам)) КАК РасчетыПоСрокам
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_АналитикаУчетаПоПартнерам КАК АналитикаУчета
	|				ПО РасчетыПоСрокам.АналитикаУчетаПоПартнерам = АналитикаУчета.КлючАналитики
	|		
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		АналитикаУчета.Организация                                    КАК Организация,
	|		АналитикаУчета.Партнер                                        КАК Партнер,
	|		АналитикаУчета.Контрагент                                     КАК Контрагент,
	|		АналитикаУчета.Договор                                        КАК Договор,
	|		ВЫБОР КОГДА НЕ РасчетыПланОплат.ОбъектРасчетов.РегистрыВзаиморасчетовНеДелятсяПоНаправлениямДеятельности
	|			ТОГДА АналитикаУчета.НаправлениеДеятельностиАналитики
	|			ИНАЧЕ РасчетыПланОплат.ОбъектРасчетов.НаправлениеДеятельности
	|		КОНЕЦ                                                         КАК НаправлениеДеятельности,
	|		РасчетыПланОплат.ОбъектРасчетов                               КАК ОбъектРасчетов,
	|		РасчетыПланОплат.Валюта                                       КАК Валюта,
	|		РасчетыПланОплат.ДокументПлан                                 КАК ДокументПлан,
	|		РасчетыПланОплат.ДатаПлановогоПогашения                       КАК ДатаПлановогоПогашения,
	|		РасчетыПланОплат.ДатаВозникновения                            КАК ДатаВозникновения,
	|		0                                                             КАК НашДолг,
	|		0                                                             КАК ДолгПоставщика,
	|		
	|		ВЫБОР
	|			КОГДА РасчетыПланОплат.ВариантОплаты = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыПоставщику.АвансДоПодтверждения)
	|				ТОГДА РасчетыПланОплат.КОплатеОстаток 
	|			ИНАЧЕ 0 
	|		КОНЕЦ                                                         КАК ПлановаяОплатаАванс,
	|		ВЫБОР
	|			КОГДА РасчетыПланОплат.ВариантОплаты = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыПоставщику.ПредоплатаДоПоступления)
	|				ТОГДА РасчетыПланОплат.КОплатеОстаток 
	|			ИНАЧЕ 0 
	|		КОНЕЦ                                                         КАК ПлановаяОплатаПредоплата,
	|		ВЫБОР
	|			КОГДА РасчетыПланОплат.ВариантОплаты = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыПоставщику.КредитСдвиг)
	|				ТОГДА РасчетыПланОплат.КОплатеОстаток 
	|			ИНАЧЕ 0 
	|		КОНЕЦ                                                          КАК ПлановаяОплатаКредит,
	|		ВЫБОР
	|			КОГДА РасчетыПланОплат.ВариантОплаты = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыПоставщику.КредитПослеПоступления)
	|				ТОГДА РасчетыПланОплат.КОплатеОстаток 
	|			ИНАЧЕ 0 
	|		КОНЕЦ                                                          КАК ПлановаяОплатаНезависимо,
	|		ВЫБОР 
	|			КОГДА РасчетыПланОплат.ДатаПлановогоПогашения < НАЧАЛОПЕРИОДА(&ДатаОтчета,ДЕНЬ)
	|				ТОГДА РасчетыПланОплат.КОплатеОстаток
	|			ИНАЧЕ 0 
	|		КОНЕЦ                                                          КАК ПлановаяОплатаПросрочено,
	|		РасчетыПланОплат.КОплатеОстаток                                КАК ПлановаяОплатаВсего,
	|		0                                                              КАК Оплачивается,
	|		
	|		0                                                              КАК ПлановоеПоступление,
	|		0                                                              КАК ПлановоеПоступлениеПросрочено
	|	ИЗ
	|		РегистрНакопления.РасчетыСПоставщикамиПланОплат.Остатки(&ДатаОтчетаГраница,
	|			АналитикаУчетаПоПартнерам В
	|				(ВЫБРАТЬ
	|					ВТ_АналитикаУчетаПоПартнерам.КлючАналитики
	|				ИЗ
	|					ВТ_АналитикаУчетаПоПартнерам)
	|			И ТИПЗНАЧЕНИЯ(ДокументПлан) В (&ТипыДокументовПлана)) КАК РасчетыПланОплат
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_АналитикаУчетаПоПартнерам КАК АналитикаУчета
	|				ПО РасчетыПланОплат.АналитикаУчетаПоПартнерам = АналитикаУчета.КлючАналитики
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		АналитикаУчета.Организация                  КАК Организация,
	|		АналитикаУчета.Партнер                      КАК Партнер,
	|		АналитикаУчета.Контрагент                   КАК Контрагент,
	|		АналитикаУчета.Договор                      КАК Договор,
	|		ВЫБОР КОГДА НЕ РасчетыПланПоставок.ОбъектРасчетов.РегистрыВзаиморасчетовНеДелятсяПоНаправлениямДеятельности
	|			ТОГДА АналитикаУчета.НаправлениеДеятельностиАналитики
	|			ИНАЧЕ РасчетыПланПоставок.ОбъектРасчетов.НаправлениеДеятельности
	|		КОНЕЦ                                       КАК НаправлениеДеятельности,
	|		РасчетыПланПоставок.ОбъектРасчетов          КАК ОбъектРасчетов,
	|		РасчетыПланПоставок.Валюта                  КАК Валюта,
	|		РасчетыПланПоставок.ДокументПлан            КАК ДокументПлан,
	|		РасчетыПланПоставок.ДатаПлановогоПогашения  КАК ДатаПлановогоПогашения,
	|		РасчетыПланПоставок.ДатаВозникновения       КАК ДатаВозникновения,
	|		0                                           КАК НашДолг,
	|		0                                           КАК ДолгПоставщика,
	|		
	|		0                                           КАК ПлановаяОплатаАванс,
	|		0                                           КАК ПлановаяОплатаПредоплата,
	|		0                                           КАК ПлановаяОплатаКредит,
	|		0                                           КАК ПлановаяОплатаНезависимо,
	|		0                                           КАК ПлановаяОплатаПросрочено,
	|		0                                           КАК ПлановаяОплатаВсего,
	|		0                                           КАК Оплачивается,
	|		
	|		РасчетыПланПоставок.СуммаОстаток            КАК ПлановоеПоступление,
	|		ВЫБОР 
	|			КОГДА РасчетыПланПоставок.ДатаПлановогоПогашения < НАЧАЛОПЕРИОДА(&ДатаОтчета,ДЕНЬ)
	|				ТОГДА РасчетыПланПоставок.СуммаОстаток
	|			ИНАЧЕ 0 
	|		КОНЕЦ                                       КАК ПлановоеПоступлениеПросрочено
	|	ИЗ
	|		РегистрНакопления.РасчетыСПоставщикамиПланПоставок.Остатки(&ДатаОтчетаГраница, НЕ НераспределенныйАванс
	|			И АналитикаУчетаПоПартнерам В
	|				(ВЫБРАТЬ
	|					ВТ_АналитикаУчетаПоПартнерам.КлючАналитики
	|				ИЗ
	|					ВТ_АналитикаУчетаПоПартнерам)) КАК РасчетыПланПоставок
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_АналитикаУчетаПоПартнерам КАК АналитикаУчета
	|				ПО РасчетыПланПоставок.АналитикаУчетаПоПартнерам = АналитикаУчета.КлючАналитики
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		АналитикаУчета.Организация                КАК Организация,
	|		АналитикаУчета.Партнер                    КАК Партнер,
	|		АналитикаУчета.Контрагент                 КАК Контрагент,
	|		АналитикаУчета.Договор                    КАК Договор,
	|		ВЫБОР КОГДА НЕ РасчетыСПоставщиками.ОбъектРасчетов.РегистрыВзаиморасчетовНеДелятсяПоНаправлениямДеятельности
	|			ТОГДА АналитикаУчета.НаправлениеДеятельностиАналитики
	|			ИНАЧЕ РасчетыСПоставщиками.ОбъектРасчетов.НаправлениеДеятельности
	|		КОНЕЦ                                     КАК НаправлениеДеятельности,
	|		РасчетыСПоставщиками.ОбъектРасчетов       КАК ОбъектРасчетов,
	|		РасчетыСПоставщиками.Валюта               КАК Валюта,
	|		Неопределено                              КАК ДокументПлан,
	|		ДАТАВРЕМЯ(1,1,1)                          КАК ДатаПлановогоПогашения,
	|		ДАТАВРЕМЯ(1,1,1)                          КАК ДатаВозникновения,
	|		0                                         КАК НашДолг,
	|		0                                         КАК ДолгПоставщика,
	|		
	|		0                                         КАК ПлановаяОплатаАванс,
	|		0                                         КАК ПлановаяОплатаПредоплата,
	|		0                                         КАК ПлановаяОплатаКредит,
	|		0                                         КАК ПлановаяОплатаНезависимо,
	|		0                                         КАК ПлановаяОплатаПросрочено,
	|		0                                         КАК ПлановаяОплатаВсего,
	|		-РасчетыСПоставщиками.ОплачиваетсяОстаток КАК Оплачивается,
	|		
	|		0                                         КАК ПлановоеПоступление,
	|		0                                         КАК ПлановоеПоступлениеПросрочено
	|	ИЗ
	|		РегистрНакопления.РасчетыСПоставщиками.Остатки(&ДатаОтчетаГраница,
	|			АналитикаУчетаПоПартнерам В
	|				(ВЫБРАТЬ
	|					ВТ_АналитикаУчетаПоПартнерам.КлючАналитики
	|				ИЗ
	|					ВТ_АналитикаУчетаПоПартнерам)) КАК РасчетыСПоставщиками
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_АналитикаУчетаПоПартнерам КАК АналитикаУчета
	|				ПО АналитикаУчета.КлючАналитики = РасчетыСПоставщиками.АналитикаУчетаПоПартнерам
	|	ГДЕ
	|		РасчетыСПоставщиками.ОплачиваетсяОстаток < 0) КАК Расчеты
	|СГРУППИРОВАТЬ ПО
	|	Расчеты.Организация,
	|	Расчеты.Партнер,
	|	Расчеты.Контрагент,
	|	Расчеты.Договор,
	|	Расчеты.НаправлениеДеятельности,
	|	Расчеты.ОбъектРасчетов,
	|	Расчеты.Валюта,
	|	Расчеты.РасчетныйДокумент,
	|	Расчеты.ДатаПлановогоПогашения,
	|	Расчеты.ДатаВозникновения
	|ИМЕЮЩИЕ
	|	(&ОтборыВыбранныхПолей)
	|";
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"&ТипыДокументовПлана", ПолучитьТипыДокументовПлана());
	
	Возврат ТекстЗапроса;
	
КонецФункции

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

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

Функция НастройкиОтчета(ПараметрКоманды)
	
	ЗначенияФункциональныхОпций = Новый Структура;
	ЗначенияФункциональныхОпций.Вставить("БазоваяВерсия", ПолучитьФункциональнуюОпцию("БазоваяВерсия"));
	
	СтруктураНастроек = Новый Структура;
	СтруктураНастроек.Вставить("ЗначенияФункциональныхОпций", ЗначенияФункциональныхОпций);
	
	Возврат СтруктураНастроек
	
КонецФункции

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

Функция ПолучитьТипыДокументовПлана()
	
	ТекстТиповДокументов = ""; 
	
	//++ НЕ УТ
	
	//++ Устарело_Переработка24
	ТекстТиповДокументов = ТекстТиповДокументов + "ТИП(Документ.ЗаказПереработчику), ";
	//-- Устарело_Переработка24
	ТекстТиповДокументов = ТекстТиповДокументов + "ТИП(Документ.ЗаказПереработчику2_5), ";
	//-- НЕ УТ
	
	ТекстТиповДокументов = ТекстТиповДокументов + "ТИП(Документ.ЗаказПоставщику), ";
	ТекстТиповДокументов = ТекстТиповДокументов + "ТИП(Документ.ГрафикИсполненияДоговора)";
	
	Возврат ТекстТиповДокументов;
	
КонецФункции

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

#КонецЕсли

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