Синхронизация данных между информационными базами 1С через общий файловый ресурс (сетевую папку) — один из классических и широко распространенных методов интеграции. Однако администраторы и разработчики часто сталкиваются с крайне коварной проблемой: ручной запуск обмена через кнопку в интерфейсе проходит успешно, а автоматический обмен по расписанию (через регламентное задание) не выполняется, при этом видимых ошибок в программе не возникает. Рассмотрим подробно, почему так происходит, как функционируют механизмы платформы 1С в данном сценарии и как шаг за шагом диагностировать и устранить эту проблему.
Для того чтобы понять суть проблемы, проанализируем разницу между ручным и автоматическим запуском процедур обмена. Ключевая причина кроется в контексте исполнения программного кода на уровне операционной системы Windows:
rphost.exe. Этот процесс наследует права той учетной записи операционной системы, под которой запущена служба «Агент сервера 1С:Предприятия». Если служба работает под локальной системной учетной записью (например, LocalSystem, NetworkService) или под стандартным локальным пользователем USR1CV8, у нее физически нет прав доступа к сетевым ресурсам домена. Как только системные администраторы вносят изменения в доменные политики или права пользователей, сервер 1С теряет возможность достучаться до сетевой папки.Часто возникает вопрос: какой именно процесс блокируется брандмауэром или политиками безопасности при выполнении обмена? Важно понимать, что для каждого регламентного задания в операционной системе не создается отдельный процесс. Управление фоновыми заданиями осуществляет менеджер кластера сервера 1С (процесс rmngr.exe), который распределяет задачи по доступным рабочим процессам rphost.exe. Таким образом, права на чтение и запись файлов обмена определяются исключительно правами учетной записи, под которой запущена служба Агента сервера 1С.
Еще одна серьезная проблема при диагностике — отсутствие явных ошибок. Журнал регистрации 1С и консоль регламентных заданий могут рапортовать о том, что фоновое задание выполнено успешно, хотя файл обмена так и не появился в папке. Выясним, почему так происходит:
Разработчики типовых конфигураций 1С (особенно построенных на базе Библиотеки Стандартных Подсистем) защищают код обмена от аварийного завершения. Операции чтения и записи файлов практически всегда оборачиваются в конструкцию Попытка ... Исключение. Рассмотрим пример упрощенной логики работы системы:
Попытка
ЗаписатьФайлОбмена(ПутьКФайлу);
Исключение
// Ошибка перехватывается, записывается в регистр сведений "Результаты синхронизации"
ЗаписатьПредупреждениеВЛог(ОписаниеОшибки());
КонецПопытки;
Для платформы 1С такое фоновое задание завершается штатно, без системного сбоя. В результате в Журнале регистрации фиксируется статус «Выполнено». Также в коде может присутствовать предварительная проверка существования каталога с помощью метода Файл.Существует(). Если у службы сервера нет прав доступа на сетевой ресурс, метод вернет Ложь (как будто ресурса не существует), и программа завершит работу без генерации исключения.
Разберем по шагам, как правильно настроить окружение для бесперебойной работы обменов по расписанию в доменной сети.
Использовать права «Администратора домена» для службы сервера 1С крайне небезопасно. Вместо этого необходимо создать выделенного доменного пользователя с минимально необходимым набором прав:
domain\usr-1c-service.secpol.msc) и перейдите в раздел «Локальные политики» -> «Назначение прав пользователя».SeServiceLogonRight) и добавьте туда созданного доменного пользователя.C:\Program Files\1cv8\srvinfo) и на временную папку Temp.Для того чтобы служба сервера 1С могла работать с сетевым каталогом, необходимо настроить права доступа в двух местах:
domain\usr-1c-service и установите для него разрешения «Изменение» и «Чтение».rphost.exe.После назначения прав откройте оснастку «Службы» (services.msc), найдите службу «Агент сервера 1С:Предприятия», откройте ее свойства и на вкладке «Вход в систему» укажите созданную доменную учетную запись domain\usr-1c-service и пароль. Выполните перезапуск службы.
Проанализируем влияние формата адреса сетевого каталога на стабильность подключения. При настройке пути к файлу обмена крайне не рекомендуется использовать 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 и локальных прав сетевых каталогов, рассмотрим альтернативные варианты интеграции: