Как корректно перевести самописные документы на онлайн-режим взаиморасчетов в 1С:ERP 2.5?

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

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

Понимание архитектуры онлайн-взаиморасчетов

В оффлайн-режиме распределение оплат по накладным происходит во время выполнения регламентных операций закрытия месяца. В онлайн-режиме это происходит практически мгновенно (в фоновом режиме или при проведении документа). Ключевым звеном здесь является служебный документ Регистратор расчета. Рассмотрим подробнее, как работает эта связка:

  1. Первичный документ (Реализация, Поступление ДС) делает записи в «классические» регистры расчетов.
  2. При проведении документа создается запись в регистре сведений ЗаданияОчередиРасчетов.
  3. Фоновое задание (или процедура в коде) подхватывает это задание и формирует документ Регистратор расчета.
  4. Именно Регистратор расчета делает движения по регистру РасчетыСКлиентамиПоСрокам, который позволяет видеть задолженность по срокам в реальном времени.

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

Шаг 1: Регистрация документа в системе взаиморасчетов

Проанализируем программный код. Чтобы ваш документ стал полноправным участником онлайн-расчетов, недостаточно просто добавить его в список регистраторов регистра накопления. Необходимо включить его в определяемые типы. Найдем и добавим ваш документ в следующие типы:

После этого система начнет «видеть» документ в реестре оплат и алгоритмах распределения, но этого мало для автоматического формирования движений.

Шаг 2: Включение в очередь заданий

Выясним причину, по которой движения не появляются в онлайн-режиме без перепроведения. Для этого разберем механизм постановки в очередь. В модуле менеджера или объекта вашего документа необходимо реализовать вызов процедур, которые фиксируют изменения для онлайн-расчетов. Обычно это делается в подписках на события или непосредственно в методе ОбработкаПроведения.

Рассмотрим пример кода, который необходимо добавить для того, чтобы документ попадал в очередь расчетов:


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

Без этой регистрации фоновое задание никогда не узнает, что нужно создать Регистратор расчета для вашего документа.

Шаг 3: Переход на онлайн-режим без перепроведения

Если у вас накоплены данные за несколько лет, перепроводить документы в рабочей базе невозможно. Разберем, как запустить создание движений «по срокам» массово. Для этого в ERP существует штатный механизм.

  1. Используем обработку Заполнение регистров взаиморасчетов (или ее внешний аналог для заполнения аналитики). Ее можно найти через «Все функции» (Функции для технического специалиста).
  2. Эта обработка анализирует остатки по «старым» регистрам и на их основе формирует записи в РасчетыСКлиентамиПоСрокам и создает необходимые документы Регистратор расчета.
  3. Перед запуском убедитесь, что ваш документ корректно делает движения по регистру РасчетыСКлиентамиПоДокументам, так как именно оттуда обработка берет информацию о связках «накладная — оплата».

Важный момент: если после выполнения обработки вы проведете какой-либо документ реализации в текущем периоде, система может запустить пересчет всей цепочки. Если ваш документ не прописан в программных механизмах распределения (см. Шаг 1 и 2), его движения в регистре «по срокам» могут быть удалены.

Шаг 4: Решение проблем с «Исправлением разрывов» и курсовыми разницами

Проанализируем ситуацию, когда система создает документ Корректировка регистров с комментарием «Исправление разрывов остатков взаиморасчетов». Это происходит из-за того, что при переходе онлайн-механизм обнаружил расхождение между остатком по регистру РасчетыСКлиентами и детальным распределением по документам.

Чтобы минимизировать проблемы:

Резюме

Для успешного внедрения самописного документа в онлайн-взаиморасчеты недостаточно просто добавить движения. Мы должны обеспечить интеграцию на уровне очереди заданий и определяемых типов. Рассмотрим краткий чек-лист:

  1. Добавить документ в определяемые типы ОбъектРасчетов и РасчетныйДокумент.
  2. Добавить вызов ЗарегистрироватьЗаданиеОчередиРасчетов в логику проведения документа.
  3. Использовать обработку Заполнение регистров взаиморасчетов для инициализации данных в регистре по срокам без перепроведения документов.
  4. Проверить актуальность данных через отчет Ведомость расчетов с клиентами (в режиме онлайн там появится кнопка актуализации данных).

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

← На главную