При анализе дебиторской задолженности в конфигурации «Торговля и склад 7.7» (ред. 9.2) пользователи часто сталкиваются с ситуацией: при установке флага «Только просроченные долги» отчет выводит контрагентов, у которых есть текущая просрочка, но в детальных строках отображает абсолютно все документы движения за прошлые периоды, включая давно закрытые и оплаченные накладные. Разберем причины такого поведения типового механизма и выясним, как получить чистый реестр неоплаченных документов без лишних движений.
Проанализируем, как устроен механизм формирования типовой ведомости взаиморасчетов:
Ведомость по контрагентам работает как фильтр верхнего уровня (по контрагенту или договору). Если у клиента есть хотя бы один просроченный долг, программа включает контрагента в выборку целиком. При включенной детализации по документам движения отчет выводит все регистраторы за выбранный период, не отсекая строки с нулевым конечным сальдо.Покупатели и Поставщики в разрезе измерения КредитныйДокумент. Если в настройках отчета выбрана группировка по регистраторам (документам движения), а не по кредитным документам, отчет показывает обороты каждого документа, а не актуальный остаток задолженности.КредитныйДокумент может содержать неактуальные хвосты взаиморасчетов, из-за чего закрытые накладные продолжают числиться с остатком.Решить задачу можно штатными средствами без изменения программного кода отчета. Для этого настроим параметры группировок и период следующим образом:
Ведомость по контрагентам.При таких настройках отчет выведет исключительно тех контрагентов, по которым есть просроченная задолженность, и покажет только конкретные неоплаченные накладные с суммами долга, скрыв обороты и оплаченные документы.
Если требуется получать печатную форму в виде реестра просроченных накладных без лишних колонок начального сальдо и оборотов за период, доработаем модуль отчета в конфигураторе. Рассмотрим основные шаги модификации:
Посмотрим на пример доработки цикла обхода результатов запроса в модуле отчета:
Пока Запрос.Группировка("Контрагент") = 1 Цикл
// Проверяем наличие долга по контрагенту в целом
Если Запрос.КонОст("СуммаВал") = 0 Тогда
Продолжить;
КонецЕсли;
Таб.ВывестиСекцию("Контрагент");
Пока Запрос.Группировка("КредитныйДокумент") = 1 Цикл
// Проверяем, есть ли остаток долга по конкретной накладной
СуммаДолга = Запрос.КонОст("СуммаВал");
Если СуммаДолга <= 0 Тогда
// Пропускаем полностью закрытые и переплаченные документы
Продолжить;
КонецЕсли;
// Выводим строку с кредитным документом и суммой задолженности
Таб.ВывестиСекцию("Документ");
КонецЦикла;
КонецЦикла;
Чтобы отчеты по взаиморасчетам и просроченной задолженности формировались без искажений, обратим внимание на регламентные процедуры:
СрокКредита в договорах контрагентов и флага ведения взаиморасчетов («По договору в целом» либо «По счетам/накладным»).Корректировка долга.