Как обеспечить доступ сервера 1С к сетевой папке: пошаговое руководство по настройке прав и кода

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

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

Разберем причину: почему сервер 1С не видит сетевую папку?

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

Чаще всего служба запускается от имени специального локального пользователя USR1CV8. Этот пользователь является локальным для того сервера, где установлена 1С, и «ничего не знает» о ресурсах в сети. Именно поэтому простое копирование пути из проводника в код 1С часто не дает результата.

Шаг 1. Определим пользователя службы сервера 1С

Прежде чем настраивать доступы, нам необходимо выяснить, от чьего имени работает сервер. Рассмотрим, как это сделать:

  1. На сервере, где установлен 1С:Предприятие, откройте «Панель управления» — «Администрирование» — «Службы» (или нажмите Win+R и введите services.msc).
  2. Найдите в списке службу Агент сервера 1С:Предприятие 8.3.
  3. Нажмите на нее правой кнопкой мыши и выберите «Свойства».
  4. Перейдите на вкладку «Вход в систему».

Здесь вы увидите конкретного пользователя. Чаще всего это .\USR1CV8. Запомните это имя, именно ему мы будем давать права доступа к сетевой папке.

Шаг 2. Использование UNC-путей вместо букв дисков

Выясним важную техническую деталь: служба сервера 1С никогда не увидит диск Z:, даже если вы подключили его в своем сеансе. Для сервера таких дисков не существует. Поэтому в коде 1С мы должны использовать только UNC-пути (Universal Naming Convention).

Вместо пути Z:\Files\report.xlsx всегда используйте формат:

\\ИмяКомпьютера\ИмяПапки\report.xlsx

Проанализируем пример кода, который будет корректно работать на стороне сервера:


ПутьКФайлу = "\\Server-Data\Exchange\Export\data.xml";
ФайлНаДиске = Новый Файл(ПутьКФайлу);

Если ФайлНаДиске.Существует() Тогда
    // Продолжаем работу с файлом
    Сообщить("Файл успешно найден сервером");
Иначе
    // Обработка ошибки доступа
    Сообщить("Файл не найден. Проверьте права доступа пользователя службы 1С.");
КонецЕсли;

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

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

Рассмотрим проверенный метод решения — создание одноименных учетных записей:

  1. На компьютере, где физически находится папка, создайте нового пользователя Windows.
  2. Важно: Имя пользователя и ПАРОЛЬ должны быть абсолютно идентичны тем, что используются для запуска службы 1С на основном сервере. Если на сервере 1С у USR1CV8 пароль Pass123, то и на компьютере с папкой создаем USR1CV8 с паролем Pass123.
  3. В настройках этого пользователя на целевом компьютере убедитесь, что срок действия пароля не ограничен.

Теперь, когда сервер 1С попытается обратиться к папке \\Comp-1\Share, он передаст свои учетные данные. Удаленный компьютер увидит, что к нему «стучится» пользователь с известным ему именем и верным паролем, и разрешит вход.

Шаг 4. Настройка разрешений папки (Безопасность и Общий доступ)

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

1. Вкладка «Общий доступ» (Share Permissions):

Нажмите правой кнопкой на папку — «Свойства» — «Общий доступ» — «Расширенная настройка общего доступа» — «Разрешения». Добавьте сюда созданного пользователя (или группу «Все», если это допустимо политикой безопасности) и установите права на «Изменение» и «Чтение».

2. Вкладка «Безопасность» (NTFS Permissions):

В тех же свойствах папки перейдите на вкладку «Безопасность». Нажмите «Изменить» — «Добавить». Введите имя пользователя USR1CV8. Установите флажки на пунктах «Чтение», «Запись», «Список содержимого папки» и «Изменение».

Помните: Итоговые права доступа — это пересечение прав общего доступа и прав NTFS. Если в одном месте разрешено чтение, а в другом — полный доступ, у пользователя будет только право на чтение.

Шаг 5. Использование символических ссылок (Advanced method)

Иногда внешние компоненты или старый код 1С категорически требуют «локального» пути и не умеют работать с сетевыми адресами \\server\.... В этом случае мы можем обмануть систему, создав символическую ссылку на директорию.

Рассмотрим, как создать такую ссылку через командную строку (запущенную от имени администратора):

mklink /d C:\NetworkData \\RemoteServer\ShareFolder

После выполнения этой команды на диске C: появится папка NetworkData. Для 1С она будет выглядеть как обычная локальная папка, но при обращении к ней данные будут прозрачно для системы уходить в сеть. Это элегантное решение многих проблем совместимости.

Шаг 6. Программная авторизация через COM-объект

Если настроить права на уровне операционной системы по каким-то причинам невозможно, проанализируем программный метод «подключения» ресурса непосредственно из кода 1С. Мы можем использовать COM-объект WScript.Network для временной авторизации под конкретными учетными данными.

Посмотрим на пример функции для подключения сетевого ресурса:


Процедура ПодключитьСетевойРесурс(ПутьКРесурсу, Логин, Пароль)
    Попытка
        Network = Новый COMОбъект("WScript.Network");
        // Пытаемся подключить ресурс без назначения буквы диска
        // Параметры: ИмяДиска (пусто), Путь, СохранятьСвязь, Пользователь, Пароль
        Network.MapNetworkDrive("", ПутьКРесурсу, Ложь, Логин, Пароль);
    Исключение
        ЗаписьЖурналаРегистрации("Доступ к папке", УровеньЖурналаРегистрации.Ошибка, , , 
            "Не удалось авторизоваться в папке: " + ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

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

Проверка и диагностика

Если после всех настроек доступ не появился, проанализируем следующие моменты:

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

← На главную