Как рассчитать количество дней просрочки дебиторской задолженности в 1С:Управление торговлей 10.3

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

Вопрос определения срока просрочки в конфигурации «Управление торговлей», редакция 10.3, является классической задачей для аналитиков и разработчиков. В отличие от более современных редакций, здесь механизмы планирования оплат менее автоматизированы, что требует четкого понимания структуры данных. Разберем подробно, от какой даты считать просрочку и какие инструменты для этого предоставляет система.

Анализ типовых возможностей: Отчет по срокам долга

Прежде чем приступать к разработке собственного решения, проанализируем стандартный функционал. В конфигурации УТ 10.3 предусмотрен отчет «Дебиторская задолженность по срокам долга». Этот отчет позволяет классифицировать задолженность по временным интервалам (например, 0–7 дней, 8–15 дней и т.д.).

Рассмотрим, как он работает: если в настройках договора с контрагентом не установлен флаг Вести взаиморасчеты по документам расчетов, система использует метод FIFO. Она берет общую сумму задолженности и «покрывает» ее самыми свежими платежами, оставляя непогашенными самые старые документы отгрузки. Просрочка в этом случае считается от даты самой старой неоплаченной реализации.

Определение точки отсчета: От какой даты считать?

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

  1. Дата документа реализации плюс срок кредита по договору. В карточке договора в УТ 10.3 есть реквизит Допустимое число дней задолженности. Это самый простой способ: если отгрузка была 1-го числа, а в договоре прописано 5 дней, то просрочка начинается с 7-го числа.
  2. Дата плановой оплаты из «Заказа покупателя». Если бизнес-процесс предполагает создание заказов, то именно в заказе менеджер может указать индивидуальную дату оплаты для конкретной сделки. Это более гибкий подход, чем фиксированный срок в договоре.
  3. Дата фактического получения товара. Рассмотрим ситуацию, когда логистика занимает длительное время. В этом случае юридически просрочка может считаться не от даты выписки накладной в программе, а от даты отметки в ТТН о получении товара клиентом. Технически это можно реализовать через дополнительные реквизиты документа РеализацияТоваровУслуг.

Программная реализация расчета по методу FIFO

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

Рассмотрим пример логики на языке 1С:


// Пример упрощенного алгоритма получения дат возникновения задолженности
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ВзаиморасчетыОстатки.ДоговорКонтрагента,
    |	ВзаиморасчетыОстатки.СуммаВзаиморасчетовОстаток КАК Долг
    |ИЗ
    |	РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&Период, ) КАК ВзаиморасчетыОстатки";

// Далее необходимо сопоставить остаток с хронологией документов реализации

Для реализации точного расчета выполним следующие шаги:

  1. Получим текущий остаток долга по контрагенту/договору из регистра ВзаиморасчетыСКонтрагентами.
  2. Выберем все документы отгрузки (Реализации) по этому договору в обратном хронологическом порядке.
  3. Будем вычитать суммы документов из суммы остатка долга, пока остаток не станет равным нулю.
  4. Дата последнего документа, на котором «закончился» остаток долга, и будет датой возникновения самой старой задолженности.

Влияние ведения учета по документам расчетов

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

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

Учет производственного календаря

Важный нюанс, который часто упускают при расчете дней просрочки — это тип дней (календарные или рабочие). Если в договоре указано «5 рабочих дней», использование простой разности дат даст неверный результат.

Для корректного расчета проанализируем использование производственного календаря. В коде это реализуется через обращение к данным календаря (если он заполнен в системе):


// Пример функции для прибавления рабочих дней (условно)
Функция ПолучитьДатуОплаты(ДатаОтгрузки, КоличествоДней)
    // Используется запрос к регистру сведений "Данные производственного календаря"
    // Пропускаются выходные и праздничные дни
    Возврат ВычисленнаяДата;
КонецФункции

Важные моменты:

Резюме

Для создания корректного отчета по просрочке в УТ 10.3 мы рекомендуем использовать комбинацию данных из регистра ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов (если ведется детальный учет) и параметров договора. Если детальный учет по документам не ведется, используйте алгоритм распределения остатка по документам реализации (FIFO), чтобы найти дату самой старой неоплаченной поставки. Расчет дней просрочки в этом случае будет выглядеть как: ТекущаяДата - (ДатаРеализации + СрокПоДоговору).

← На главную