В процессе работы с программными продуктами 1С:Управление торговлей 11 и 1С:Бухгалтерия предприятия 3.0 пользователи часто сталкиваются с ситуацией, когда ручной запуск синхронизации данных проходит успешно, однако настроенный автоматический обмен по расписанию (сценарию) не выполняется. В журнале регистрации при этом фиксируются пугающие записи со статусом "Отменено", а сам процесс обмена мгновенно прерывается без явного указания ошибок в интерфейсе системы.
Особенно остро эта проблема проявляется в файловых версиях баз данных. В рамках данной статьи мы подробно разберем причины возникновения подобного сбоя, проанализируем внутренние механизмы платформы 1С:Предприятие 8.3 и рассмотрим пошаговые инструкции по устранению этой ошибки, начиная от настройки системных библиотек Windows и заканчивая альтернативными сценариями интеграции.
Выясним, почему ручной обмен работает без нареканий, в то время как автоматическое регламентное задание упорно отказывается функционировать, и как вернуть стабильность процессам синхронизации.
---
При использовании прямого подключения между информационными базами платформа 1С обращается к механизму COM-соединения. При ручном запуске синхронизации процесс инициализируется непосредственно в контексте текущего сеанса пользователя. Если у этого пользователя достаточно прав в операционной системе, подключение может проходить успешно.
Однако при запуске регламентного задания в фоновом режиме операционная система обращается к зарегистрированной в реестре библиотеке comcntr.dll. Если эта библиотека не зарегистрирована в реестре Windows или зарегистрирована некорректная версия (например, от старого релиза платформы), регламентное фоновое задание завершится аварийно.
Рассмотрим по шагам процесс принудительной регистрации COM-компоненты на компьютере или сервере, где физически расположены файловые базы данных:
cmd, нажмем правой кнопкой мыши на найденное приложение и выберем пункт "Запуск от имени администратора".C:\Program Files\1cv8\ (для 64-разрядной версии платформы) или C:\Program Files (x86)\1cv8\ (для 32-разрядной версии).8.3.22.1709) и откроем папку bin. Полный путь будет выглядеть так:
C:\Program Files\1cv8\8.3.22.1709\bin\comcntr.dll с помощью системной утилиты Windows regsvr32. Для этого в командной строке введем следующую команду и нажмем Enter:
regsvr32 "C:\Program Files\1cv8\8.3.22.1709\bin\comcntr.dll"
В случае успешной регистрации на экране появится системное сообщение: "Успешное выполнение DllRegisterServer в ...".
Важное примечание касательно разрядности: Если на сервере или компьютере установлены одновременно 32-разрядные и 64-разрядные версии платформы 1С, убедитесь, что вы регистрируете компоненту той разрядности, под которой запускаются фоновые процессы регламентных заданий. В капризных случаях системному администратору рекомендуется зарегистрировать компоненты обеих разрядностей из соответствующих папок платформы.
---
Разберем фундаментальное отличие файлового режима работы 1С от клиент-серверного. В клиент-серверном варианте за планирование и запуск всех фоновых процессов отвечает служба сервера 1С:Предприятия, которая работает непрерывно. В файловом же режиме выделенного сервера нет.
В файловой базе данных регламентное задание может быть выполнено только тогда, когда в программе запущен хотя бы один активный сеанс пользователя. Внутренний планировщик 1С использует этот активный сеанс для неявного запуска фонового потока, выполняющего регламентную операцию. Если все пользователи вышли из программы, ни одно задание по расписанию запущено не будет.
Более того, если сеанс пользователя, на котором выполнялся фоновый обмен, аварийно закрывается или компьютер уходит в спящий режим, активное задание прерывается и переходит в статус "Отменено". Чтобы оперативно узнавать о таких сбоях, можно использовать обработку для отправки оповещений на почту при остановке обмена.
Для решения этой проблемы организуем выделенный служебный сеанс для обработки регламентных заданий:
АдминистраторОбмена)./AllowExecuteScheduledJobs -Force.Пример командной строки запуска файловой базы для обработки заданий по расписанию:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\1C_Bases\UT_Trade" /N "АдминистраторОбмена" /P "Пароль" /AllowExecuteScheduledJobs -Force
Параметр /AllowExecuteScheduledJobs -Force указывает системе, что данный сеанс является выделенным для выполнения регламентных заданий и платформа будет принудительно отдавать приоритет фоновым задачам именно в этом потоке.
---
Проанализируем ситуацию с правами учетных записей. Регламентное задание может запускаться от имени определенного системного пользователя Windows. Если базы данных файловые и находятся в сетевом каталоге (например, на сетевом диске Z:\ или по сетевому пути \\server\share\), фоновый процесс должен иметь физический доступ к этим каталогам.
При ручном обмене 1С обращается к сетевому каталогу от имени вашей учетной записи Windows. Но при автоматическом запуске планировщик задач Windows может запускать процесс от имени локальной системной учетной записи (SYSTEM или Network Service), у которой нет прав доступа к сетевой папке со второй базой данных.
Для исправления этой проблемы выполним следующие действия:
---
Современные конфигурации 1С, построенные на базе Библиотеки стандартных подсистем (БСП), содержат защитный механизм блокировки работы с внешними ресурсами в копиях баз данных. Если вы перенесли файловую базу в другую папку или восстановили ее из резервной копии, платформа при запуске спросит: "Информационная база перемещена или является копией?".
Если вы проигнорировали этот вопрос или система автоматически посчитала базу копией, БСП заблокирует все внешние соединения. При этом ручные операции могут частично выполняться, но регламентные задания обмена будут принудительно отменяться.
Проверим и снимем эту блокировку:
---
Как показывает практика и обсуждения практикующих специалистов, механизм прямого COM-подключения через comcntr.dll является устаревшим и крайне нестабильным. Он зависит от обновлений Windows, разрядности платформы, установленных обновлений безопасности и прав доступа в ОС. Если штатный автоматический обмен наладить не удается, можно использовать правила переноса данных между УТ 11 и БП 3 через универсальный обмен XML.
Наиболее надежным, современным и отказоустойчивым методом синхронизации между УТ 11 и БП 3 является переход на обмен через универсальный формат EnterpriseData. При таком сценарии базы общаются не напрямую, а посредством выгрузки и загрузки файлов данных (в формате XML/JSON).
Преимущества обмена через EnterpriseData:
Для перенастройки синхронизации выполним следующие шаги: