Администрирование · 10 мин
Под каким пользователем выполняется фоновое задание в 1С
Разбираемся, под каким пользователем выполняется фоновое задание в 1С: файловая и клиент-серверная база, регламентные задания, права доступа и типичные ошибки.
Фоновые задания в 1С часто становятся источником проблем: документы не проводятся, обмены не запускаются, а в журнале регистрации пусто. В большинстве случаев причина кроется в том, под каким пользователем выполняется задание и какие у этого пользователя права. Понимание механизма позволяет быстро находить и устранять такие сбои без привлечения разработчика.
Ответ на вопрос зависит от двух факторов: типа информационной базы (файловая или клиент-серверная) и способа запуска задания (вручную из кода, по расписанию или как регламентное задание). В каждом сценарии платформа ведёт себя по-разному, и это нужно учитывать при настройке.
Как платформа определяет пользователя фонового задания
Каждое фоновое задание в 1С имеет свойство «Пользователь». Оно заполняется автоматически в момент запуска и показывает, от чьего имени выполняется код и под чьими правами происходит обращение к данным. Именно этот пользователь фиксируется в журнале регистрации рядом с событием задания.
Если задание запущено программно методом ФоновыеЗадания.Выполнить(), оно наследует сеанс инициатора: выполняется под тем пользователем, который вызвал метод. Если задание запускается планировщиком как регламентное, пользователь берётся из свойств самого регламентного задания в конфигураторе или консоли заданий.
Файловая база: кто запускает фоновые задания
В файловом режиме нет отдельного сервера 1С, поэтому фоновые задания выполняются внутри клиентского процесса. Платформа выбирает один из активных сеансов пользователей, который становится «исполнителем» регламентных заданий. Как правило, это первый подключившийся сеанс, в котором разрешено выполнение регламентных заданий.
Практическое следствие: если пользователь-исполнитель закроет программу, выполнение регламентных заданий остановится до появления нового сеанса. Поэтому в файловых базах рекомендуют держать отдельный постоянно запущенный сеанс под специальной учётной записью с достаточными правами.
Проверить, какой сеанс сейчас выполняет регламентные задания, можно через консоль заданий или обработку «Активные пользователи» — в списке сеансов у исполнителя будет соответствующая активность фоновых процессов.
Клиент-серверная база: роль сервера 1С
В клиент-серверном варианте фоновые задания выполняются на сервере 1С:Предприятия в рабочих процессах кластера. Клиентское приложение пользователя для этого не требуется — задания работают, даже если ни один пользователь не вошёл в базу.
Здесь важно не путать две разные «учётки». Первая — пользователь информационной базы, от имени которого выполняется код задания и чьи права проверяются при доступе к данным. Вторая — системная учётная запись ОС, под которой работает служба агента сервера 1С (обычно специальная служебная учётная запись). Она влияет на доступ к файловым ресурсам, сетевым папкам и внешним компонентам, но не на права внутри базы.
Типичная ситуация: задание обмена записывает файл в сетевую папку. Внутри базы у пользователя задания полные права, но запись не происходит, потому что у учётной записи службы сервера 1С нет доступа к этой папке. Ошибка выглядит как «нет прав», хотя проблема на уровне операционной системы.
Настройка пользователя для регламентного задания
У объекта метаданных «Регламентное задание» в конфигураторе есть свойство «Имя пользователя». Если оно заполнено, задание всегда выполняется под указанным пользователем независимо от того, кто находится в базе. Если поле пустое, задание выполняется под системной учётной записью без имени — у неё нет ролей, назначенных конкретному пользователю, если только права не выданы явно.
Рекомендуемая практика — создать отдельного служебного пользователя (например, «РоботОбмен»), назначить ему минимально необходимый набор ролей и указать его в свойствах всех регламентных заданий. Тогда поведение предсказуемо, а журнал регистрации чётко показывает, какая операция выполнена роботом.
- 1Создайте в базе отдельного пользователя для фоновых задач и назначьте ему только необходимые роли.
- 2В конфигураторе откройте нужное регламентное задание и укажите этого пользователя в свойстве «Имя пользователя».
- 3Обновите конфигурацию базы данных и дождитесь ближайшего запуска по расписанию.
- 4Откройте консоль заданий и проверьте колонку «Пользователь» у выполненного задания.
- 5Сверьте журнал регистрации: события задания должны быть привязаны к служебной учётной записи.
Как проверить, под кем выполнилось задание
Самый надёжный способ — журнал регистрации. Отфильтруйте события по виду «Фоновое задание» за нужный период: в каждой записи указан пользователь, статус выполнения и текст ошибки, если задание завершилось аварийно.
Второй инструмент — консоль заданий (в типовых конфигурациях на БСП это раздел «Администрирование» → «Обслуживание» → «Регламентные и фоновые задания»). Там видно состояние каждого задания, дату последнего выполнения и пользователя сеанса.
Программно пользователя текущего фонового задания можно получить через ПользователиИнформационнойБазы.ТекущийПользователь() или ИмяПользователя() — это полезно при отладке, чтобы записать в лог фактическое имя.
Как проверить результат
Указан служебный пользователь, задание в статусе «Выполнено»
Пользователь пустой или задание в статусе «Ошибка»
События завершения без текста исключения
Ошибки вида «Нарушение прав доступа» или «Пользователь не найден»
Ожидаемые данные созданы или отправлены
Задание «успешно», но данных нет — вероятно, не хватило прав на запись
Типичные ошибки и их причины
Самая частая ошибка — «Нарушение прав доступа» при выполнении регламентного задания. Она возникает, когда задание работает под пользователем без нужной роли: вручную операция выполняется (у администратора права есть), а по расписанию падает. Лечится назначением ролей служебному пользователю.
Вторая группа проблем — код, завязанный на интерактивные возможности клиента: вызовы Предупреждение(), Вопрос(), работа с ДиалогВыбораФайла. В фоновом сеансе на сервере нет интерфейса, такие вызовы приводят к ошибке. Код, предназначенный для фонового выполнения, должен быть серверным и немодальным.
Третья типичная ситуация — обращение к COM-объектам, веб-сервисам или сетевым ресурсам, доступным только с компьютера пользователя. В клиент-серверной базе задание выполняется на сервере, где этих ресурсов или настроек может не быть.
Особые сценарии и ограничения
Задания, запущенные через внешнее соединение
Если фоновое задание инициируется через COM-соединение или веб-сервис, оно выполняется под пользователем, указанным при установке соединения. Часто это отдельная интеграционная учётная запись — её права тоже нужно контролировать.
Очередь заданий в сервисе (SaaS)
В модели сервиса (1С:Фреш и аналоги) вместо регламентных заданий используется очередь заданий, где пользователь указывается в параметрах каждого задания очереди. Поведение аналогично: пустое имя пользователя — частый источник ошибок доступа.
Отладка фонового задания
Для отладки можно включить в конфигураторе «Отладка» → «Подключение» → автоматическое подключение фоновых заданий. Тогда сеанс задания появится в списке подключаемых предметов отладки, и код можно проходить по шагам под тем же пользователем, под которым задание работает в реальности.
Что важно запомнить
Фоновое задание всегда выполняется под конкретным пользователем: инициатором — при программном запуске, или пользователем из свойств — для регламентных заданий. Создайте служебную учётную запись с минимальными ролями, укажите её в заданиях и проверяйте результат через консоль заданий и журнал регистрации.
Частые вопросы
Почему регламентное задание падает с ошибкой прав, хотя вручную всё работает?
Вручную вы работаете под своей учётной записью, обычно с широкими правами. Регламентное задание выполняется под пользователем из своих свойств, а если поле пустое — под системной записью без назначенных ролей. Назначьте заданию служебного пользователя с нужными ролями.
Как узнать, под каким пользователем выполнилось задание в прошлом?
Откройте журнал регистрации и отфильтруйте события по типу «Фоновое задание» за нужный период. В каждой записи указан пользователь сеанса, статус завершения и текст ошибки при наличии.
Можно ли запустить фоновое задание под другим пользователем программно?
Напрямую метод ФоновыеЗадания.Выполнить() не принимает пользователя — задание наследует текущий сеанс. Для выполнения под другой учётной записью используют регламентное задание с указанным именем пользователя или очередь заданий в БСП, где пользователь задаётся параметром.
Влияет ли учётная запись службы сервера 1С на права внутри базы?
Нет. Учётная запись службы агента сервера определяет доступ к ресурсам операционной системы: файлам, сетевым папкам, внешним компонентам. Права на объекты базы проверяются по пользователю информационной базы, под которым выполняется задание.
Почему в файловой базе регламентные задания перестали выполняться?
В файловом режиме задания выполняются внутри клиентского сеанса. Если все пользователи вышли из программы или закрылся сеанс-исполнитель, выполнение останавливается. Решение — держать постоянно запущенный сеанс под служебной учётной записью или перейти на клиент-серверный вариант.
Какие роли давать служебному пользователю фоновых заданий?
Только те, что реально нужны коду заданий: чтение и запись конкретных объектов, роли на обмен, если используется. Роль «Полные права» упрощает настройку, но создаёт риск — при ошибке или уязвимости в коде задание получает неограниченный доступ ко всей базе.