Дебиторская задолженность (фифо) в разрезе расходных на каждый день в периоде

1. zannv 85 28.06.21 13:14 Сейчас в теме +17 $m
Задача: необходимо получать остатки долга на каждый день выбранного периода по расходным накладным наиболее оптимальным способом. (УНФ, регистр РасчетыСПокупателями)

Если вкратце, то делать это нужно для расчета штрафов с учетом частичного погашения. Штраф на конкретный день считается как сумма всех штрафов по расходной за предыдущие дни + сумма штрафа за текущий день (% от суммы долга). То есть логика такая:

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. ссылки на отчеты по дебиторской задолженности, в которых решена задача отображения просто текущих долгов, предлагать не нужно, интересует именно вариант решения с остатками долга в разрезе расходных на каждый день.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. oleg-x 27 28.06.21 13:19 Сейчас в теме
Максимальный выбранный период ограничен? или пользователь может выбрать, день, неделю, месяц, год?
4. zannv 85 28.06.21 13:22 Сейчас в теме
(2) фактически выбор для пользователя неограничен, но в реальности, скорее всего, будет не больше месяца, либо ограничения обсуждаемы с пользователем. Предположим, ограничимся месяцем.
3. oleg-x 27 28.06.21 13:20 Сейчас в теме
Так же отчет требуется по 1-5 клиентам или будут формировать по всем клиентам (менеджера, направления и прочее)?
5. zannv 85 28.06.21 13:23 Сейчас в теме
(3) обычно либо по контрагенту, либо по контрагентам менеджера. Опять же думаю, что ограничения для пользователя обсуждаемы.
6. starik-2005 3040 28.06.21 13:34 Сейчас в теме
Есть два варианта: написать оверохрененный запрос (в принципе он не такой и охрененный, есть в Минимализмах Ильдаровича и в некоторых других статьях). Второй вариант - это постобработка, в принципе она не менее быстра, чем обычный запрос, а в ярде случаев будет быстрее.

Суть решения сводится к тому, что берутся события изменения долга - обороты, разрез - день. Соединяется это все со списком дат (с помощью порождающей выборки, в которой дата - это ДОБАВИТЬКДАТЕ(&НачалоПериода, ПорядковыйНомер, День). Дальше или соединением (треугольник на меньше равно дате) с самим собой и внутри расчет, конце группировка по максимальной дате, потом еще одно соединение по дате с исходной выборкой. Ну или просто постобработка, что, на мой взгляд, лучше.

В общем не стоит этот механизм 17-ти стартманей )))
7. zannv 85 28.06.21 13:37 Сейчас в теме
(6) что вы имеете в виду под постобработкой?
16. acces969 344 29.06.21 09:41 Сейчас в теме
(6) 17см это самое большое вознаграждение которое я встречал тут. Думал ради такого весь рунет сбежится)
17. zannv 85 29.06.21 09:44 Сейчас в теме
21. tolyan_ekb 104 29.06.21 14:13 Сейчас в теме
(16) раньше и не такое было. Помню один из авторов просил в комментариях к своей публикации указать похожие темы и за каждую ссылку давал по 1sm. Я тогда по быстрому штук 20 накидал и он мне отдал 20sm + еще столько же другим.
22. acces969 344 29.06.21 14:17 Сейчас в теме
24. tolyan_ekb 104 29.06.21 15:01 Сейчас в теме
(22) хотел публикацию улучшить
8. starik-2005 3040 28.06.21 13:38 Сейчас в теме
Под постобработкой я имею ввиду примерно вот это: https://infostart.ru/1c/articles/1223500/
9. oleg-x 27 28.06.21 13:39 Сейчас в теме
Не успел :-)
Все как написали выше. Только нужно определиться с одним нюансом.
Нужно ли начислять штрафы всегда или только в выбранном периоде. Можно обговорить сразу, что отчет формируется интервалами (раз в месяц или пол месяца).
10. zannv 85 28.06.21 13:41 Сейчас в теме
(9) штрафы начислять всегда с даты появления задолженности, за период только смотрим
11. starik-2005 3040 28.06.21 13:44 Сейчас в теме
(10)
штрафы начислять всегда с
Сдается мне, что этот отчет больше проверочный, нежели пользовательский. Фактически конечному пользователю нужен долг клиента (или поставщику, например) с учетом санкций. Т.е. колонка долга на дату Х, колонка пени, колонка итого. Но чтобы он понял, что цифрам можно верить, он просит сделать такой вот развернутый отчет. Закиньте его на местную биржу фрлансеров - те же 17 см потратите, полагаю, но в итоге получите готовое решение.
12. alex_bitti 140 28.06.21 14:30 Сейчас в теме
через вычисляемые поля, в общем модуле простую процедурку по расчету штрафа, в настройки вывода Таблица в колонки Период, думаю вашпе прокатить на раз. все микрофинансовые отчеты так сделаны))
13. zannv 85 28.06.21 14:38 Сейчас в теме
(12)и что же будет в этой простой процедурке?) ведь сам штраф рассчитать легко и незачем это делать в общем модуле. или вы предлагаете искать остатки на каждую дату в общем модуле?
14. alex_bitti 140 28.06.21 18:00 Сейчас в теме
(13) в этой процедурке будет просто получение процента от текущего долга, передается туда текущий долг и дата, если долг нарастающий то начальная дата, конечная и процент. в общем модуле потому-то вычисляемые поля в СКД умеют обращаться к процедурам в модулях, но нужно чтобы они были общими
28. alex_bitti 140 01.07.21 14:38 Сейчас в теме
(13) у вас получилось? просто я буквально параллельно с тем как вам писал делал подобный отчет только не задолженность а курс валюты у меня был по дням в столбцах, вариант точно рабочий, я как раз ваш вопрос увидел потому что в СКД писал ирешил посмотреть кто что по СКД спрашивает, вознаграждение мне не надо, реально просто я знаю как
15. jefjef 10 28.06.21 21:32 Сейчас в теме
Чем-то подобным когда-то занимался. Только считал кормодни крупного рогатого скота. Но суть примерно та же. Стояла скотина день на ферме, значит ела, значит день засчитываем. Потом это все было базой распределения затрат, в общем такая лирика. Решал через пакет запросов. Первой таблицей делал просто набор дат от начала до конца периода. Потом присоединял к датам произошедшие движения по животным и соответствующие расчеты.
18. DenisVol 3 29.06.21 10:09 Сейчас в теме
Когда-то считал долг клиента на дату расходной накладной.
19. oleg-x 27 29.06.21 12:50 Сейчас в теме
(16) (17) Тут единицы отвечают только ради СМ (исключение, когда надо что то скачать, а мани закончились), по большей части энтузиасты, помогают не ради награды.
А в принципе выше уже ответили, добавить особо нечего.
Если что то не понятно, спросите.
20. acces969 344 29.06.21 13:14 Сейчас в теме
(19) Ну я как раз та единица, что гриндит СМ. 5 лет не мог качать нужные обработки, вот сейчас время появилось "поработать". Даже автокликер выложил ради см
25. Dmitry888 41 29.06.21 17:09 Сейчас в теме
23. oleg-x 27 29.06.21 14:34 Сейчас в теме
(22) Время деньги, а у некоторых еще есть абонементы со СМ, которые некуда девать и если не потратить все равно сгорят.
27. gorakh 26 01.07.21 10:58 Сейчас в теме
Делал подобный отчет для УПП. Трудозатраты месяц.. Но в УПП уже был механизм офлайн разнесения предоплат на документы.
29. dshershen86 05.07.21 10:39 Сейчас в теме
Чисто пример, только у меня поиск как долга, так и просроченного долга. Ну и еще долга поставщика.
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Организация КАК Организация,
	РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Контрагент КАК Контрагент,
	РасчетыСПоставщиками.АналитикаУчетаПоПартнерам.Договор КАК Договор,
	РасчетыСПоставщиками.ЗаказПоставщику КАК ЗаказПоставщику,
	РасчетыСПоставщиками.ЗаказПоставщику КАК Заказ,
	РасчетыСПоставщиками.СуммаПриход КАК ДТ,
	РасчетыСПоставщиками.СуммаРасход КАК КТ,
	РасчетыСПоставщиками.Регистратор КАК Регистратор,
	ЕСТЬ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
	КОНЕЦ КАК ДолгПоставщика,
	втПервичныйОборот.СтатусОтражения
ИЗ
	втПервичныйОборот КАК втПервичныйОборот
		ЛЕВОЕ СОЕДИНЕНИЕ втОборотыПросроченнойЗадолженности КАК втОборотыПросроченнойЗадолженности
		ПО втПервичныйОборот.АналитикаУчетаПоПартнерам = втОборотыПросроченнойЗадолженности.АналитикаУчетаПоПартнерам
			И втПервичныйОборот.Регистратор = втОборотыПросроченнойЗадолженности.Документ
			И втПервичныйОборот.ЗаказПоставщику = втОборотыПросроченнойЗадолженности.ЗаказПоставщику
		ЛЕВОЕ СОЕДИНЕНИЕ втДолгиОкончательный КАК втДолгиОкончательный
		ПО втПервичныйОборот.АналитикаУчетаПоПартнерам = втДолгиОкончательный.АналитикаУчетаПоПартнерам
			И втПервичныйОборот.Регистратор = втДолгиОкончательный.Регистратор
			И втПервичныйОборот.ЗаказПоставщику = втДолгиОкончательный.ЗаказПоставщику
			И (втОборотыПросроченнойЗадолженности.Период = втДолгиОкончательный.Период)
		ЛЕВОЕ СОЕДИНЕНИЕ втДолгиОкончательныйПросроченный КАК втДолгиОкончательныйПросроченный
		ПО втПервичныйОборот.Регистратор = втДолгиОкончательныйПросроченный.Документ
			И втПервичныйОборот.АналитикаУчетаПоПартнерам = втДолгиОкончательныйПросроченный.АналитикаУчетаПоПартнерам
			И втПервичныйОборот.ЗаказПоставщику = втДолгиОкончательныйПросроченный.ЗаказПоставщику
			И (втДолгиОкончательныйПросроченный.Период = втОборотыПросроченнойЗадолженности.Период)
		ЛЕВОЕ СОЕДИНЕНИЕ втДолгПоставщика КАК ДолгПоставщика
		ПО втПервичныйОборот.АналитикаУчетаПоПартнерам = ДолгПоставщика.АналитикаУчетаПоПартнерам
			И втПервичныйОборот.ЗаказПоставщику = ДолгПоставщика.ЗаказПоставщику
Показать
30. polukaroff 3 07.07.21 22:27 Сейчас в теме
Чисто бесплатно: "Наиболее оптимальным" - тавтология )))
31. hamsar 15 08.07.21 08:15 Сейчас в теме
Оптимально:
Регистр сведений долги со штрафами.
Регламентное задание выполняющее запрос к регистру и рассчитывающее долг на каждый день.
В справочнике контрагентов срез последних отображать.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот