Синхронизация данных между конфигурациями «Зарплата и управление персоналом 3.1» и «Бухгалтерия предприятия 3.0» является стандартным процессом, однако при использовании прямого подключения (через COM-соединение) часто возникает специфическая ошибка, связанная с параметром сеанса ДатаОбновленияПовторноИспользуемыхЗначенийМРО. Проблема особенно актуальна для релизов БП 3.0.70.х и выше. Разберем подробно, почему это происходит и какими способами можно восстановить работоспособность обмена.
Рассмотрим природу данного параметра. ДатаОбновленияПовторноИспользуемыхЗначенийМРО — это внутренний параметр сеанса, который используется механизмом регистрации объектов (МРО) в рамках универсального формата обмена Enterprise Data. Этот параметр хранит временную метку последнего обновления кэша правил регистрации.
Выясним причину сбоя: когда ЗУП пытается подключиться к Бухгалтерии напрямую, создается внешнее соединение. В этот момент в базе-приемнике (БП) должен инициализироваться модуль сеанса. Ошибка возникает из-за того, что программный код конфигурации пытается обратиться к этому параметру до того, как он был фактически инициализирован в процедуре УстановкаПараметровСеанса. Это может быть связано с внутренними коллизиями в логике типовых конфигураций или некорректной работой платформы при обработке внешних запросов.
Проанализируем техническую среду. Если базы расположены на одном компьютере, критически важно, чтобы версии платформы совпадали, а компоненты доступа были корректно зарегистрированы в операционной системе. Посмотрим на шаги по диагностике платформы:
comcntr.dll. Необходимо принудительно перерегистрировать COM-соединитель той разрядности, под которой запускается процесс обмена.
regsvr32 "C:\Program Files\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
Часто проблема кроется в недостаточности прав пользователя, под которым осуществляется подключение, даже если у него назначена роль «Администратор». Рассмотрим тонкие настройки прав в Бухгалтерии:
Проверим наличие права Интерактивное открытие внешних отчетов и обработок. В некоторых случаях механизмы инициализации МРО требуют доступа к временным структурам метаданных. Если это право ограничено профилем безопасности или основной ролью, инициализация параметра ДатаОбновленияПовторноИспользуемыхЗначенийМРО может сорваться без явного указания на ошибку прав.
Также убедитесь, что в папке, где расположены базы данных (для файлового варианта), у пользователя Windows, под которым запущен процесс 1С, есть полные права на изменение и запись файлов. Это касается и временных папок пользователя (%TEMP%).
Проанализируем ситуацию с «зависшими» данными в системных таблицах. Бывает, что после обновления конфигурации параметры сеанса «застревают» в неопределенном состоянии в таблице ConfigSave. Для решения этой проблемы выполним следующие действия:
/ClearCache через командную строку или настройки в окне запуска.Если типовые средства не помогают, и ошибка блокирует работу, можно прибегнуть к программной корректировке в модуле сеанса Бухгалтерии. Посмотрим на пример кода, который принудительно инициализирует проблемный параметр при внешнем соединении.
Для этого в модуле сеанса в процедуре УстановкаПараметровСеанса необходимо добавить проверку:
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
// Стандартный код инициализации...
// Добавим проверку на инициализацию параметра МРО
Если ТребуемыеПараметры = Неопределено
Или ТребуемыеПараметры.Найти("ДатаОбновленияПовторноИспользуемыхЗначенийМРО") <> Неопределено Тогда
// Проверяем, не пуст ли параметр, чтобы избежать ошибки обращения
Попытка
ЗначениеПараметра = ПараметрыСеанса.ДатаОбновленияПовторноИспользуемыхЗначенийМРО;
Исключение
// Если возникла ошибка или параметр не установлен, задаем его принудительно
ПараметрыСеанса.ДатаОбновленияПовторноИспользуемыхЗначенийМРО = ТекущаяДата();
КонецПопытки;
КонецЕсли;
КонецПроцедуры
Использование конструкции Попытка...Исключение внутри модуля сеанса позволяет «мягко» обойти обращение к неинициализированному объекту. Как только параметр получает значение ТекущаяДата(), механизмы синхронизации Enterprise Data начинают работать корректно.
Разберем влияние установленных исправлений (патчей) от 1С. Иногда автоматические патчи, призванные исправить одну ошибку, вызывают конфликт в инициализации параметров сеанса при COM-соединении.
Попробуем временно отключить все расширения в базе Бухгалтерии и выполнить синхронизацию. Если ошибка пропадет — значит, один из патчей или сторонних расширений блокирует процедуру УстановкаПараметровСеанса. В этом случае необходимо поочередно включать расширения, чтобы выявить конфликтный элемент.
Важный момент: если вы используете базовую версию конфигурации, прямое COM-подключение может быть ограничено на уровне лицензионных проверок платформы. В таком случае рекомендуется использовать обмен через файлы или через синхронизацию в облаке.