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