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