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