Как устранить аварийное завершение рабочего процесса при синхронизации ЗУП 3.1 и БП 3.0?

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

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

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

Выясняем причину: почему падает rphost.exe?

Аварийное завершение рабочего процесса — это серьезная ошибка на уровне платформы «1С:Предприятие». Проанализируем ситуацию: когда мы используем прямое подключение (COM-соединение), одна база данных (клиент) обращается к другой базе (серверу) через специальную библиотеку comcntr.dll. В момент инициализации этого соединения или при передаче тяжелых объектов (например, больших таблиц соответствий) может произойти критическая ошибка в памяти — Access Violation.

Основные факторы, провоцирующие падение процесса:

Решение 1: Использование корректирующего расширения

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

Давайте рассмотрим, что именно исправляют такие патчи. Чаще всего корректировке подвергаются модули: ОбменДаннымиСервер или ОбменДаннымиПереносДанныхИзИнформационныхБаз1СПредприятия82. Расширение перехватывает выполнение стандартных процедур и изменяет логику чтения сообщения обмена. Например, оно может принудительно очищать кэш метаданных перед началом загрузки или блокировать выполнение проблемного участка кода, который вызывает рекурсию.

Для применения этого решения необходимо:

  1. Зайти в раздел «Администрирование» — «Печатные формы, отчеты и обработки» — «Расширения».
  2. Добавить файл расширения и снять галочку «Безопасный режим» (так как расширение должно иметь доступ к серверным процедурам обмена).
  3. Перезапустить сеанс и повторить синхронизацию.

Решение 2: Переход на использование Web-сервисов (рекомендуемое)

Если мы хотим навсегда избавиться от проблем, связанных с COM-соединением и библиотекой comcntr.dll, нам следует рассмотреть переход на обмен через Web-сервисы. Это более современный и стабильный метод взаимодействия между базами 1С.

Разберем по шагам, как это настроить:

  1. Публикация базы на веб-сервере: Одну из баз (например, БП 3.0) необходимо опубликовать на веб-сервере (IIS или Apache). В процессе публикации обязательно нужно отметить флажок «Публиковать стандартные интерфейсы OData» и убедиться, что опубликован веб-сервис Interface.1cws.
  2. Настройка подключения в ЗУП: В настройках синхронизации данных вместо варианта «Прямое подключение к информационной базе» выбираем «Синхронизация через Интернет (Web-сервис)».
  3. Указание адреса: Вводим URL опубликованной базы и учетные данные пользователя.

Преимущество этого метода в том, что обмен идет по протоколу HTTP, который не зависит от разрядности сервера и не вызывает падения рабочего процесса rphost даже при передаче гигантских объемов данных.

Решение 3: Изоляция COM-соединителя через службу COM+

Если по техническим причинам вы обязаны использовать прямое подключение, проанализируем способ изоляции процесса. Мы можем вынести работу COMConnector за пределы адресного пространства rphost. Это делается через настройку компонентов Windows.

Рассмотрим последовательность действий:

  1. Откройте консоль «Службы компонентов» (dcomcnfg).
  2. Перейдите в «Компьютеры» — «Мой компьютер» — «Приложения COM+».
  3. Создайте новое пустое приложение (например, с именем 1C_COM_Connector).
  4. В свойствах приложения на вкладке «Удостоверение» укажите пользователя (администратора сервера), под которым будет запускаться компонент.
  5. В ветке «Компоненты» вашего нового приложения добавьте новый компонент, выбрав файл comcntr.dll из папки с установленной платформой 1С.

После этой настройки при вызове COM-соединения система создаст отдельный процесс dllhost.exe. Даже если произойдет ошибка памяти, она случится внутри этого изолированного процесса, а основной рабочий процесс 1С (rphost) продолжит работу без сбоев.

Решение 4: Техническое обслуживание сервера и очистка кэша

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

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

  1. Остановить службу «Агент сервера 1С:Предприятия 8.3».
  2. Перейти в папку с данными сервера (обычно это C:\Program Files\1cv8\srvinfo).
  3. Найти папки с именами типа snccntxt... (кэш контекста) и очистить их содержимое.
  4. Также полезно очистить временные файлы в папке reg_1541 для конкретной информационной базы.
  5. Запустить службу сервера заново.

Дополнительно проверьте регистрацию библиотеки. Для этого используйте командную строку от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.XX.XXXX\bin\comcntr.dll"

Вместо 8.3.XX.XXXX укажите номер вашей актуальной версии платформы. Убедитесь, что вы регистрируете библиотеку именно той версии, на которой запущен сервер.

Решение 5: Настройка лимитов памяти в консоли администрирования

Проанализируем параметры рабочего сервера 1С. В консоли администрирования кластера (mmc) есть настройки, которые могут принудительно завершать фоновые задания.

Посмотрите на следующие параметры в свойствах рабочего сервера:

Резюме: Если вы столкнулись с падением процесса при синхронизации ЗУП и БП, в первую очередь попробуйте установить официальные патчи (исправления) от 1С или проверенное расширение. Если проблема сохраняется, наиболее надежным путем будет переход на обмен данными через Web-сервис, что исключит использование нестабильных COM-компонентов из процесса синхронизации.

← На главную