При работе в конфигурации 1С:Управление торговлей (редакция 10.3) пользователи часто сталкиваются с ограничением: флаг Контролировать число дней задолженности в карточке договора с контрагентом становится доступен только при включенном режиме Вести по документам расчетов с контрагентами. Попытки включить этот флаг программно или сделать его видимым не дают результата: система перестает проводить новые документы отгрузки РеализацияТоваровИУслуг, требуя полного погашения конкретных накладных.
В этой статье разберем архитектурные причины такого поведения программы, а также рассмотрим штатные и программные способы решения этой задачи без необходимости вручную создавать платежные документы на основании каждой реализации.
Проанализируем, как система 1С хранит данные о долгах. Взаиморасчеты с покупателями фиксируются в регистре накопления ВзаиморасчетыСКонтрагентами.
Когда в договоре выбран способ ведения расчетов По договору в целом, измерения регистра заполняются только разрезом контрагента и договора, а измерение ДокументРасчетовСКонтрагентом остается пустым. В этом случае конфигурация видит только общий суммовой остаток (дебетовое или кредитовое сальдо), но физически не может определить дату самой старой непогашенной отгрузки.
Если же включен флаг Вести по документам расчетов с контрагентами, регистр начинает записывать каждую реализацию в отдельности. Только имея аналитику по конкретным накладным, типовой механизм контроля задолженности может посчитать разницу в днях между датой текущего документа и датой самого старого неоплаченного документа расчетов.
Именно поэтому простое изменение видимости реквизита на форме договора не работает: без заполнения документов расчетов алгоритм проверки не сможет рассчитать возраст долга.
Распространенная ошибка пользователей — представление о том, что при подокументном учете кассовый или банковский документ (ПриходныйКассовыйОрдер, ПлатежноеПоручениеВходящее) обязательно нужно выписывать строго кнопкой Ввести на основании из накладной РеализацияТоваровИУслуг.
В типовой конфигурации предусмотрен штатный механизм автоматического распределения поступивших средств по методу FIFO (от самых старых реализаций к новым):
ПриходныйКассовыйОрдер или ПлатежноеПоручениеВходящее).Система автоматически найдет все неоплаченные реализации по данному договору, отсортирует их по дате и распределит введенную сумму оплаты по старейшим накладным. В результате пользователю не требуется создавать отдельный платежный документ под каждую реализацию — один приходный ордер может погасить сразу несколько неоплаченных документов расчетов.
Если предложенный штатный вариант с заполнением по остаткам в платежных документах по каким-то причинам не подходит операторам, рассмотрим варианты автоматизации процесса:
Можно написать внешнюю обработку или фоновое задание, которое при проведении оплаты будет автоматически подбирать неоплаченные реализации и заполнять табличную часть ДокументыРасчетов за оператора.
Если бизнес-процессы требуют вести расчеты строго По договору в целом, но контролировать глубину задолженности все же необходимо, типовую проверку заменяют доработкой в подписке на событие (например, ПередЗаписью или ОбработкаПроведения документа РеализацияТоваровИУслуг).
В этом случае программист пишет запрос к регистру ВзаиморасчетыСКонтрагентами, который virtual-методом рассчитывает сальдо и виртуально распределяет оплаты по реализациям нарастающим итогом (FIFO). Полученная дата первой непогашенной отгрузки сравнивается с датой проводимого документа. Если допустимый срок превышен, проведение блокируется.
Важно учитывать: при таком программном расчете необходимо корректно обрабатывать документы ВозвратТоваровОтПокупателя (уменьшающие старый долг) и авансовые платежи, а также следить за последовательностью проведения документов задним числом.
При накоплении «хвостов» расчетов можно использовать документ КорректировкаДолга с видом операции Зачет задолженности и кнопкой Заполнить по остаткам для регулярного выравнивания дебета и кредита по документам расчетов.
Таким образом, лучшей практикой в 1С:Управление торговлей 10.3 является использование штатного ведения расчетов по документам с задействованием механизмов Заполнить по остаткам в платежных документах, что исключает рутинную работу по созданию документов «на основании» и обеспечивает корректную работу контроля дней задолженности.