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