Как исправить одностороннюю синхронизацию между ЗУП и БП при сбое COM-соединения

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

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

Типичный сценарий проблемы: документы (например, Резервы по оплате труда или Отражение зарплаты в бухучете) успешно выгружаются из ЗУП в БП. На стороне бухгалтерии пользователь проверяет документ, проводит его и устанавливает критически важный флаг «Отражено в бухучете пользователем». Однако при следующем сеансе обмена этот флаг не возвращается обратно в ЗУП. Более того, флаг может принудительно сняться и в самой базе БП, откатывая изменения назад. Обмен фактически становится односторонним.

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

Почему ломается двусторонний обмен при прямом подключении?

Рассмотрим детально, как устроен процесс обмена при прямом подключении (COM-соединении) и почему он дает сбой после обновления платформы:

  1. Аварийное завершение фонового задания. При прямом подключении одна база данных (база-инициатор) обращается к другой напрямую через COM-объект V83.COMConnector. Сам процесс синхронизации выполняется на стороне сервера «1С» в контексте фонового задания. В проблемных релизах платформы (включая 8.3.15.1830) присутствует зарегистрированный баг: при инициализации обратного получения данных в фоновом задании серверный рабочий процесс (rphost) аварийно завершается по ошибке доступа к памяти.
  2. Успешное прохождение теста подключения. Администраторы часто вводятся в заблуждение тем, что кнопка «Проверить подключение» в настройках синхронизации выдает сообщение об успешном контакте с базой. Это происходит потому, что тест соединения выполняется в интерактивном режиме в клиентском сеансе пользователя (под 32-битным или 64-битным клиентом), где COM-объект создается без ошибок. Реальный же обмен запускается на сервере в 64-битной среде фонового задания, где и происходит падение процесса.
  3. Конфликт версий библиотек COM-соединения. Если на сервере «1С» установлены одновременно несколько версий платформ (например, старая 8.3.12 и новая 8.3.15), операционная система Windows может использовать устаревшую библиотеку comcntr.dll для связи между базами. Из-за несовместимости версий выгрузка данных из ЗУП в БП отрабатывает, а процедура подтверждения получения данных и отправка ответных флагов в ЗУП прерывается.

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

Решение 1. Переход на обмен через сетевой каталог (Рекомендуемое решение)

Самый надежный и стабильный способ обойти любые архитектурные проблемы COM-соединения — перевести синхронизацию на файловый обмен через общий каталог (сетевую папку) или FTP. Этот вариант полностью исключает использование нестабильной библиотеки comcntr.dll и защищает рабочие процессы сервера от аварийных падений.

Выполним настройку обмена через каталог по шагам:

  1. Создадим на сервере или в локальной сети общую папку для обмена, например: \\Server1C\Exchange_ZUP_BP. Настроим права доступа к этой папке для учетной записи, от имени которой запущены службы сервера «1С» (обычно это USR1CV8). У нее должны быть права на чтение и запись.
  2. Откроем базу «1С:Зарплата и управление персоналом» под правами администратора. Перейдем в раздел Администрирование -> Синхронизация данных -> Настройки синхронизации данных.
  3. Выберем текущую настройку обмена с БП, нажмем кнопку Изменить параметры подключения.
  4. В открывшемся мастере выберем вариант подключения: «Синхронизация данных через локальный или сетевой каталог».
  5. Укажем путь к нашей созданной папке \\Server1C\Exchange_ZUP_BP. Нажмем «Далее» и завершим настройку.
  6. Перейдем в базу «1С:Бухгалтерия предприятия» и повторим аналогичную процедуру настройки параметров подключения, указав тот же самый сетевой каталог.
  7. Запустим синхронизацию сначала из ЗУП (выгрузка данных), а затем из БП (получение данных и отправка подтверждений с флагами обратно).

После перевода обмена на сетевой каталог синхронизация станет двусторонней, а статус «Отражено в бухучете» будет гарантированно возвращаться в ЗУП.

Решение 2. Исправление и перерегистрация COM-компоненты на сервере

Если специфика вашей инфраструктуры требует использования только прямого подключения, необходимо устранить конфликт библиотек comcntr.dll в операционной системе Windows на сервере «1С».

Для этого выполним ручную перерегистрацию компоненты через командную строку с правами администратора:

Шаг 1. Откроем командную строку (cmd) от имени Администратора на сервере, где установлен сервер «1С:Предприятие».

Шаг 2. Разрегистрируем старую библиотеку и зарегистрируем актуальную версию компоненты из папки установленной платформы (в нашем примере это 8.3.15.1830). Для этого выполним следующие команды:


cd "C:\Program Files\1cv8\8.3.15.1830\bin"
regsvr32 /u comcntr.dll
regsvr32 comcntr.dll

Шаг 3. Если сервер «1С» работает в 64-разрядном режиме, стандартной регистрации библиотеки может быть недостаточно из-за конфликта разрядностей. В этом случае необходимо настроить COM+-приложение в Windows:

  1. Откроем Службы компонентов Windows (команда comexp.msc в строке Выполнить).
  2. Перейдем в ветку Службы компонентов -> Компьютеры -> Мой компьютер -> Приложения COM+.
  3. Нажмем правой кнопкой мыши по разделу «Приложения COM+» и выберем Создать -> Приложение.
  4. В мастере создания выберем Создать новое приложение, зададим имя (например, V83_COMConnector) и установим переключатель в положение Серверное приложение.
  5. На шаге выбора учетной записи укажем пользователя, под которым работает сервер «1С» (например, USR1CV8), и введем его пароль.
  6. В созданном приложении откроем ветку Компоненты, нажмем правой кнопкой мыши и выберем Создать -> Компонент.
  7. Выберем Установка новых компонентов и укажем путь к файлу библиотеки: C:\Program Files\1cv8\8.3.15.1830\bin\comcntr.dll.
  8. Завершим настройку и перезапустим службу сервера «1С:Предприятие» через консоль services.msc.

Эти действия позволят изолировать выполнение COM-соединений в отдельном процессе Windows и предотвратят аварийное падение рабочих процессов сервера 1С.

Решение 3. Переход на универсальный формат обмена EnterpriseData

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

Разработчики фирмы «1С» активно переводят все типовые конфигурации на универсальный формат обмена EnterpriseData. В этом формате логика выгрузки подтверждений и синхронизации статусов документов отлажена наиболее полно.

Проверим текущую настройку синхронизации:

  1. В ЗУП или БП зайдем в параметры синхронизации и посмотрим используемый формат.
  2. Если в настройках указан устаревший обмен по правилам (прямой обмен), рекомендуется создать новую синхронизацию через формат EnterpriseData (версии 1.7 или выше, в зависимости от релизов ваших конфигураций).
  3. При настройке нового обмена выберите вариант использования синхронизации через веб-сервис или сетевой каталог, что обеспечит максимальную стабильность обмена данными в будущем.

Использование современных форматов обмена гарантирует корректную регистрацию изменений документов на стороне БП при установке флага проведения в бухучете и их оперативную отправку обратно в ЗУП.

← На главную