При работе с распределенными информационными базами (РИБ) в 1С:ERP Управление предприятием 2.4 часто возникает специфическая ситуация: сам документ Принятие к учету ОС успешно мигрирует из центральной базы в подчиненную, но его движения по регистрам (в частности, по регистру Первоначальные сведения ОС) отсутствуют или обнуляются. Это приводит к тому, что в базе-приемнике основное средство числится без стоимости и параметров амортизации.
Разберем детально, почему так происходит и как восстановить корректную передачу данных между узлами системы. Проанализируем технические аспекты регистрации изменений и особенности работы механизмов обмена.
Для начала нам необходимо понять, как именно данные уходят из базы-источника. Рассмотрим типичную ситуацию, когда в XML-файле обмена для регистра сведений ПервоначальныеСведенияОС мы видим следующую структуру:
<InformationRegisterRecordSet.ПервоначальныеСведенияОС>
<Filter>
<Recorder xsi:type="DocumentRef.ПринятиеКУчетуОС2_4">guid-объекта</Recorder>
</Filter>
<Records/>
</InformationRegisterRecordSet.ПервоначальныеСведенияОС>
Наличие тега <Records/> без вложенных элементов при наличии заполненного фильтра Recorder означает, что система инициировала выгрузку набора записей для конкретного документа, но фактически в этот набор ничего не попало. Это свидетельствует о том, что проблема кроется в **механизме регистрации изменений** на стороне источника или в программных фильтрах плана обмена.
В РИБ механизм регистрации работает автономно для каждого объекта. Документ может быть зарегистрирован автоматически при проведении, а связанные с ним регистры сведений — нет. Выясним причину этого поведения:
ПервоначальныеСведенияОС.Запретить, то записи регистра не будут попадать в очередь обмена автоматически вместе с документом.Одной из самых распространенных ошибок при доработке конфигураций является отсутствие проверки режима загрузки данных. Рассмотрим ситуацию в базе-приемнике:
Когда документ Принятие к учету ОС загружается в приемник, срабатывают обработчики событий (ПередЗаписью, ПриЗаписи). Если в коде этих обработчиков или в подписках на события не стоит проверка ОбменДанными.Загрузка = Истина, система может попытаться «перепровести» документ локально. Поскольку в приемнике могут отсутствовать необходимые данные для расчета стоимости (например, не завершен расчет себестоимости), движения документа могут быть очищены или перезаписаны пустыми значениями.
Проверим наличие подобного кода в модулях объекта или расширениях:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Дальнейшая логика, которая может очищать движения
КонецПроцедуры
В ERP 2.4 многие регистры сведений, связанные с внеоборотными активами, являются независимыми. Хотя у них есть реквизит Регистратор, они не всегда жестко связаны с проведением документа в контексте платформенного механизма движений.
Проанализируем ситуацию: если документ Перемещение ОС передается корректно, а Принятие к учету ОС — нет, значит, фильтры регистрации в плане обмена настроены избирательно. В модуле менеджера плана обмена или в правилах регистрации (если используются ПРО) может быть прописано условие, которое не учитывает специфику ПринятиеКУчетуОС2_4.
Рассмотрим порядок действий для диагностики:
Документ.ПринятиеКУчетуОС2_4. Убедимся, что конкретный экземпляр документа зарегистрирован.Первоначальные сведения ОС. Если документ зарегистрирован, а записи регистра по нему — нет, значит, регистрация движений не отработала в источнике.Чтобы решить проблему отсутствия стоимостных показателей ОС в РИБ, выполним следующие шаги:
Шаг 1. Настройка принудительной регистрации движений. Если используется самописный механизм обмена, необходимо добавить в подписку на событие ПриЗаписи для документа принятию к учету код, который будет явно регистрировать набор записей связанных регистров на узлах-получателях.
Шаг 2. Проверка учетной политики в приемнике. Выясним, не отличаются ли настройки функциональных опций в центральной и периферийной базе. Если в приемнике отключен «Учет внеоборотных активов», система может блокировать запись данных в соответствующие регистры даже при обмене.
Шаг 3. Использование типовых механизмов. Если это возможно, рекомендуется вернуть регистрацию регистра ПервоначальныеСведенияОС в режим Авторегистрация = Разрешить в составе плана обмена. Это гарантирует, что любое изменение записи регистра будет передано, независимо от того, каким документом оно вызвано.
Шаг 4. Проверка прав доступа. Иногда записи в регистр не попадают из-за ограничений прав пользователя, под которым запускается сессия обмена в приемнике. Убедимся, что у пользователя обмена достаточно прав на чтение и запись регистров сведений ОС.
Таким образом, основная причина проблемы кроется в разрыве связи между регистрацией документа-объекта и регистрацией набора записей регистра сведений. Внимательный аудит подписок на события и настроек плана обмена позволит восстановить целостность данных в распределенной системе 1С:ERP.