Что делать, если при повторной настройке синхронизации ЗУП 3 и БП 3 перестали регистрироваться и переноситься документы?

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

Синхронизация данных между конфигурациями «Зарплата и управление персоналом, редакция 3.1» (ЗУП 3) и «Бухгалтерия предприятия, редакция 3.0» (БП 3) — один из наиболее критичных узлов в периодической отчетности любой организации. При обновлении платформы, изменении префиксов баз или переносе данных на новый сервер стандартный обмен через COM-соединение может дать сбой. Часто системные администраторы и программисты принимают решение полностью удалить старую настройку синхронизации и создать её заново «с нуля». Однако после этого они сталкиваются с неприятной ситуацией: формально обмен проходит без ошибок, но документы (например, Отражение зарплаты в бухучете) наотрез отказываются регистрироваться к обмену и переноситься в базу-приемник.

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

---

Причина 1. Ошибка в модуле «КонвертацияОбъектовИнформационныхБаз» (Недопустимый GUID)

При обновлении платформы (например, до релизов ветки 8.3.12 и выше) или некорректном разрыве соединения в момент обмена пользователи часто фиксируют критическую ошибку следующего вида:


{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(7822)}: Ошибка при вызове конструктора (УникальныйИдентификатор)
СсылкаНаОбъект = СтруктураСвойств.Менеджер.ПолучитьСсылку(Новый УникальныйИдентификатор(СвойствоУникальныйИдентификатор));
по причине: Недопустимое значение параметра (параметр номер '1')

Проанализируем ситуацию. Переменная СвойствоУникальныйИдентификатор должна содержать строковое представление уникального идентификатора (GUID) объекта в базе-приемнике. Однако из-за сбоя или некорректной перезаписи узлов туда передается пустая строка или значение NULL.

Почему это происходит? Связи между объектами двух баз хранятся в специальном регистре сведений Соответствия объектов информационных баз. При удалении настройки синхронизации стандартными средствами этот регистр должен очищаться автоматически. Но на практике (особенно в клиент-серверном варианте работы баз) очистка происходит некорректно. В регистре остаются «битые» записи, ссылающиеся на несуществующие GUID или на старый, уже удаленный узел обмена. При попытке сопоставить данные система обращается к пустому значению и падает с ошибкой инициализации конструктора УникальныйИдентификатор.

Как решить проблему:

  1. Откроем обе информационные базы (и ЗУП, и БП) под учетной записью с правами «Администратор» или «Системный администратор».
  2. Перейдем в меню «Функции для технического специалиста» (в старых версиях платформы — «Все функции»).
  3. Найдем регистр сведений Соответствия объектов информационных баз.
  4. Полностью очистим записи, связанные с проблемным узлом обмена. Если записей слишком много, можно воспользоваться внешней обработкой очистки регистра, предварительно сделав резервную копию базы данных.

---

Причина 2. Ошибка «Поле объекта не обнаружено (Менеджер)» при ручной правке кодов узлов

Иногда специалисты пытаются исправить ошибки сопоставления узлов вручную. Например, если в БП префикс информационной базы задан как 00, а в ЗУП код узла прописан как БП, возникает конфликт «Не найден узел обмена для загрузки данных». Попытка напрямую переименовать код предопределенного узла в плане обмена ОбменЗарплата3Бухгалтерия3 приводит к ошибке:

Поле объекта не обнаружено (Менеджер)

Выясним причину: программная логика Библиотеки стандартных подсистем (БСП) жестко завязана на структуру предопределенных узлов. Ручное изменение кодов узлов или попытка «подсунуть» созданный вручную узел вместо предопределенного ломает алгоритмы инициализации менеджера плана обмена. Платформа теряет связь с метаданными и не может определить, методами какого объекта ей оперировать.

Правильное решение:

  1. Ни в коем случае не меняем коды узлов вручную непосредственно в планах обмена через форму списка.
  2. Переходим в раздел «Администрирование» -> «Синхронизация данных» и проверяем поле Префикс этой информационной базы. Он должен строго соответствовать проектным требованиям организации.
  3. Если префиксы были изменены, полностью удаляем настройки синхронизации в обеих базах.
  4. Помечаем на удаление старые созданные узлы в плане обмена ОбменЗарплата3Бухгалтерия3 и физически удаляем их через обработку «Удаление помеченных объектов». Предопределенные узлы (они отмечены специальной иконкой с желтым шариком) не трогаем.
  5. Настраиваем синхронизацию заново. Платформа автоматически создаст новые правильные узлы обмена с корректными кодами на основании заданных префиксов баз.

---

Причина 3. Ограничения миграции данных и влияние «Даты начала обмена»

Это самая частая причина, по которой документы перестают регистрироваться к обмену после перенастройки правил.

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

Если хотя бы одно условие не выполняется, документ автоматически и без предупреждения снимается с регистрации к обмену!

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

Как решить проблему с регистрацией документов:

  1. В настройках синхронизации данных проверим установленную дату начала обмена.
  2. Установим дату начала обмена с запасом — например, на первый день месяца, за который выгружаются данные (если документы за август 2018, то ставим 01.08.2018), либо вообще на начало текущего года (01.01.2018).
  3. Проверим заполнение учетной политики в ЗУП 3. Перейдем в «Настройка» -> «Организации» -> вкладка «Учетная политика и другие настройки» -> ссылка «Бухучет и выплата зарплаты». Убедимся, что дата в поле Бухучет действует с заполнена корректно и предшествует дате выгружаемых документов.

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

  1. В окне настроек синхронизации нажмем кнопку «Состав отправляемых данных» (кнопка в виде листка с лупой или стрелкой).
  2. В открывшейся обработке Регистрация изменений для обмена найдем в дереве объектов класс Документы и конкретный тип — Отражение зарплаты в бухучете.
  3. Нажмем кнопку «Зарегистрировать» -> «Все объекты данного типа» (или выберем «Одиночные объекты» и укажем конкретные документы вручную).
  4. Запустим синхронизацию данных. Теперь все зарегистрированные документы успешно перенесутся в Бухгалтерию предприятия.

---

Причина 4. Проблемы с компонентой V83COMconnector при обновлении платформы

Если обмен настроен напрямую через 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:

  1. Полный сброс: Удаляем настройки синхронизации в обеих базах (ЗУП и БП) через стандартный интерфейс.
  2. Очистка узлов: Проверяем планы обмена ОбменЗарплата3Бухгалтерия3. Физически удаляем все помеченные на удаление узлы, кроме предопределенных.
  3. Очистка кэша связей: Очищаем регистр сведений Соответствия объектов информационных баз в обеих базах данных.
  4. Проверка префиксов: Убеждаемся, что в карточках организаций и настройках параметров учета заданы верные префиксы информационных баз.
  5. Регистрация COM: Проверяем работоспособность COM-соединения. При необходимости перерегистрируем библиотеку comcntr.dll на сервере 1С.
  6. Новая настройка: Создаем настройку обмена заново. При настройке обязательно указываем дату начала обмена с запасом (минимум — первый день отчетного месяца).
  7. Ручной запуск: Через форму «Состав отправляемых данных» принудительно регистрируем документы за нужный период и запускаем синхронизацию.

Выполнение этих шагов гарантирует корректную перенастройку обмена и восстановит автоматическую регистрацию всех документов в штатном режиме.

← На главную