Вопрос определения срока просрочки в конфигурации «Управление торговлей», редакция 10.3, является классической задачей для аналитиков и разработчиков. В отличие от более современных редакций, здесь механизмы планирования оплат менее автоматизированы, что требует четкого понимания структуры данных. Разберем подробно, от какой даты считать просрочку и какие инструменты для этого предоставляет система.
Прежде чем приступать к разработке собственного решения, проанализируем стандартный функционал. В конфигурации УТ 10.3 предусмотрен отчет «Дебиторская задолженность по срокам долга». Этот отчет позволяет классифицировать задолженность по временным интервалам (например, 0–7 дней, 8–15 дней и т.д.).
Рассмотрим, как он работает: если в настройках договора с контрагентом не установлен флаг Вести взаиморасчеты по документам расчетов, система использует метод FIFO. Она берет общую сумму задолженности и «покрывает» ее самыми свежими платежами, оставляя непогашенными самые старые документы отгрузки. Просрочка в этом случае считается от даты самой старой неоплаченной реализации.
Выбор даты, от которой начинается отсчет просрочки, зависит от учетной политики вашей организации и условий договоров. Рассмотрим основные варианты, которые встречаются в практике:
Допустимое число дней задолженности. Это самый простой способ: если отгрузка была 1-го числа, а в договоре прописано 5 дней, то просрочка начинается с 7-го числа.РеализацияТоваровУслуг.Если типовой отчет не подходит и вам нужно вывести точное количество дней просрочки в отдельную колонку собственного отчета, проанализируем алгоритм расчета. Нам потребуется обойти документы, сформировавшие остаток долга.
Рассмотрим пример логики на языке 1С:
// Пример упрощенного алгоритма получения дат возникновения задолженности
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВзаиморасчетыОстатки.ДоговорКонтрагента,
| ВзаиморасчетыОстатки.СуммаВзаиморасчетовОстаток КАК Долг
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&Период, ) КАК ВзаиморасчетыОстатки";
// Далее необходимо сопоставить остаток с хронологией документов реализации
Для реализации точного расчета выполним следующие шаги:
ВзаиморасчетыСКонтрагентами.Выясним причину, по которой расчет может быть затруднен. Если в договоре включен признак Вести взаиморасчеты по документам расчетов, задача упрощается. В этом случае данные хранятся в регистре накопления ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.
Здесь система четко хранит информацию: какая именно накладная не оплачена. В таком случае нам не нужно вычислять просрочку по FIFO — мы просто берем разность между текущей датой и Датой возникновения из регистра (с учетом срока кредита). Проанализируем ситуацию с возвратами: если клиент вернул товар, важно, чтобы документ ВозвратТоваровОтПокупателя был правильно привязан к сделке, иначе он уменьшит общий долг, но не закроет конкретную просроченную накладную.
Важный нюанс, который часто упускают при расчете дней просрочки — это тип дней (календарные или рабочие). Если в договоре указано «5 рабочих дней», использование простой разности дат даст неверный результат.
Для корректного расчета проанализируем использование производственного календаря. В коде это реализуется через обращение к данным календаря (если он заполнен в системе):
// Пример функции для прибавления рабочих дней (условно)
Функция ПолучитьДатуОплаты(ДатаОтгрузки, КоличествоДней)
// Используется запрос к регистру сведений "Данные производственного календаря"
// Пропускаются выходные и праздничные дни
Возврат ВычисленнаяДата;
КонецФункции
Важные моменты:
Срок оплаты.Для создания корректного отчета по просрочке в УТ 10.3 мы рекомендуем использовать комбинацию данных из регистра ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов (если ведется детальный учет) и параметров договора. Если детальный учет по документам не ведется, используйте алгоритм распределения остатка по документам реализации (FIFO), чтобы найти дату самой старой неоплаченной поставки. Расчет дней просрочки в этом случае будет выглядеть как: ТекущаяДата - (ДатаРеализации + СрокПоДоговору).