При ведении взаиморасчетов с детализацией «По договорам» пользователи часто сталкиваются с необходимостью видеть задолженность не общей суммой по контрагенту, а в разрезе конкретных расчетных документов (накладных реализации). Сложность заключается в том, что оплаты от клиентов часто поступают произвольными суммами, авансами или закрывают сразу несколько поставок, из-за чего прямой привязки между платежным поручением и накладной в первичных документах нет.
Разберем архитектуру взаиморасчетов в программе «1С:Управление торговлей 11.5» и выясним, как решить данную задачу без написания громоздких алгоритмов ручного распределения сумм.
В ранних конфигурациях (например, УТ 10.3) при детализации расчетов по договору сопоставление платежей и отгрузок действительно требовалось выгружать в таблицу значений и последовательно закрывать по методу FIFO или LIFO. В актуальных релизах «1С:Управление торговлей 11.5» реализована онлайн-архитектура взаиморасчетов, которая значительно упрощает эту работу разработчику.
Проанализируем основные механизмы работы системы:
РасчетыСКлиентамиПоСрокам. Даже если в договоре указан общий порядок расчетов «По договорам», система при проведении документов в фоновом или онлайн-режиме производит автоматическое распределение платежей по накладным. В данном регистре фиксируются измерения РасчетныйДокумент, ДатаПлановогоПогашения, ДатаВозникновения и ресурс Долг.РасчетыСКлиентамиПоДокументам. Обратите внимание, что при включенном современном онлайн-режиме взаиморасчетов данный регистр является устаревшим и по умолчанию не заполняется. Строить отчеты на его основе не следует.Прежде чем приступать к разработке собственного отчета на схеме компоновки данных (СКД), рассмотрим возможности типового функционала конфигурации. В системе предусмотрен штатный отчет «Задолженность клиентов по срокам» (находится в разделе «Продажи — Отчеты по продажам»).
Настроим типовой отчет под требования задачи по шагам:
Расчетный документ (или Объект расчетов).В результате отчет выведет детализацию до первичных документов с указанием просроченной суммы по каждому из них.
Если требуется нестандартная форма или интеграция данных в другие системы, отчет можно легко построить на СКД с помощью одного запроса к виртуальной таблице остатков. Никаких промежуточных выгрузок в таблицу значений и переборов в цикле не потребуется.
Посмотрим на пример запроса для схемы компоновки данных:
ВЫБРАТЬ
Расчеты.АналитикаУчетаПоПартнерам.Договор КАК Договор,
Расчеты.АналитикаУчетаПоПартнерам.Партнер КАК Партнер,
Расчеты.РасчетныйДокумент КАК РасчетныйДокумент,
Расчеты.ДатаВозникновения КАК ДатаВозникновения,
Расчеты.ДатаПлановогоПогашения КАК ДатаПлановогоПогашения,
Расчеты.ДолгОстаток КАК СуммаДолга,
РАЗНОСТЬДАТ(Расчеты.ДатаПлановогоПогашения, &Период, ДЕНЬ) КАК ДнейПросрочки
ИЗ
РегистрНакопления.РасчетыСКлиентамиПоСрокам.Остатки(
&Период,
ДатаПлановогоПогашения < &Период
И ДолгОстаток > 0) КАК Расчеты
Разберем параметры и логику запроса:
РегистрНакопления.РасчетыСКлиентамиПоСрокам.Остатки.ДатаПлановогоПогашения < &Период, что позволяет сразу отсечь текущую непросроченную задолженность.РАЗНОСТЬДАТ вычисляет количество дней просрочки относительно даты формирования отчета.СуммаДолга.Если в базе по каким-либо причинам отключен онлайн-учет взаиморасчетов по срокам или требуется реализовать индивидуальный алгоритм распределения в кодовой обработке, применяется последовательное гашение задолженности.
Рассмотрим две базовые методики распределения оплат:
При использовании первого и второго решений иногда можно обнаружить, что накладные закрываются некорректно или долг распределяется не по порядку. Выясним основные причины таких расхождений и способы их устранения:
РасчетыСКлиентами могут расходиться со сроковым регистром РасчетыСКлиентамиПоСрокам. Для исправления ситуации необходимо выполнить операцию «Актуализация движений документов по данным взаиморасчетов» в обработке «Закрытие месяца» либо запустить регламентное задание исправления разрывов взаиморасчетов.КорректировкаЗаписейРегистров нарушает работу онлайн-модулей взаиморасчетов. Любые исправления долгов следует выполнять исключительно типовыми документами: КорректировкаЗадолженности или ВзаимозачетЗадолженности.Если компания хочет отказаться от автоматического расчетного распределения и видеть жесткую привязку оплат к накладным на уровне первичных документов, потребуется перевести учет на детализацию «По расчетным документам».
В существующем договоре с проведенными документами изменить реквизит детализации расчетов невозможно. В таком случае порядок действий следующий: