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