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