Дебиторская задолженность (фифо) в разрезе расходных на каждый день в периоде
Задача: необходимо получать остатки долга на каждый день выбранного периода по расходным накладным наиболее оптимальным способом. (УНФ, регистр РасчетыСПокупателями)
Если вкратце, то делать это нужно для расчета штрафов с учетом частичного погашения. Штраф на конкретный день считается как сумма всех штрафов по расходной за предыдущие дни + сумма штрафа за текущий день (% от суммы долга). То есть логика такая:
01.06 | долг = 1000 | штраф = 100 (10%)
02.06 | долг = 900 | штраф = 100 + 90
03.06 | долг = 900 | штраф = 100 + 90 + 90
04.06 | долг = 500 | штраф = 100 + 90 + 90 + 50.
Причем нужно будет получать штрафы за период, по примеру выше можно будет сформировать отчет за 02.06-04.06 и он покажет сумму штрафов за указанные три дня (800). Ну и, конечно, надо понимать, когда долг был погашен (дата), т.к. нужно выводить срок просрочки (дата оплаты(!) - дата возникновения задолженности)
Может кто-то сталкивался с подобной задачей и подскажет, как реализовать описанное наиболее оптимальным способом.
P.S. ссылки на отчеты по дебиторской задолженности, в которых решена задача отображения просто текущих долгов, предлагать не нужно, интересует именно вариант решения с остатками долга в разрезе расходных на каждый день.
Если вкратце, то делать это нужно для расчета штрафов с учетом частичного погашения. Штраф на конкретный день считается как сумма всех штрафов по расходной за предыдущие дни + сумма штрафа за текущий день (% от суммы долга). То есть логика такая:
01.06 | долг = 1000 | штраф = 100 (10%)
02.06 | долг = 900 | штраф = 100 + 90
03.06 | долг = 900 | штраф = 100 + 90 + 90
04.06 | долг = 500 | штраф = 100 + 90 + 90 + 50.
Причем нужно будет получать штрафы за период, по примеру выше можно будет сформировать отчет за 02.06-04.06 и он покажет сумму штрафов за указанные три дня (800). Ну и, конечно, надо понимать, когда долг был погашен (дата), т.к. нужно выводить срок просрочки (дата оплаты(!) - дата возникновения задолженности)
Может кто-то сталкивался с подобной задачей и подскажет, как реализовать описанное наиболее оптимальным способом.
P.S. ссылки на отчеты по дебиторской задолженности, в которых решена задача отображения просто текущих долгов, предлагать не нужно, интересует именно вариант решения с остатками долга в разрезе расходных на каждый день.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Есть два варианта: написать оверохрененный запрос (в принципе он не такой и охрененный, есть в Минимализмах Ильдаровича и в некоторых других статьях). Второй вариант - это постобработка, в принципе она не менее быстра, чем обычный запрос, а в ярде случаев будет быстрее.
Суть решения сводится к тому, что берутся события изменения долга - обороты, разрез - день. Соединяется это все со списком дат (с помощью порождающей выборки, в которой дата - это ДОБАВИТЬКДАТЕ(&НачалоПериода, ПорядковыйНомер, День). Дальше или соединением (треугольник на меньше равно дате) с самим собой и внутри расчет, конце группировка по максимальной дате, потом еще одно соединение по дате с исходной выборкой. Ну или просто постобработка, что, на мой взгляд, лучше.
В общем не стоит этот механизм 17-ти стартманей )))
Суть решения сводится к тому, что берутся события изменения долга - обороты, разрез - день. Соединяется это все со списком дат (с помощью порождающей выборки, в которой дата - это ДОБАВИТЬКДАТЕ(&НачалоПериода, ПорядковыйНомер, День). Дальше или соединением (треугольник на меньше равно дате) с самим собой и внутри расчет, конце группировка по максимальной дате, потом еще одно соединение по дате с исходной выборкой. Ну или просто постобработка, что, на мой взгляд, лучше.
В общем не стоит этот механизм 17-ти стартманей )))
(10)
штрафы начислять всегда с
Сдается мне, что этот отчет больше проверочный, нежели пользовательский. Фактически конечному пользователю нужен долг клиента (или поставщику, например) с учетом санкций. Т.е. колонка долга на дату Х, колонка пени, колонка итого. Но чтобы он понял, что цифрам можно верить, он просит сделать такой вот развернутый отчет. Закиньте его на местную биржу фрлансеров - те же 17 см потратите, полагаю, но в итоге получите готовое решение.
(13) в этой процедурке будет просто получение процента от текущего долга, передается туда текущий долг и дата, если долг нарастающий то начальная дата, конечная и процент. в общем модуле потому-то вычисляемые поля в СКД умеют обращаться к процедурам в модулях, но нужно чтобы они были общими
(13) у вас получилось? просто я буквально параллельно с тем как вам писал делал подобный отчет только не задолженность а курс валюты у меня был по дням в столбцах, вариант точно рабочий, я как раз ваш вопрос увидел потому что в СКД писал ирешил посмотреть кто что по СКД спрашивает, вознаграждение мне не надо, реально просто я знаю как
Чем-то подобным когда-то занимался. Только считал кормодни крупного рогатого скота. Но суть примерно та же. Стояла скотина день на ферме, значит ела, значит день засчитываем. Потом это все было базой распределения затрат, в общем такая лирика. Решал через пакет запросов. Первой таблицей делал просто набор дат от начала до конца периода. Потом присоединял к датам произошедшие движения по животным и соответствующие расчеты.
Чисто пример, только у меня поиск как долга, так и просроченного долга. Ну и еще долга поставщика.
ВЫБРАТЬ РАЗРЕШЕННЫЕ
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Организация КАК Организация,
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Контрагент КАК Контрагент,
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Договор КАК Договор,
РасчетыСПоставщиками.ЗаказПоставщику КАК ЗаказПоставщику,
РасчетыСПоставщиками.ЗаказПоставщику КАК Заказ,
РасчетыСПоставщиками.СуммаПриход КАК ДТ,
РасчетыСПоставщиками.СуммаРасход КАК КТ,
РасчетыСПоставщиками.Регистратор КАК Регистратор,
ЕСТЬNULL(РасчетыСПоставщиками.Регистратор.ДатаВходящегоДокумента, РасчетыСПоставщиками.Регистратор.Дата) КАК ДатаДокумента,
ВЫБОР
КОГДА РасчетыСПоставщиками.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику
ТОГДА РасчетыСПоставщиками.ЗаказПоставщику.ДатаПоступления
ИНАЧЕ РасчетыСПоставщиками.Период
КОНЕЦ КАК ДатаПоставки,
0 КАК НачальныйОстаток,
0 КАК КонечныйОстаток,
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
ОтражениеДокументовВРеглУчетеСрезПоследних.Статус КАК СтатусОтражения
ПОМЕСТИТЬ втПервичныйОборот
{ВЫБРАТЬ
Контрагент.*,
Договор.*}
ИЗ
РегистрНакопления.РасчетыСПоставщиками.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК РасчетыСПоставщиками
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОтражениеДокументовВРеглУчете КАК ОтражениеДокументовВРеглУчетеСрезПоследних
ПО РасчетыСПоставщиками.Регистратор = ОтражениеДокументовВРеглУчетеСрезПоследних.Регистратор
ГДЕ
(НЕ РасчетыСПоставщиками.СуммаПриход = 0
ИЛИ НЕ РасчетыСПоставщиками.СуммаРасход = 0)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Организация,
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Контрагент,
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Договор,
РасчетыСПоставщиками.ЗаказПоставщику,
РасчетыСПоставщиками.ЗаказПоставщику,
0,
0,
NULL,
NULL,
NULL,
РасчетыСПоставщиками.СуммаОстаток,
0,
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам,
NULL
ИЗ
РегистрНакопления.РасчетыСПоставщиками.Остатки(&НачалоПериода, ) КАК РасчетыСПоставщиками
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Организация,
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Контрагент,
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Договор,
РасчетыСПоставщиками.ЗаказПоставщику,
РасчетыСПоставщиками.ЗаказПоставщику,
0,
0,
NULL,
NULL,
NULL,
0,
РасчетыСПоставщиками.СуммаОстаток,
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам,
NULL
ИЗ
РегистрНакопления.РасчетыСПоставщиками.Остатки(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), СЕКУНДА, 1), ) КАК РасчетыСПоставщиками
ИНДЕКСИРОВАТЬ ПО
ЗаказПоставщику,
АналитикаУчетаПоПартнерам
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
РасчетыСПоставщиками.ЗаказПоставщику,
РасчетыСПоставщиками.АналитикаУчетаПоПартнерам,
РасчетыСПоставщиками.КПоступлениюОстаток КАК ДолгПоставщикаОстаток
ПОМЕСТИТЬ втДолгПоставщика
ИЗ
РегистрНакопления.РасчетыСПоставщиками.Остатки(
&НаДату,
(ЗаказПоставщику, АналитикаУчетаПоПартнерам) В
(ВЫБРАТЬ
втПервичныйОборот.ЗаказПоставщику,
втПервичныйОборот.АналитикаУчетаПоПартнерам
ИЗ
втПервичныйОборот
ГДЕ
втПервичныйОборот.ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику)) КАК РасчетыСПоставщиками
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втПервичныйОборот.Организация,
втПервичныйОборот.Контрагент,
втПервичныйОборот.Договор,
втПервичныйОборот.ЗаказПоставщику КАК ЗаказПоставщику,
втПервичныйОборот.Заказ,
втПервичныйОборот.ДТ,
втПервичныйОборот.КТ,
втПервичныйОборот.Регистратор КАК Регистратор,
втПервичныйОборот.ДатаДокумента,
втПервичныйОборот.ДатаПоставки,
втПервичныйОборот.НачальныйОстаток,
втПервичныйОборот.КонечныйОстаток,
втПервичныйОборот.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам
ПОМЕСТИТЬ втОборот
ИЗ
втПервичныйОборот КАК втПервичныйОборот
ГДЕ
втПервичныйОборот.КТ > 0
ИНДЕКСИРОВАТЬ ПО
ЗаказПоставщику,
АналитикаУчетаПоПартнерам,
Регистратор
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
КонтрольДебиторкиСПоставщикомОстатки.АналитикаУчетаПоПартнерам,
КонтрольДебиторкиСПоставщикомОстатки.ЗаказПоставщику,
КонтрольДебиторкиСПоставщикомОстатки.Валюта,
-КонтрольДебиторкиСПоставщикомОстатки.СуммаОстаток КАК Долг
ПОМЕСТИТЬ втДолги
ИЗ
РегистрНакопления.РасчетыСПоставщиками.Остатки(
КОНЕЦПЕРИОДА(&НаДату, ДЕНЬ),
(АналитикаУчетаПоПартнерам, ЗаказПоставщику) В
(ВЫБРАТЬ
втОборот.АналитикаУчетаПоПартнерам,
втОборот.ЗаказПоставщику
ИЗ
втОборот)) КАК КонтрольДебиторкиСПоставщикомОстатки
ГДЕ
-КонтрольДебиторкиСПоставщикомОстатки.СуммаОстаток > 0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
КонтрольДебиторкиСПоставщикомОбороты.АналитикаУчетаПоПартнерам,
КонтрольДебиторкиСПоставщикомОбороты.ЗаказПоставщику,
НАЧАЛОПЕРИОДА(КонтрольДебиторкиСПоставщикомОбороты.ДатаПоставки, МЕСЯЦ) КАК НачалоПериода,
КОНЕЦПЕРИОДА(КонтрольДебиторкиСПоставщикомОбороты.ДатаПоставки, МЕСЯЦ) КАК КонецПериода,
СУММА(КонтрольДебиторкиСПоставщикомОбороты.КТ) КАК Сумма
ПОМЕСТИТЬ втОборотыПоМесяцам
ИЗ
втОборот КАК КонтрольДебиторкиСПоставщикомОбороты
ГДЕ
КонтрольДебиторкиСПоставщикомОбороты.КТ > 0
СГРУППИРОВАТЬ ПО
КонтрольДебиторкиСПоставщикомОбороты.АналитикаУчетаПоПартнерам,
КонтрольДебиторкиСПоставщикомОбороты.ЗаказПоставщику,
НАЧАЛОПЕРИОДА(КонтрольДебиторкиСПоставщикомОбороты.ДатаПоставки, МЕСЯЦ),
КОНЕЦПЕРИОДА(КонтрольДебиторкиСПоставщикомОбороты.ДатаПоставки, МЕСЯЦ)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОборотыПоМесяцам.АналитикаУчетаПоПартнерам,
ОборотыПоМесяцам.ЗаказПоставщику,
ОборотыПоМесяцам.НачалоПериода,
ОборотыПоМесяцам.КонецПериода,
ОборотыПоМесяцам.Сумма,
СУММА(ОборотыПоМесяцамКопия.Сумма) КАК СуммаПосле,
СУММА(ОборотыПоМесяцамКопия.Сумма) - ОборотыПоМесяцам.Сумма КАК СуммаДо
ПОМЕСТИТЬ втОборотыПоМесяцамНарастающие
ИЗ
втОборотыПоМесяцам КАК ОборотыПоМесяцам
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втОборотыПоМесяцам КАК ОборотыПоМесяцамКопия
ПО ОборотыПоМесяцам.АналитикаУчетаПоПартнерам = ОборотыПоМесяцамКопия.АналитикаУчетаПоПартнерам
И ОборотыПоМесяцам.ЗаказПоставщику = ОборотыПоМесяцамКопия.ЗаказПоставщику
И ОборотыПоМесяцам.НачалоПериода <= ОборотыПоМесяцамКопия.НачалоПериода
СГРУППИРОВАТЬ ПО
ОборотыПоМесяцам.НачалоПериода,
ОборотыПоМесяцам.КонецПериода,
ОборотыПоМесяцам.АналитикаУчетаПоПартнерам,
ОборотыПоМесяцам.ЗаказПоставщику,
ОборотыПоМесяцам.Сумма
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Долги.АналитикаУчетаПоПартнерам,
Долги.ЗаказПоставщику,
Долги.Долг,
ОборотыПоМесНарастающие.НачалоПериода,
ОборотыПоМесНарастающие.КонецПериода,
Долги.Долг - ОборотыПоМесНарастающие.СуммаДо КАК ОстатокДолга
ПОМЕСТИТЬ ДолгиПоВыбраннымМесяцам
ИЗ
втДолги КАК Долги
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втОборотыПоМесяцамНарастающие КАК ОборотыПоМесНарастающие
ПО Долги.АналитикаУчетаПоПартнерам = ОборотыПоМесНарастающие.АналитикаУчетаПоПартнерам
И Долги.АналитикаУчетаПоПартнерам = ОборотыПоМесНарастающие.АналитикаУчетаПоПартнерам
И Долги.Долг > ОборотыПоМесНарастающие.СуммаДо
И Долги.Долг <= ОборотыПоМесНарастающие.СуммаПосле
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Обороты.АналитикаУчетаПоПартнерам,
Обороты.ЗаказПоставщику,
Обороты.Регистратор КАК Документ,
Обороты.ДатаПоставки КАК Период,
ДолгиПоВыбМесяцам.Долг,
ДолгиПоВыбМесяцам.ОстатокДолга,
Обороты.КТ КАК Сумма
ПОМЕСТИТЬ ДвиженияПоВыбраннымМесяцам
ИЗ
втОборот КАК Обороты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДолгиПоВыбраннымМесяцам КАК ДолгиПоВыбМесяцам
ПО Обороты.АналитикаУчетаПоПартнерам = ДолгиПоВыбМесяцам.АналитикаУчетаПоПартнерам
И Обороты.ЗаказПоставщику = ДолгиПоВыбМесяцам.ЗаказПоставщику
И Обороты.ДатаПоставки >= ДолгиПоВыбМесяцам.НачалоПериода
И Обороты.ДатаПоставки <= ДолгиПоВыбМесяцам.КонецПериода
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДвиженияПоВыбМесяцам.АналитикаУчетаПоПартнерам,
ДвиженияПоВыбМесяцам.ЗаказПоставщику,
ДвиженияПоВыбМесяцам.Документ,
ДвиженияПоВыбМесяцам.Период,
ДвиженияПоВыбМесяцам.Сумма,
СУММА(ДвиженияПоВыбМесяцамКопия.Сумма) КАК СуммаПосле,
СУММА(ДвиженияПоВыбМесяцамКопия.Сумма) - ДвиженияПоВыбМесяцам.Сумма КАК СуммаДо,
ДвиженияПоВыбМесяцам.ОстатокДолга
ПОМЕСТИТЬ ДвиженияПредварительные
ИЗ
ДвиженияПоВыбраннымМесяцам КАК ДвиженияПоВыбМесяцам
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДвиженияПоВыбраннымМесяцам КАК ДвиженияПоВыбМесяцамКопия
ПО ДвиженияПоВыбМесяцам.АналитикаУчетаПоПартнерам = ДвиженияПоВыбМесяцамКопия.АналитикаУчетаПоПартнерам
И ДвиженияПоВыбМесяцам.ЗаказПоставщику = ДвиженияПоВыбМесяцамКопия.ЗаказПоставщику
И ДвиженияПоВыбМесяцам.Период <= ДвиженияПоВыбМесяцамКопия.Период
СГРУППИРОВАТЬ ПО
ДвиженияПоВыбМесяцам.АналитикаУчетаПоПартнерам,
ДвиженияПоВыбМесяцам.ЗаказПоставщику,
ДвиженияПоВыбМесяцам.Документ,
ДвиженияПоВыбМесяцам.Период,
ДвиженияПоВыбМесяцам.Сумма,
ДвиженияПоВыбМесяцам.ОстатокДолга
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДвиженияПредв.АналитикаУчетаПоПартнерам,
ДвиженияПредв.ЗаказПоставщику,
ДвиженияПредв.Документ,
ДвиженияПредв.Период,
ДвиженияПредв.ОстатокДолга - ДвиженияПредв.СуммаДо КАК СуммаДолга,
ДвиженияПредв.Сумма
ПОМЕСТИТЬ ДвиженияОкончательные
ИЗ
ДвиженияПредварительные КАК ДвиженияПредв
ГДЕ
ДвиженияПредв.ОстатокДолга > ДвиженияПредв.СуммаДо
И ДвиженияПредв.ОстатокДолга <= ДвиженияПредв.СуммаПосле
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВЫБОР
КОГДА Обороты.Регистратор = ДвиженияОконч.Документ
ТОГДА ДвиженияОконч.СуммаДолга
КОГДА ДвиженияОконч.Документ ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ Обороты.КТ
КОНЕЦ КАК СуммаДолга,
Обороты.Регистратор,
Обороты.ЗаказПоставщику,
Обороты.ДатаДокумента,
Обороты.ДатаПоставки,
Обороты.НачальныйОстаток,
Обороты.КонечныйОстаток,
Обороты.АналитикаУчетаПоПартнерам,
ДвиженияОконч.Период
ПОМЕСТИТЬ втДолгиОкончательный
ИЗ
втОборот КАК Обороты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДвиженияОкончательные КАК ДвиженияОконч
ПО Обороты.АналитикаУчетаПоПартнерам = ДвиженияОконч.АналитикаУчетаПоПартнерам
И Обороты.ЗаказПоставщику = ДвиженияОконч.ЗаказПоставщику
И Обороты.ДатаПоставки >= ДвиженияОконч.Период
И (ДвиженияОконч.Документ = Обороты.Регистратор)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
КонтрольДебиторкиСПоставщикомОстатки.АналитикаУчетаПоПартнерам,
КонтрольДебиторкиСПоставщикомОстатки.ЗаказПоставщику,
КонтрольДебиторкиСПоставщикомОстатки.Валюта,
-КонтрольДебиторкиСПоставщикомОстатки.СуммаОстаток КАК Долг
ПОМЕСТИТЬ втДолгиПросроченные
ИЗ
РегистрНакопления.КонтрольДебиторкиСПоставщиком.Остатки(
КОНЕЦПЕРИОДА(&НаДату, ДЕНЬ),
(АналитикаУчетаПоПартнерам, ЗаказПоставщику) В
(ВЫБРАТЬ
втДолгиОкончательный.АналитикаУчетаПоПартнерам,
втДолгиОкончательный.ЗаказПоставщику
ИЗ
втДолгиОкончательный КАК втДолгиОкончательный)) КАК КонтрольДебиторкиСПоставщикомОстатки
ГДЕ
-КонтрольДебиторкиСПоставщикомОстатки.СуммаОстаток > 0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
КонтрольДебиторкиСПоставщикомОбороты.АналитикаУчетаПоПартнерам,
КонтрольДебиторкиСПоставщикомОбороты.ЗаказПоставщику,
КонтрольДебиторкиСПоставщикомОбороты.Период,
КонтрольДебиторкиСПоставщикомОбороты.Регистратор КАК Документ,
СУММА(КонтрольДебиторкиСПоставщикомОбороты.Сумма) КАК Сумма,
КонтрольДебиторкиСПоставщикомОбороты.ПроцентПлатежа,
КонтрольДебиторкиСПоставщикомОбороты.БазоваяДата,
КонтрольДебиторкиСПоставщикомОбороты.Срок,
КонтрольДебиторкиСПоставщикомОбороты.ВидСрока,
КонтрольДебиторкиСПоставщикомОбороты.ВариантОплаты
ПОМЕСТИТЬ втОборотыПросроченнойЗадолженности
ИЗ
РегистрНакопления.КонтрольДебиторкиСПоставщиком КАК КонтрольДебиторкиСПоставщикомОбороты
ГДЕ
КонтрольДебиторкиСПоставщикомОбороты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
И (КонтрольДебиторкиСПоставщикомОбороты.АналитикаУчетаПоПартнерам, КонтрольДебиторкиСПоставщикомОбороты.ЗаказПоставщику) В
(ВЫБРАТЬ
втДолгиОкончательный.АналитикаУчетаПоПартнерам,
втДолгиОкончательный.ЗаказПоставщику
ИЗ
втОборот КАК втДолгиОкончательный)
СГРУППИРОВАТЬ ПО
КонтрольДебиторкиСПоставщикомОбороты.АналитикаУчетаПоПартнерам,
КонтрольДебиторкиСПоставщикомОбороты.ЗаказПоставщику,
КонтрольДебиторкиСПоставщикомОбороты.Период,
КонтрольДебиторкиСПоставщикомОбороты.Регистратор,
КонтрольДебиторкиСПоставщикомОбороты.ПроцентПлатежа,
КонтрольДебиторкиСПоставщикомОбороты.БазоваяДата,
КонтрольДебиторкиСПоставщикомОбороты.Срок,
КонтрольДебиторкиСПоставщикомОбороты.ВидСрока,
КонтрольДебиторкиСПоставщикомОбороты.ВариантОплаты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
КонтрольДебиторкиСПоставщикомОбороты.АналитикаУчетаПоПартнерам,
КонтрольДебиторкиСПоставщикомОбороты.ЗаказПоставщику,
НАЧАЛОПЕРИОДА(КонтрольДебиторкиСПоставщикомОбороты.Период, МЕСЯЦ) КАК НачалоПериода,
КОНЕЦПЕРИОДА(КонтрольДебиторкиСПоставщикомОбороты.Период, МЕСЯЦ) КАК КонецПериода,
СУММА(КонтрольДебиторкиСПоставщикомОбороты.Сумма) КАК Сумма
ПОМЕСТИТЬ втОборотыПросроченнойЗадолженностиПоМесяцам
ИЗ
втОборотыПросроченнойЗадолженности КАК КонтрольДебиторкиСПоставщикомОбороты
СГРУППИРОВАТЬ ПО
КонтрольДебиторкиСПоставщикомОбороты.АналитикаУчетаПоПартнерам,
КонтрольДебиторкиСПоставщикомОбороты.ЗаказПоставщику,
НАЧАЛОПЕРИОДА(КонтрольДебиторкиСПоставщикомОбороты.Период, МЕСЯЦ),
КОНЕЦПЕРИОДА(КонтрольДебиторкиСПоставщикомОбороты.Период, МЕСЯЦ)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОборотыПоМесяцам.АналитикаУчетаПоПартнерам,
ОборотыПоМесяцам.ЗаказПоставщику,
ОборотыПоМесяцам.НачалоПериода,
ОборотыПоМесяцам.КонецПериода,
ОборотыПоМесяцам.Сумма,
СУММА(ОборотыПоМесяцамКопия.Сумма) КАК СуммаПосле,
СУММА(ОборотыПоМесяцамКопия.Сумма) - ОборотыПоМесяцам.Сумма КАК СуммаДо
ПОМЕСТИТЬ втОборотыПросроченныеПоМесяцамНарастающие
ИЗ
втОборотыПросроченнойЗадолженностиПоМесяцам КАК ОборотыПоМесяцам
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втОборотыПросроченнойЗадолженностиПоМесяцам КАК ОборотыПоМесяцамКопия
ПО ОборотыПоМесяцам.АналитикаУчетаПоПартнерам = ОборотыПоМесяцамКопия.АналитикаУчетаПоПартнерам
И ОборотыПоМесяцам.ЗаказПоставщику = ОборотыПоМесяцамКопия.ЗаказПоставщику
И ОборотыПоМесяцам.НачалоПериода <= ОборотыПоМесяцамКопия.НачалоПериода
СГРУППИРОВАТЬ ПО
ОборотыПоМесяцам.НачалоПериода,
ОборотыПоМесяцам.КонецПериода,
ОборотыПоМесяцам.АналитикаУчетаПоПартнерам,
ОборотыПоМесяцам.ЗаказПоставщику,
ОборотыПоМесяцам.Сумма
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Долги.АналитикаУчетаПоПартнерам,
Долги.ЗаказПоставщику,
Долги.Долг,
ОборотыПоМесНарастающие.НачалоПериода,
ОборотыПоМесНарастающие.КонецПериода,
Долги.Долг - ОборотыПоМесНарастающие.СуммаДо КАК ОстатокДолга
ПОМЕСТИТЬ втДолгиПросроченныеПоВыбраннымМесяцам
ИЗ
втДолгиПросроченные КАК Долги
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втОборотыПросроченныеПоМесяцамНарастающие КАК ОборотыПоМесНарастающие
ПО Долги.АналитикаУчетаПоПартнерам = ОборотыПоМесНарастающие.АналитикаУчетаПоПартнерам
И Долги.ЗаказПоставщику = ОборотыПоМесНарастающие.ЗаказПоставщику
И Долги.Долг > ОборотыПоМесНарастающие.СуммаДо
И Долги.Долг <= ОборотыПоМесНарастающие.СуммаПосле
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Обороты.АналитикаУчетаПоПартнерам,
Обороты.ЗаказПоставщику,
Обороты.Документ,
Обороты.Период,
ДолгиПоВыбМесяцам.Долг,
ДолгиПоВыбМесяцам.ОстатокДолга,
Обороты.Сумма
ПОМЕСТИТЬ ДвиженияПросроченныеПоВыбраннымМесяцам
ИЗ
втОборотыПросроченнойЗадолженности КАК Обороты
ЛЕВОЕ СОЕДИНЕНИЕ втДолгиПросроченныеПоВыбраннымМесяцам КАК ДолгиПоВыбМесяцам
ПО Обороты.АналитикаУчетаПоПартнерам = ДолгиПоВыбМесяцам.АналитикаУчетаПоПартнерам
И Обороты.ЗаказПоставщику = ДолгиПоВыбМесяцам.ЗаказПоставщику
И Обороты.Период >= ДолгиПоВыбМесяцам.НачалоПериода
И Обороты.Период <= ДолгиПоВыбМесяцам.КонецПериода
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДвиженияПоВыбМесяцам.АналитикаУчетаПоПартнерам,
ДвиженияПоВыбМесяцам.ЗаказПоставщику,
ДвиженияПоВыбМесяцам.Документ,
ДвиженияПоВыбМесяцам.Период,
ДвиженияПоВыбМесяцам.Сумма,
СУММА(ДвиженияПоВыбМесяцамКопия.Сумма) КАК СуммаПосле,
СУММА(ДвиженияПоВыбМесяцамКопия.Сумма) - ДвиженияПоВыбМесяцам.Сумма КАК СуммаДо,
ДвиженияПоВыбМесяцам.ОстатокДолга
ПОМЕСТИТЬ ДвиженияПредварительныеПросроченные
ИЗ
ДвиженияПросроченныеПоВыбраннымМесяцам КАК ДвиженияПоВыбМесяцам
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДвиженияПросроченныеПоВыбраннымМесяцам КАК ДвиженияПоВыбМесяцамКопия
ПО ДвиженияПоВыбМесяцам.АналитикаУчетаПоПартнерам = ДвиженияПоВыбМесяцамКопия.АналитикаУчетаПоПартнерам
И ДвиженияПоВыбМесяцам.ЗаказПоставщику = ДвиженияПоВыбМесяцамКопия.ЗаказПоставщику
И ДвиженияПоВыбМесяцам.Период <= ДвиженияПоВыбМесяцамКопия.Период
СГРУППИРОВАТЬ ПО
ДвиженияПоВыбМесяцам.АналитикаУчетаПоПартнерам,
ДвиженияПоВыбМесяцам.ЗаказПоставщику,
ДвиженияПоВыбМесяцам.Документ,
ДвиженияПоВыбМесяцам.Период,
ДвиженияПоВыбМесяцам.Сумма,
ДвиженияПоВыбМесяцам.ОстатокДолга
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДвиженияПредв.АналитикаУчетаПоПартнерам,
ДвиженияПредв.ЗаказПоставщику,
ДвиженияПредв.Документ,
ДвиженияПредв.Период КАК Период,
ДвиженияПредв.ОстатокДолга - ДвиженияПредв.СуммаДо КАК СуммаДолгаПросроченно
ПОМЕСТИТЬ ДвиженияОкончательныеПросроченные
ИЗ
ДвиженияПредварительныеПросроченные КАК ДвиженияПредв
ГДЕ
ДвиженияПредв.ОстатокДолга > ДвиженияПредв.СуммаДо
И ДвиженияПредв.ОстатокДолга <= ДвиженияПредв.СуммаПосле
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МИНИМУМ(Обороты.Период) КАК Период,
Обороты.Документ,
СУММА(ВЫБОР
КОГДА Обороты.Документ = ДвиженияОконч.Документ
ТОГДА ДвиженияОконч.СуммаДолгаПросроченно
ИНАЧЕ Обороты.Сумма
КОНЕЦ) КАК СуммаДолгаПросроченно,
Обороты.АналитикаУчетаПоПартнерам,
Обороты.ЗаказПоставщику
ПОМЕСТИТЬ втДолгиОкончательныйПросроченный
ИЗ
втОборотыПросроченнойЗадолженности КАК Обороты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДвиженияОкончательныеПросроченные КАК ДвиженияОконч
ПО Обороты.АналитикаУчетаПоПартнерам = ДвиженияОконч.АналитикаУчетаПоПартнерам
И Обороты.ЗаказПоставщику = ДвиженияОконч.ЗаказПоставщику
И Обороты.Период >= ДвиженияОконч.Период
И Обороты.Документ = ДвиженияОконч.Документ
СГРУППИРОВАТЬ ПО
Обороты.Документ,
Обороты.АналитикаУчетаПоПартнерам,
Обороты.ЗаказПоставщику
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втПервичныйОборот.Организация КАК Организация,
втПервичныйОборот.Контрагент КАК Контрагент,
втПервичныйОборот.Договор КАК Договор,
втПервичныйОборот.ЗаказПоставщику КАК ЗаказПоставщику,
втПервичныйОборот.Заказ КАК Заказ,
втПервичныйОборот.ДТ КАК ДТ,
втПервичныйОборот.КТ КАК КТ,
втПервичныйОборот.Регистратор КАК Регистратор,
втПервичныйОборот.ДатаДокумента КАК ДатаДокумента,
втПервичныйОборот.ДатаПоставки КАК ДатаПоставки,
втПервичныйОборот.НачальныйОстаток КАК НачальныйОстаток,
втПервичныйОборот.КонечныйОстаток КАК КонечныйОстаток,
втПервичныйОборот.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
ЕСТЬNULL(втДолгиОкончательный.СуммаДолга, 0) КАК СуммаДолга,
втДолгиОкончательныйПросроченный.СуммаДолгаПросроченно КАК СуммаДолгаПросроченно,
втДолгиОкончательныйПросроченный.Период КАК ДатаПросрочки,
втОборотыПросроченнойЗадолженности.Период КАК КонтрактнаяДата,
втОборотыПросроченнойЗадолженности.Сумма КАК СуммаКОплате,
втОборотыПросроченнойЗадолженности.ПроцентПлатежа КАК кнтПроцентПлатежа,
втОборотыПросроченнойЗадолженности.БазоваяДата КАК кнтБазоваяДата,
втОборотыПросроченнойЗадолженности.Срок КАК кнтСрок,
втОборотыПросроченнойЗадолженности.ВидСрока КАК кнтВидСрока,
втОборотыПросроченнойЗадолженности.ВариантОплаты КАК кнтВариантОплаты,
втДолгиОкончательныйПросроченный.Период КАК ДатаПросрочкиМакс,
ВЫБОР
КОГДА ДолгПоставщика.ДолгПоставщикаОстаток > 0
ТОГДА ДолгПоставщика.ДолгПоставщикаОстаток
ИНАЧЕ 0
КОНЕЦ КАК ДолгПоставщика,
втПервичныйОборот.СтатусОтражения
ИЗ
втПервичныйОборот КАК втПервичныйОборот
ЛЕВОЕ СОЕДИНЕНИЕ втОборотыПросроченнойЗадолженности КАК втОборотыПросроченнойЗадолженности
ПО втПервичныйОборот.АналитикаУчетаПоПартнерам = втОборотыПросроченнойЗадолженности.АналитикаУчетаПоПартнерам
И втПервичныйОборот.Регистратор = втОборотыПросроченнойЗадолженности.Документ
И втПервичныйОборот.ЗаказПоставщику = втОборотыПросроченнойЗадолженности.ЗаказПоставщику
ЛЕВОЕ СОЕДИНЕНИЕ втДолгиОкончательный КАК втДолгиОкончательный
ПО втПервичныйОборот.АналитикаУчетаПоПартнерам = втДолгиОкончательный.АналитикаУчетаПоПартнерам
И втПервичныйОборот.Регистратор = втДолгиОкончательный.Регистратор
И втПервичныйОборот.ЗаказПоставщику = втДолгиОкончательный.ЗаказПоставщику
И (втОборотыПросроченнойЗадолженности.Период = втДолгиОкончательный.Период)
ЛЕВОЕ СОЕДИНЕНИЕ втДолгиОкончательныйПросроченный КАК втДолгиОкончательныйПросроченный
ПО втПервичныйОборот.Регистратор = втДолгиОкончательныйПросроченный.Документ
И втПервичныйОборот.АналитикаУчетаПоПартнерам = втДолгиОкончательныйПросроченный.АналитикаУчетаПоПартнерам
И втПервичныйОборот.ЗаказПоставщику = втДолгиОкончательныйПросроченный.ЗаказПоставщику
И (втДолгиОкончательныйПросроченный.Период = втОборотыПросроченнойЗадолженности.Период)
ЛЕВОЕ СОЕДИНЕНИЕ втДолгПоставщика КАК ДолгПоставщика
ПО втПервичныйОборот.АналитикаУчетаПоПартнерам = ДолгПоставщика.АналитикаУчетаПоПартнерам
И втПервичныйОборот.ЗаказПоставщику = ДолгПоставщика.ЗаказПоставщику
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот