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