Почему при перепроведении реализации не сбрасываются ссылки на удаленные платежи в 1С:УТ 11

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В практике работы с конфигурациями 1С:Управление торговлей 11, ERP или Комплексная автоматизация часто возникает ситуация: бухгалтер помечает на удаление платежный документ (например, Поступление безналичных ДС), но связанные с ним документы отгрузки (Реализация товаров и услуг) продолжают «удерживать» ссылку на этот платеж в регистре Расчеты с клиентами по документам. Даже простое перепроведение документа реализации не всегда решает проблему. Проанализируем, почему это происходит и как правильно восстановить актуальность данных.

Причина 1: Оптимизация механизма проведения

Рассмотрим стандартное поведение платформы 1С. Когда мы нажимаем кнопку «Провести» в уже проведенном документе, система выполняет алгоритм оптимизации. Если с момента последнего проведения в документе не изменились ключевые реквизиты, влияющие на расчеты (сумма, контрагент, организация, дата, валюта), программный код может пропустить выполнение части тяжелых процедур по пересчету движений в регистрах.

Система полагает, что раз данные самого документа не изменились, то и его движения в регистре Расчеты с клиентами по документам (где фиксируется распределение по ФИФО) остаются актуальными. В этом случае «грязные» ссылки на удаленные объекты не вычищаются. Разберем, почему процедура «Отмена проведения -> Проведение» работает эффективнее: она принудительно очищает все записи в регистрах по данному регистратору и записывает их «с нуля», игнорируя оптимизацию.

Причина 2: Архитектура взаиморасчетов (Отложенный расчет)

В версиях УТ 11 до 11.4.6 по умолчанию использовался механизм отложенных взаиморасчетов. Посмотрим, как это устроено:

  1. При проведении документа делаются записи только в основные регистры накопления (балансовые показатели).
  2. Детальное распределение оплат по накладным (то самое ФИФО) записывается в регистр Расчеты с клиентами по документам.
  3. Это распределение выполняет фоновое регламентное задание «Выполнение расчетов с клиентами».

Если это задание еще не отработало или в системе возникла очередь расчетов, данные в отчетах и движениях регистров будут содержать старые ссылки. Проанализируем ситуацию автора: после пометки платежа на удаление система должна была зафиксировать необходимость пересчета всех связанных документов, но фактически это происходит не мгновенно, если не включен режим «Онлайн».

Решение через использование новой архитектуры (Онлайн-расчеты)

Начиная с версии 11.4.6, разработчики 1С представили новую архитектуру взаиморасчетов. Основное отличие — распределение теперь перенесено непосредственно в транзакцию проведения документа. Это гарантирует, что сразу после нажатия кнопки «Провести» все цепочки ФИФО будут актуализированы.

Чтобы проверить и включить этот режим, перейдем по пути: НСИ и администрирование — Казначейство и взаиморасчеты — Взаиморасчеты. Установите флаг «Онлайн-заполнение распределения взаиморасчетов». Это исключит ситуацию, когда данные «зависают» до запуска регламентного задания.

Программное решение и работа с очередью расчетов

Если мы сталкиваемся с необходимостью программно инициировать пересчет или разобраться, почему данные не обновляются, нам следует обратить внимание на регистр сведений ОчередьРасчетов. Именно здесь система хранит информацию о том, какие цепочки документов требуют актуализации. Выясним, как принудительно запустить восстановление расчетов с помощью кода. Рассмотрим пример вызова процедуры, которая отвечает за актуализацию данных:


// Пример вызова процедуры восстановления расчетов по отборам
// Параметры КомпоновщикНастроек и ПоляОтбора позволяют ограничить область пересчета
РаспределениеВзаиморасчетов.ВосстановитьРасчетыПоОтборам(КомпоновщикНастроек, ПоляОтбора, ДопСвойства, ИмяЗадания);

Для программиста важно понимать, что объект РаспределениеВзаиморасчетов является ключевым в логике работы механизмов ФИФО. Если вы пишете собственную обработку проведения или загрузки данных, не забывайте добавлять записи в очередь расчетов, иначе регистр Расчеты с клиентами по документам останется пустым или будет содержать неактуальные сведения.

Инструкция по исправлению «зависших» ссылок

Если вы обнаружили, что в движениях Реализации товаров и услуг висят ссылки на объект <Объект не найден> или на помеченный на удаление документ оплаты, выполните следующие шаги:

  1. Проверьте регламентные задания: Убедитесь, что задание Выполнение расчетов с клиентами активно и завершается без ошибок.
  2. Используйте групповое перепроведение: Иногда стандартного перепроведения из формы недостаточно. Воспользуйтесь обработкой Групповое изменение реквизитов или встроенной формой Проведение документов, выбрав режим «Перепроводить все документы».
  3. Закрытие месяца: Запустите процедуру Закрытие месяца. В рамках этого процесса 1С выполняет этап «Актуализация расчетов с клиентами и поставщиками», который гарантированно перестраивает цепочки оплат.
  4. Очистка очереди: В исключительных случаях (при программных сбоях) может потребоваться ручная очистка регистра Очередь расчетов с последующим полным пересчетом за период.

Таким образом, мы выяснили, что проблема «неотцепляющихся» документов связана либо с оптимизацией записи в БД (когда система не видит причин менять движения), либо с задержкой в работе фоновых заданий при использовании старой архитектуры взаиморасчетов. Переход на онлайн-режим и понимание работы очереди расчетов позволяют полностью контролировать этот процесс и избегать расхождений в управленческом учете.

← На главную