Синхронизация данных между конфигурациями «Зарплата и управление персоналом, редакция 3.1» (ЗУП 3) и «Бухгалтерия предприятия, редакция 3.0» (БП 3) — один из наиболее критичных узлов в периодической отчетности любой организации. При обновлении платформы, изменении префиксов баз или переносе данных на новый сервер стандартный обмен через COM-соединение может дать сбой. Часто системные администраторы и программисты принимают решение полностью удалить старую настройку синхронизации и создать её заново «с нуля». Однако после этого они сталкиваются с неприятной ситуацией: формально обмен проходит без ошибок, но документы (например, Отражение зарплаты в бухучете) наотрез отказываются регистрироваться к обмену и переноситься в базу-приемник.
В этой статье мы подробно разберем причины такого поведения системы, проанализируем сопутствующие технические ошибки платформы и предложим пошаговый алгоритм полного восстановления обмена.
---
При обновлении платформы (например, до релизов ветки 8.3.12 и выше) или некорректном разрыве соединения в момент обмена пользователи часто фиксируют критическую ошибку следующего вида:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(7822)}: Ошибка при вызове конструктора (УникальныйИдентификатор)
СсылкаНаОбъект = СтруктураСвойств.Менеджер.ПолучитьСсылку(Новый УникальныйИдентификатор(СвойствоУникальныйИдентификатор));
по причине: Недопустимое значение параметра (параметр номер '1')
Проанализируем ситуацию. Переменная СвойствоУникальныйИдентификатор должна содержать строковое представление уникального идентификатора (GUID) объекта в базе-приемнике. Однако из-за сбоя или некорректной перезаписи узлов туда передается пустая строка или значение NULL.
Почему это происходит? Связи между объектами двух баз хранятся в специальном регистре сведений Соответствия объектов информационных баз. При удалении настройки синхронизации стандартными средствами этот регистр должен очищаться автоматически. Но на практике (особенно в клиент-серверном варианте работы баз) очистка происходит некорректно. В регистре остаются «битые» записи, ссылающиеся на несуществующие GUID или на старый, уже удаленный узел обмена. При попытке сопоставить данные система обращается к пустому значению и падает с ошибкой инициализации конструктора УникальныйИдентификатор.
Как решить проблему:
Соответствия объектов информационных баз.---
Иногда специалисты пытаются исправить ошибки сопоставления узлов вручную. Например, если в БП префикс информационной базы задан как 00, а в ЗУП код узла прописан как БП, возникает конфликт «Не найден узел обмена для загрузки данных». Попытка напрямую переименовать код предопределенного узла в плане обмена ОбменЗарплата3Бухгалтерия3 приводит к ошибке:
Поле объекта не обнаружено (Менеджер)
Выясним причину: программная логика Библиотеки стандартных подсистем (БСП) жестко завязана на структуру предопределенных узлов. Ручное изменение кодов узлов или попытка «подсунуть» созданный вручную узел вместо предопределенного ломает алгоритмы инициализации менеджера плана обмена. Платформа теряет связь с метаданными и не может определить, методами какого объекта ей оперировать.
Правильное решение:
Префикс этой информационной базы. Он должен строго соответствовать проектным требованиям организации.ОбменЗарплата3Бухгалтерия3 и физически удаляем их через обработку «Удаление помеченных объектов». Предопределенные узлы (они отмечены специальной иконкой с желтым шариком) не трогаем.---
Это самая частая причина, по которой документы перестают регистрироваться к обмену после перенастройки правил.
Рассмотрим подробнее механизм работы флага «Использовать при регистрации изменений ограничения миграции данных». Данная настройка призвана защитить информационную базу от случайного переноса старых документов из закрытых периодов или документов по «чужим» организациям. Если этот флаг включен, то при проведении документа или при попытке зарегистрировать его вручную система сверяет реквизиты объекта со следующими правилами фильтрации:
Если хотя бы одно условие не выполняется, документ автоматически и без предупреждения снимается с регистрации к обмену!
Разберем типичный сценарий сбоя: при создании синхронизации «с нуля» по умолчанию может установиться текущая дата или дата конца текущего месяца (например, 31.08.2018). Если вы пытаетесь перенести документ Отражение зарплаты в бухучете, датированный тем же числом (31.08.2018), то из-за разницы часовых поясов сервера, секундных смещений или строгой проверки границ периода система посчитает этот документ находящимся за рамками разрешенного интервала и заблокирует его миграцию.
Как решить проблему с регистрацией документов:
01.08.2018), либо вообще на начало текущего года (01.01.2018).Бухучет действует с заполнена корректно и предшествует дате выгружаемых документов.После изменения даты начала обмена документы, созданные ранее, автоматически не зарегистрируются, так как событие их записи уже произошло. Нам необходимо зарегистрировать их принудительно:
Регистрация изменений для обмена найдем в дереве объектов класс Документы и конкретный тип — Отражение зарплаты в бухучете.---
Если обмен настроен напрямую через COM-соединение, то при обновлении платформы на сервере приложений 1С часто слетает регистрация библиотеки comcntr.dll. В этом случае синхронизация вообще не сможет инициализировать подключение к базе-приемнику.
Посмотрим, как исправить регистрацию компоненты:
Для восстановления работы COM-соединения необходимо вручную зарегистрировать библиотеку в операционной системе Windows на сервере, где запущенна служба shrd1cv8 (сервер приложений 1С).
Запустим командную строку от имени Администратора и выполним следующую команду для актуальной версии платформы:
regsvr32 "C:\Program Files\1cv8\8.3.12.1595\bin\comcntr.dll"
Обратите внимание: если ваш сервер приложений 1С является 64-разрядным, а база-приемник требует обращения через 32-разрядные клиенты (или наоборот), может потребоваться настройка COM+ приложения в Windows (через утилиту dcomcnfg), чтобы изолировать выполнение компоненты в отдельном системном процессе dllhost.exe.
---
Подведем итог и составим универсальный алгоритм действий для успешного восстановления синхронизации между ЗУП 3 и БП 3:
ОбменЗарплата3Бухгалтерия3. Физически удаляем все помеченные на удаление узлы, кроме предопределенных.Соответствия объектов информационных баз в обеих базах данных.comcntr.dll на сервере 1С.Выполнение этих шагов гарантирует корректную перенастройку обмена и восстановит автоматическую регистрацию всех документов в штатном режиме.