Под каким пользователем операционной системы выполняется код с директивой &НаСервере?

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

При разработке управляемых форм разработчики часто сталкиваются с ошибкой «ошибка при выполнении файловой операции» при попытке прочитать или записать файл на диске. Давайте разберемся, от чьего имени исполняется код на сервере и почему возникают подобные ограничения доступа.

Понимание контекста выполнения серверного кода

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

Выполнение кода в клиент-серверном варианте (сервер 1С:Предприятия)

В клиент-серверном варианте работа осуществляется через службу «Агент сервера 1С:Предприятия». Рассмотрим подробнее, как это влияет на выполнение кода:

  1. Код, помеченный директивой &НаСервере, исполняется в процессе rphost.exe (рабочий процесс сервера).
  2. Этот процесс всегда запускается от имени учетной записи операционной системы, под которой установлена и запущена служба агента сервера (по умолчанию в Windows это часто USR1CV8).
  3. Именно этот пользователь ОС должен обладать необходимыми правами доступа (чтение, запись, изменение) к папкам, файлам или сетевым ресурсам, к которым обращается ваша обработка или отчет.

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

Выполнение кода в файловом варианте

Разберем ситуацию, когда база работает в файловом режиме. Здесь архитектура иная:

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

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

Если ваша обработка выдает ошибку доступа к файлу, проанализируем ситуацию по шагам:

  1. Проверка прав: В первую очередь необходимо определить, где именно расположена база. Если это серверная база, обратитесь к системным администраторам, чтобы они проверили права пользователя службы Агент сервера 1С:Предприятия на целевую директорию.
  2. Анализ логов: Всегда просматривайте логи технологического журнала 1С. Там фиксируются подробные ошибки при работе с файловой системой, включая указания на конкретные пути и тип отказа (например, Access Denied).
  3. Использование инструментов: Если возникли сомнения, от какого имени запущен процесс, воспользуйтесь диспетчером задач или утилитой Process Explorer. Вкладка «Подробности» покажет пользователя, от которого запущен rphost.exe.

Особенности регламентных заданий

Отдельно отметим работу РегламентныхЗаданий. Поскольку они всегда исполняются на сервере, они подчиняются тем же правилам, что и код &НаСервере. Если регламентное задание пытается обратиться к «Рабочему столу» пользователя или папке, расположенной в профиле пользователя ОС, оно гарантированно получит отказ, так как у службы USR1CV8 нет прав доступа к профилям других пользователей. Всегда используйте общие сетевые папки или выделенные директории, доступные для учетной записи службы сервера.

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

← На главную