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

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

Часто в практике администраторов и программистов 1С встречается ситуация: после планового обновления платформы на сервере (например, с версии 8.3.9 на 8.3.13) отлаженный годами обмен данными внезапно «замирает». При этом в ЖурналРегистрации система рапортует об успешном завершении фонового задания, но фактического движения файлов или данных в базе-приемнике не наблюдается. Самое странное, что при нажатии кнопки «Выполнить обмен» вручную всё работает идеально.

Разберем детально, почему так происходит, и проанализируем неочевидные на первый взгляд механизмы работы серверных процессов 1С.

Различие контекстов: почему ручной запуск не равен фоновому заданию

Прежде чем переходить к техническим манипуляциям, важно понять фундаментальное различие в выполнении кода. Когда мы запускаем обмен через интерактивную кнопку («вручную»), код выполняется в контексте текущего пользователя Windows. У этого пользователя есть свои права доступа к сетевым папкам, свои настройки реестра и свои зарегистрированные COM-объекты. Для настройки регулярной синхронизации по расписанию применяется программа для автоматизации регулярного обмена данными между базами 1С.

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

Решение 1: Регистрация COM-соединителя нужной версии

Если ваш обмен использует механизм COM-соединения (объект V83.COMConnector), то при обновлении платформы система может «потерять» связь с нужной библиотекой comcntr.dll. Даже если вы установили новую платформу, в реестре Windows может остаться ссылка на старую версию, которой больше не существует или которая несовместима с текущим процессом.

Проанализируем шаги по регистрации компоненты для разных архитектур системы:

  1. Для 32-битной платформы: Нужно запустить командную строку от имени администратора и выполнить команду: regsvr32 "C:\Program Files (x86)\1cv8\8.3.13.1315\bin\comcntr.dll"
  2. Для 64-битной платформы: Используется системная утилита из папки SysWOW64 для корректной регистрации в реестре: C:\Windows\SysWOW64\regsvr32 "C:\Program Files\1cv8\8.3.13.1313\bin\comcntr.dll"

Важный нюанс: После выполнения регистрации крайне рекомендуется перезагрузить службу Агент сервера 1С:Предприятия, а в идеале — весь физический сервер, чтобы изменения в реестре вступили в силу для всех дочерних процессов rphost.

Решение 2: Настройка компоненты через «Службы компонентов» (COM+)

Иногда простой регистрации библиотеки недостаточно, особенно если на одном сервере должны сосуществовать разные версии платформ. Выясним причину: 64-битный процесс сервера 1С иногда испытывает трудности при обращении к 32-битным библиотекам или при конфликте версий в общем реестре. В этом случае создадим изолированную среду выполнения.

Рассмотрим по шагам процесс создания приложения COM+:

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

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

Решение 3: Проверка прав доступа пользователя службы

Посмотрим на ситуацию со стороны файловой системы. При обновлении платформы инсталлятор может сбросить или переустановить права на системные папки. Если обмен идет через текстовый файл, проверьте следующее:

Решение 4: Настройка брандмауэра и сетевых портов

Проанализируем сетевой аспект. В версиях платформы выше 8.3.9 механизмы взаимодействия между рабочими процессами могли измениться. Убедитесь, что брандмауэр Windows (или сторонний антивирус) не блокирует внутренние соединения. Для автоматизации технического обслуживания и снижения рисков при переходе на новые релизы используется программа для автоматического архивирования, обновления и тестирования баз 1С.

Стандартный диапазон портов для 1С: 1540, 1541, 1560-1591. При обновлении платформы исполняемый файл rphost.exe меняет свой путь (так как номер версии в пути к папке другой). Если в вашем брандмауэре было настроено разрешение «по пути к файлу», старое правило перестало действовать для новой платформы. Рекомендуется настраивать правила именно по номерам портов, а не по исполняемым файлам.

Решение 5: Защита от опасных действий и профили безопасности

Начиная с новых релизов 8.3, 1С усилила контроль безопасности. Если регламентное задание пытается выполнить «внешнюю» операцию (обратиться к файловой системе или запустить COM), оно может быть заблокировано механизмом Защиты от опасных действий. Чтобы проконтролировать корректность результата фонового процесса, используется инструмент для автоматической сверки бухгалтерских и налоговых проводок между базами.

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

Подводя итог, можно сказать: если РегламентныеЗадания пишут «Успешно», но результата нет — проблема на 99% кроется в правах доступа к ресурсам или несоответствии зарегистрированных COM-компонент версии исполняемого серверного процесса. Совместное использование перерегистрации comcntr.dll и настройки прав пользователя службы 1С гарантированно решает данную проблему.

← На главную