К статье
Практический материал

Администрирование · 9 мин

Под каким пользователем выполняются регламентные задания 1С

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

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

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

Частая причина сбоев — пустое поле пользователя, отключённая учётная запись или недостаток ролей. Ниже разберём, где смотреть исполнителя, как правильно его назначить и как проверить, что задание действительно отработало.

Кто фактически исполняет задание в разных режимах

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

В файловом режиме всё иначе: фоновые задания не стартуют автоматически. Их выполняет либо отдельно запущенный процесс с параметром /ExecuteScheduledJobs, либо сеанс пользователя, в командной строке которого установлен ключ /AllowExecuteScheduledJobs. В этом случае пользователем фонового задания становится либо пользователь из настроек задания, либо (для типовых конфигураций) специально выделенная учётная запись.

Где посмотреть, под каким пользователем работает задание

В типовых конфигурациях на базе Библиотеки стандартных подсистем откройте раздел «Администрирование» → «Обслуживание» → «Регламентные операции» (или «Регламентные и фоновые задания»). В списке заданий откройте нужное и проверьте поле «Пользователь» — именно эта учётная запись используется при выполнении.

Если конфигурация самописная или без БСП, используйте консоль заданий (внешнюю обработку) или код: у объекта метаданных регламентного задания есть свойство «Имя пользователя». Программно список можно получить через РегламентныеЗадания.ПолучитьРегламентныеЗадания() и проверить свойство ИмяПользователя у каждого элемента.

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

Как определить пользователя задания
  1. 1
    Откройте «Администрирование» → «Регламентные и фоновые задания»
  2. 2
    Найдите нужное задание и откройте его настройки
  3. 3
    Проверьте поле «Пользователь» (или «Имя пользователя»)
  4. 4
    Откройте журнал регистрации и отфильтруйте по событию фонового задания
  5. 5
    Сопоставьте пользователя из настроек с пользователем в журнале

Что происходит, если пользователь не указан

Если поле «Имя пользователя» пустое, фоновое задание выполняется без аутентифицированного пользователя — с «пустым» контекстом. В этом случае применяются права по умолчанию, которые обычно минимальны: многие роли не назначены, доступ к данным ограничен, а часть функционала (например, зависящего от текущего пользователя) работает некорректно.

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

Как правильно назначить пользователя для регламентных заданий

Рекомендуемая практика — создать отдельную служебную учётную запись, например «Робот» или «ФоновыеЗадания». Ей назначаются только те роли, которые реально нужны для выполнения конкретных заданий: чтение и запись нужных объектов, право на запуск фоновых заданий, при необходимости — административные функции.

Для этой учётной записи обычно отключают интерактивный вход (если позволяет механизм ролей), не задают срок действия пароля или задают длинный, чтобы задания не останавливались из-за истёкшего пароля. В типовых конфигурациях убедитесь, что пользователь включён и не заблокирован.

После назначения укажите эту учётную запись в свойствах каждого регламентного задания. В БСП это делается в карточке задания, в коде — через свойство ИмяПользователя объекта регламентного задания.

bsl
Задание = РегламентныеЗадания.НайтиПредопределенное("ОбменДанными");
Задание.ИмяПользователя = "ФоновыеЗадания";
Задание.Записать();

Типичные проблемы с правами и их диагностика

Самая частая ошибка — задание назначено на пользователя без нужных ролей. Код падает при первой попытке записи объекта. Вторая по частоте — отключённая учётная запись: задание либо не стартует, либо завершается с ошибкой аутентификации. Третья — в файловом режиме никто не запускает исполнение фоновых заданий, и они просто копятся в очереди.

Проверяйте журнал регистрации по событию «Фоновое задание. Ошибка выполнения» и смотрите текст исключения. Если ошибка указывает на права — сопоставьте роли пользователя задания с требуемыми объектами. Если задание вообще не появляется в журнале — проверяйте, включено ли оно, не заблокировано ли и работает ли механизм исполнения (в файловом режиме — запущен ли процесс-исполнитель).

Типичные ошибки
01
Оставить поле пользователя пустым — задание падает с ошибкой прав доступа или работает с урезанным контекстом
02
Использовать учётную запись сотрудника — при его отключении все задания останавливаются
03
Дать служебному пользователю полные права — любой сбой в коде задания получает неограниченный доступ к данным
04
В файловом режиме не запустить процесс /ExecuteScheduledJobs — задания не выполняются вообще
05
Не проверить журнал регистрации после настройки — ошибки остаются незамеченными неделями

Как проверить результат и настроить надёжный запуск

После настройки выполните задание принудительно (кнопка «Выполнить сейчас» в консоли заданий) и сразу откройте журнал регистрации. Убедитесь, что события завершились успешно, пользователь указан правильный, а ожидаемые изменения данных появились в базе.

Для файлового режима настройте автозапуск отдельного сеанса с ключом /ExecuteScheduledJobs через планировщик Windows на сервере или выделенной машине. Для клиент-серверного — проверьте, что у задания не установлена блокировка и что расписание корректно (частая ошибка — задание настроено на время, когда сервер обслуживается).

Контрольные точки

Как проверить результат

Событие в журнале регистрации
Норма

Есть запись об успешном завершении фонового задания с указанием служебного пользователя

Тревожный признак

Ошибки «Нарушение прав доступа», пустой пользователь или записей нет вовсе

Поле «Пользователь» в настройках задания
Норма

Указана активная служебная учётная запись с нужными ролями

Тревожный признак

Поле пустое или указан отключённый/уволенный сотрудник

Фактические изменения данных
Норма

Документы, записи регистров или результаты обмена появились после запуска

Тревожный признак

Задание «отработало», но данных нет — контекст пользователя урезан

Итог

Что важно запомнить

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

Частые вопросы

Можно ли выполнять регламентное задание под разными пользователями?

Нет, у одного регламентного задания одно поле «Имя пользователя». Если нужна логика с разными правами, создают несколько заданий или внутри кода явно проверяют и ограничивают действия. Назначать заданию «Полные права» ради универсальности небезопасно.

Почему задание работает у администратора, но не работает под служебным пользователем?

Почти всегда причина в недостающих ролях. Сравните состав ролей служебной учётной записи с объектами, к которым обращается код задания, и добавьте только необходимые. Текст ошибки в журнале регистрации укажет конкретный объект, к которому нет доступа.

Кто выполняет задание, если поле пользователя пустое?

Задание запускается без аутентифицированного пользователя — с пустым контекстом и минимальными правами по умолчанию. Многие операции в таком режиме завершатся ошибкой, поэтому для рабочих заданий поле следует заполнять всегда.

Нужно ли служебному пользователю право интерактивного входа?

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

Почему в файловой базе задания не выполняются, хотя всё настроено?

В файловом режиме нет автоматического исполнителя: нужен отдельный сеанс, запущенный с ключом /ExecuteScheduledJobs, либо пользовательский сеанс с /AllowExecuteScheduledJobs. Если такой процесс не запущен, задания будут стоять в очереди бесконечно.

Как узнать, от чьего имени задание выполнялось раньше?

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