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