Почему перестали ходить обмены между базами 1С по расписанию через файл и как это исправить?

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

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

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

Для того чтобы понять суть проблемы, проанализируем разницу между ручным и автоматическим запуском процедур обмена. Ключевая причина кроется в контексте исполнения программного кода на уровне операционной системы Windows:

  1. Ручной запуск («Выполнить обмен»): когда пользователь или администратор интерактивно нажимает кнопку в интерфейсе клиентского приложения, исполняемый код работает в контексте текущей сессии операционной системы этого пользователя. Если пользователь авторизован в домене Active Directory и имеет доступ к сетевому каталогу обмена, операционная система беспрепятственно разрешает клиентскому приложению 1С записать или прочитать файл обмена.
  2. Автоматический запуск (регламентное задание): регламентные и фоновые задания в клиент-серверной архитектуре всегда выполняются на стороне сервера приложений 1С без участия клиентской сессии. Исполнителем кода выступает рабочий процесс сервера — rphost.exe. Этот процесс наследует права той учетной записи операционной системы, под которой запущена служба «Агент сервера 1С:Предприятия». Если служба работает под локальной системной учетной записью (например, LocalSystem, NetworkService) или под стандартным локальным пользователем USR1CV8, у нее физически нет прав доступа к сетевым ресурсам домена. Как только системные администраторы вносят изменения в доменные политики или права пользователей, сервер 1С теряет возможность достучаться до сетевой папки.

Какой процесс на сервере отвечает за выполнение заданий?

Часто возникает вопрос: какой именно процесс блокируется брандмауэром или политиками безопасности при выполнении обмена? Важно понимать, что для каждого регламентного задания в операционной системе не создается отдельный процесс. Управление фоновыми заданиями осуществляет менеджер кластера сервера 1С (процесс rmngr.exe), который распределяет задачи по доступным рабочим процессам rphost.exe. Таким образом, права на чтение и запись файлов обмена определяются исключительно правами учетной записи, под которой запущена служба Агента сервера 1С.

Ловушка Журнала регистрации: почему статус задания «Выполнено успешно»?

Еще одна серьезная проблема при диагностике — отсутствие явных ошибок. Журнал регистрации 1С и консоль регламентных заданий могут рапортовать о том, что фоновое задание выполнено успешно, хотя файл обмена так и не появился в папке. Выясним, почему так происходит:

Разработчики типовых конфигураций 1С (особенно построенных на базе Библиотеки Стандартных Подсистем) защищают код обмена от аварийного завершения. Операции чтения и записи файлов практически всегда оборачиваются в конструкцию Попытка ... Исключение. Рассмотрим пример упрощенной логики работы системы:


Попытка
    ЗаписатьФайлОбмена(ПутьКФайлу);
Исключение
    // Ошибка перехватывается, записывается в регистр сведений "Результаты синхронизации"
    ЗаписатьПредупреждениеВЛог(ОписаниеОшибки());
КонецПопытки;

Для платформы 1С такое фоновое задание завершается штатно, без системного сбоя. В результате в Журнале регистрации фиксируется статус «Выполнено». Также в коде может присутствовать предварительная проверка существования каталога с помощью метода Файл.Существует(). Если у службы сервера нет прав доступа на сетевой ресурс, метод вернет Ложь (как будто ресурса не существует), и программа завершит работу без генерации исключения.

Пошаговое руководство по устранению проблемы

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

Шаг 1. Настройка доменной учетной записи для службы 1С

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

  1. Создайте в Active Directory пользователя, например, domain\usr-1c-service.
  2. На сервере приложений 1С откройте оснастку «Локальная политика безопасности» (secpol.msc) и перейдите в раздел «Локальные политики» -> «Назначение прав пользователя».
  3. Найдите политику «Вход в качестве службы» (SeServiceLogonRight) и добавьте туда созданного доменного пользователя.
  4. Предоставьте созданному пользователю полные права на локальный каталог служебных файлов кластера 1С (по умолчанию это папка C:\Program Files\1cv8\srvinfo) и на временную папку Temp.

Шаг 2. Настройка прав на сетевую папку обмена

Для того чтобы служба сервера 1С могла работать с сетевым каталогом, необходимо настроить права доступа в двух местах:

  1. Вкладка «Доступ» (Share Permissions): В свойствах сетевой папки добавьте пользователя domain\usr-1c-service и установите для него разрешения «Изменение» и «Чтение».
  2. Вкладка «Безопасность» (NTFS Permissions): В свойствах безопасности папки добавьте этого же пользователя и предоставьте права на «Запись», «Чтение» и «Модификацию» (Modify). Отсутствие прав именно на вкладке NTFS — наиболее частая причина блокировки записи файлов процессом rphost.exe.

Шаг 3. Перезапуск службы 1С:Предприятия

После назначения прав откройте оснастку «Службы» (services.msc), найдите службу «Агент сервера 1С:Предприятия», откройте ее свойства и на вкладке «Вход в систему» укажите созданную доменную учетную запись domain\usr-1c-service и пароль. Выполните перезапуск службы.

Тонкости авторизации: Kerberos против NTLM и имена сетевых путей

Проанализируем влияние формата адреса сетевого каталога на стабильность подключения. При настройке пути к файлу обмена крайне не рекомендуется использовать IP-адреса, например, \\192.168.1.100\Exchange. При обращении по IP-адресу операционная система Windows автоматически переключается на использование протокола авторизации NTLM.

В современных корпоративных сетях протокол NTLM часто принудительно отключается администраторами из соображений безопасности. Чтобы гарантировать использование более безопасного протокола Kerberos, всегда прописывайте пути к каталогам обмена с использованием полных доменных имен (FQDN), например: \\server.domain.local\Exchange.

Метод быстрой диагностики: пишем проверочный скрипт

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


ПутьКПапке = "\\server.domain.local\Exchange\";
ИмяТестовогоФайла = ПутьКПапке + "test_1c_write.txt";

ТестФайла = Новый Файл(ИмяТестовогоФайла);
Попытка
    ЗаписьТекста = Новый ЗаписьТекста(ИмяТестовогоФайла, КодировкаТекста.UTF8);
    ЗаписьТекста.ЗаписатьСтроку("Проверка записи из фонового задания сервера 1С");
    ЗаписьТекста.Закрыть();
    
    ЗаписьЖурналаРегистрации("ТестДоступаСервера", 
        УровеньЖурналаРегистрации.Информация, , , 
        "Успешно! Служба сервера 1С имеет полный доступ к каталогу: " + ПутьКПапке);
Исключение
    ЗаписьЖурналаРегистрации("ТестДоступаСервера", 
        УровеньЖурналаРегистрации.Ошибка, , , 
        "Ошибка доступа к каталогу: " + ПутьКПапке + ". Описание ошибки: " + ОписаниеОшибки());
КонецПопытки;

Запустите данный код строго в контексте фонового (регламентного) задания. Если у службы нет прав, Журнал регистрации зафиксирует четкую системную ошибку операционной системы (например, «Access is denied» / «Отказано в доступе»), с которой уже можно предметно обращаться к сотрудникам ИТ-отдела.

Альтернативные и более надежные каналы обмена данными

Обмен данными через общие сетевые папки (SMB-ресурсы) постепенно уступает место более технологичным и безопасным решениям. Если вы хотите раз и навсегда избавить систему обменов от зависимости от доменных учетных записей Windows и локальных прав сетевых каталогов, рассмотрим альтернативные варианты интеграции:

  1. FTP / SFTP серверы: Передача файлов осуществляется по специализированным протоколам. Серверу 1С не требуются права в локальной сети Windows, авторизация происходит по логину и паролю непосредственно на удаленном FTP-сервере. Это изолирует инфраструктуру обмена от изменений в Active Directory.
  2. HTTP-сервисы и Web-сервисы (REST / SOAP): Информационные базы связываются друг с другом напрямую по протоколу HTTP/HTTPS. Данные (пакеты XML/JSON) передаются непосредственно в теле запроса из одной базы в другую. Это самый надежный способ интеграции, полностью исключающий промежуточные файлы и папки.
  3. Облачные и объектные хранилища (S3): Обмен файлами через облачные API-интерфейсы. Файлы выгружаются в объектное хранилище, откуда принимающая база их скачивает. Обеспечивает высочайший уровень доступности и отказоустойчивости.
← На главную