Как настроить доступ к файлам по сети из фоновых и регламентных заданий на сервере 1С?

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

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

Почему сервер 1С не видит сетевые каталоги?

Проанализируем основные причины, из-за которых серверный контекст или COM-объекты вроде Scripting.FileSystemObject не могут получить доступ к сетевым папкам:

  1. Тип учетной записи службы сервера 1С. По умолчанию при установке платформа 1С настраивает службу (ragent / «Агент сервера 1С:Предприятия») для запуска под локальным системным пользователем (например, USR1CV8). Локальный пользователь одного сервера не имеет никаких прав на доступ к общим ресурсам других компьютеров в локальной сети.
  2. Изоляция сессий Windows (Session 0). Фоновые задания выполняются службой в неинтерактивном режиме. Службы Windows изолированы от пользовательского окружения и не имеют доступа к сетевым дискам с буквенными обозначениями (таким как Z:\ или Y:\), подключенным в сессиях конкретных интерактивных пользователей.
  3. Двухуровневая модель прав Windows. Для успешного чтения и записи файлов по сети права доступа должны быть предоставлены одновременно на уровне общего доступа (Share Permissions) и на уровне файловой системы (NTFS Permissions).

Использование штатного метода НайтиФайлы() на сервере

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

Синтаксис метода:

НайтиФайлы(<Путь>, <Маска>, <ИскатьВПодкаталогах>)

Метод доступен в следующих контекстах: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент) и мобильное приложение (сервер).

Посмотрим на пример кода, предназначенного для поиска и обработки файлов на сетевом ресурсе из регламентного задания. Обратите внимание, что путь к каталогу обязательно должен быть указан в формате UNC (сетевой путь вида \\Сервер\Ресурс\), а не в виде подключенного сетевого диска:


// Пример поиска файлов на сетевом ресурсе
СетевойКаталог = "\\FileServer\Exchange\Incoming\";
МаскаПоиска = "*.xml";

МассивФайлов = НайтиФайлы(СетевойКаталог, МаскаПоиска, Ложь);

Для Каждого НайденныйФайл Из МассивФайлов Цикл
    Если НайденныйФайл.ЭтоФайл() Тогда
        // Чтение и обработка содержимого файла
        ИмяФайла = НайденныйФайл.ПолноеИмя;
        РазмерФайла = НайденныйФайл.Размер();
        
        // Логика обработки...
    КонецЕсли;
КонецЦикла;

Способы настройки прав службы сервера 1С

Рассмотрим варианты корректной настройки прав операционной системы для предоставления службе 1С доступа к общим сетевым папкам.

Вариант 1. Запуск службы под доменной учетной записью (Рекомендуемый)

Если сервер 1С и файловое хранилище находятся в домене Active Directory, наилучшей практикой является использование специального доменного сервисного пользователя (например, DOMAIN\svc_1c):

  1. Создаем доменную учетную запись для службы 1С.
  2. На сервере 1С предоставляем пользователю локальное право «Вход в качестве службы» (Log on as a service) в локальных политиках безопасности.
  3. Назначаем пользователю полные права на локальные каталоги 1С (каталог установки платформы и каталог данных кластера srvinfo).
  4. На сетевом ресурсе выдаем пользователю права на чтение и запись в свойствах общего доступа (Share) и во вкладке «Безопасность» (NTFS).
  5. В оснастке служб Windows (services.msc) открываем свойства службы «Агент сервера 1С:Предприятия», переходим на вкладку «Вход в систему» и указываем учетную запись DOMAIN\svc_1c с паролем, после чего перезапускаем службу.

Вариант 2. Запуск службы под учетной записью «Локальная система» (LocalSystem)

В некоторых случаях службу сервера 1С запускают под встроенной системной учетной записью (LocalSystem / Система). В доменной среде при таком запуске обращение к удаленным ресурсам сети происходит от имени учетной записи самого компьютера (например, DOMAIN\SERVER1C$).

  1. В оснастке services.msc в свойствах службы 1С выбираем «Вход в систему» с учетной записью «С системной учетной записью» (Local System account).
  2. На целевом файловом сервере в правах доступа к общей сетевой папке и на вкладке безопасности NTFS добавляем учетную запись компьютера сервера 1С (обязательно включив поиск объектов типа «Компьютеры» в Active Directory).

Вариант 3. Настройка в одноранговой сети (Рабочая группа)

Если домен отсутствует, и серверы работают в рабочей группе, доступ настраивается путем создания одинаковых локальных пользователей:

  1. На сервере 1С и на файловом сервере создаем локального пользователя с абсолютно одинаковым логином и паролем (например, 1c_user).
  2. На файловом сервере выдаем созданному пользователю права на сетевую папку (Share и NTFS).
  3. На сервере 1С запускаем службу «Агент сервера 1С:Предприятия» от имени этого пользователя.

Ограничения профилей безопасности и безопасного режима

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

Альтернативные способы передачи файлов

Если настроить прямой доступ к общей папке через SMB/RPC по соображениям сетевой безопасности невозможно, рассмотрим альтернативные механизмы взаимодействия:

  1. Использование FTP: передача файлов с помощью встроенного в платформу объекта FTPСоединение, что полностью избавляет от зависимости от прав служб Windows.
  2. Использование HTTP-сервисов или REST API: получение данных через объект HTTPСоединение по протоколу HTTP/HTTPS.
  3. Предварительная репликация: автоматическое копирование файлов с сетевого ресурса в локальный каталог сервера 1С с помощью утилит синхронизации (например, Robocopy) перед запуском регламентного задания.
← На главную