Как получить просроченную задолженность по документам, если расчеты ведутся по договорам в УТ 11.5?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При ведении взаиморасчетов с детализацией «По договорам» пользователи часто сталкиваются с необходимостью видеть задолженность не общей суммой по контрагенту, а в разрезе конкретных расчетных документов (накладных реализации). Сложность заключается в том, что оплаты от клиентов часто поступают произвольными суммами, авансами или закрывают сразу несколько поставок, из-за чего прямой привязки между платежным поручением и накладной в первичных документах нет.

Разберем архитектуру взаиморасчетов в программе «1С:Управление торговлей 11.5» и выясним, как решить данную задачу без написания громоздких алгоритмов ручного распределения сумм.

Архитектурные особенности учета расчетов в УТ 11.5

В ранних конфигурациях (например, УТ 10.3) при детализации расчетов по договору сопоставление платежей и отгрузок действительно требовалось выгружать в таблицу значений и последовательно закрывать по методу FIFO или LIFO. В актуальных релизах «1С:Управление торговлей 11.5» реализована онлайн-архитектура взаиморасчетов, которая значительно упрощает эту работу разработчику.

Проанализируем основные механизмы работы системы:

  1. Регистр накопления РасчетыСКлиентамиПоСрокам. Даже если в договоре указан общий порядок расчетов «По договорам», система при проведении документов в фоновом или онлайн-режиме производит автоматическое распределение платежей по накладным. В данном регистре фиксируются измерения РасчетныйДокумент, ДатаПлановогоПогашения, ДатаВозникновения и ресурс Долг.
  2. Регистр накопления РасчетыСКлиентамиПоДокументам. Обратите внимание, что при включенном современном онлайн-режиме взаиморасчетов данный регистр является устаревшим и по умолчанию не заполняется. Строить отчеты на его основе не следует.
  3. Порядок распределения оплат. Логика сопоставления оплат и накладных задается в настройках системы (раздел «НСИ и администрирование — Казначейство и взаиморасчеты — Взаиморасчеты»). Программа может закрывать долги либо по хронологии даты документов (классический FIFO), либо по плановой дате платежа (в первую очередь закрываются накладные с более ранним сроком наступления оплаты).

Решение 1. Использование типового отчета без доработок

Прежде чем приступать к разработке собственного отчета на схеме компоновки данных (СКД), рассмотрим возможности типового функционала конфигурации. В системе предусмотрен штатный отчет «Задолженность клиентов по срокам» (находится в разделе «Продажи — Отчеты по продажам»).

Настроим типовой отчет под требования задачи по шагам:

  1. Откроем отчет «Задолженность клиентов по срокам» и перейдем в расширенный режим настроек через меню «Настройки».
  2. На вкладке «Структура» добавим в группировку строк поле Расчетный документ (или Объект расчетов).
  3. В фильтре «Включать задолженность клиента» выберем вариант «Только фактическая» (это исключит плановые неоплаченные заказы и оставит только проведенные накладные).
  4. Проверим используемый вариант классификации задолженности, где настраиваются календарные интервалы просрочки (например: 1–15 дней, 16–30 дней).

В результате отчет выведет детализацию до первичных документов с указанием просроченной суммы по каждому из них.

Решение 2. Разработка собственного отчета на СКД

Если требуется нестандартная форма или интеграция данных в другие системы, отчет можно легко построить на СКД с помощью одного запроса к виртуальной таблице остатков. Никаких промежуточных выгрузок в таблицу значений и переборов в цикле не потребуется.

Посмотрим на пример запроса для схемы компоновки данных:


ВЫБРАТЬ
	Расчеты.АналитикаУчетаПоПартнерам.Договор КАК Договор,
	Расчеты.АналитикаУчетаПоПартнерам.Партнер КАК Партнер,
	Расчеты.РасчетныйДокумент КАК РасчетныйДокумент,
	Расчеты.ДатаВозникновения КАК ДатаВозникновения,
	Расчеты.ДатаПлановогоПогашения КАК ДатаПлановогоПогашения,
	Расчеты.ДолгОстаток КАК СуммаДолга,
	РАЗНОСТЬДАТ(Расчеты.ДатаПлановогоПогашения, &Период, ДЕНЬ) КАК ДнейПросрочки
ИЗ
	РегистрНакопления.РасчетыСКлиентамиПоСрокам.Остатки(
			&Период,
			ДатаПлановогоПогашения < &Период
				И ДолгОстаток > 0) КАК Расчеты

Разберем параметры и логику запроса:

  1. В качестве источника используем таблицу РегистрНакопления.РасчетыСКлиентамиПоСрокам.Остатки.
  2. В параметрах виртуальной таблицы устанавливаем фильтр ДатаПлановогоПогашения < &Период, что позволяет сразу отсечь текущую непросроченную задолженность.
  3. Функция РАЗНОСТЬДАТ вычисляет количество дней просрочки относительно даты формирования отчета.
  4. В СКД настраиваем группировку по партнеру, договору и расчетному документу с выводом ресурса СуммаДолга.

Решение 3. Алгоритмическое распределение (FIFO / LIFO)

Если в базе по каким-либо причинам отключен онлайн-учет взаиморасчетов по срокам или требуется реализовать индивидуальный алгоритм распределения в кодовой обработке, применяется последовательное гашение задолженности.

Рассмотрим две базовые методики распределения оплат:

  1. Прямой метод (FIFO): берутся все отгрузки по договору в хронологическом порядке и все оплаты. Каждая оплата последовательно уменьшает сумму самой ранней открытой накладной. Документы, по которым сумма долга осталась больше нуля и текущая дата превышает дату отгрузки плюс отсрочку из договора, признаются просроченными.
  2. Ретроспективный метод (LIFO задолженности): определяется общая сумма текущего входящего сальдо долга по договору. Далее выбираются накладные в обратном хронологическом порядке (от самых свежих к старым). Сумма долга списывается на свежие накладные. Те более ранние документы, на которые остатка долга уже «не хватило», считаются полностью оплаченными. Документы, попавшие под распределение с истекшим сроком оплаты, выводятся как просроченные.

Что делать, если данные по срокам искажаются?

При использовании первого и второго решений иногда можно обнаружить, что накладные закрываются некорректно или долг распределяется не по порядку. Выясним основные причины таких расхождений и способы их устранения:

  1. Разрывы между регистрами. При высокой нагрузке на базу агрегированные остатки регистра РасчетыСКлиентами могут расходиться со сроковым регистром РасчетыСКлиентамиПоСрокам. Для исправления ситуации необходимо выполнить операцию «Актуализация движений документов по данным взаиморасчетов» в обработке «Закрытие месяца» либо запустить регламентное задание исправления разрывов взаиморасчетов.
  2. Ручные корректировки. Использование документа КорректировкаЗаписейРегистров нарушает работу онлайн-модулей взаиморасчетов. Любые исправления долгов следует выполнять исключительно типовыми документами: КорректировкаЗадолженности или ВзаимозачетЗадолженности.
  3. Условия оплаты в договорах. Если в договоре или накладной не указан график оплаты либо отсрочка установлена в 0 дней, накладная попадает в статус просроченной непосредственно в день ее проведения.

Смена детализации расчетов на будущее

Если компания хочет отказаться от автоматического расчетного распределения и видеть жесткую привязку оплат к накладным на уровне первичных документов, потребуется перевести учет на детализацию «По расчетным документам».

В существующем договоре с проведенными документами изменить реквизит детализации расчетов невозможно. В таком случае порядок действий следующий:

  1. Старый договор закрывается (устанавливается флаг «Закрыт»).
  2. Создается новый договор с порядком расчетов «По расчетным документам».
  3. Остаток долга переносится со старого договора на новый с помощью документа «Взаимозачет задолженности» с видом операции «Перенос задолженности», где остаток сальдо вручную распределяется по строкам открытых накладных.
← На главную