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