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

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

Анализ проблемы и особенности работы сеанса

Рассмотрим распространенную ситуацию: создано новое регламентное задание, оно успешно запускается по расписанию, но выполняемый код отрабатывает под незаполненным или служебным пользователем (в утилите администрирования кластера и журнале регистрации такой сеанс часто отображается как DefUser). Если внутри бизнес-логики происходит обращение к текущему пользователю или проверяются его персональные настройки, программа выдает ошибку или не может определить автора созданных записей.

Выясним причину такого поведения платформы. Если у объекта РегламентноеЗадание не заполнено свойство ИмяПользователя, система инициализирует фоновый сеанс в контексте прав по умолчанию. При этом функция ПользователиИнформационнойБазы.ТекущийПользователь() возвращает значение Неопределено. Чтобы алгоритмы обработки отрабатывали корректно, необходимо явно назначить конкретную учетную запись для выполнения задачи.

Способ 1. Настройка пользователя программно через код 1С

Разберем по шагам, как задать пользователя для регламентного задания из кода. Для этого используется свойство объекта РегламентноеЗадание.ИмяПользователя, имеющее тип Строка.

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


// Получаем регламентное задание по имени метаданных
Задание = РегламентныеЗадания.НайтиПоНаименованию("МоеРегламентноеЗадание");

Если Задание <> Неопределено Тогда
    // Указываем имя пользователя информационной базы
    Задание.ИмяПользователя = "Администратор";
    
    // Сохраняем изменения в системе
    Задание.Записать();
КонецЕсли;

Проанализируем важные нюансы при программной установке пользователя:

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

Способ 2. Использование консоли заданий и типовых подсистем

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

  1. Типовые конфигурации (БСП): В конфигурациях, разработанных на базе Библиотеки Стандартных Подсистем, встроен удобный интерфейс. Достаточно перейти в раздел Администрирование -> Обслуживание -> Регламентные и фоновые задания, открыть нужную задачу и выбрать пользователя в соответствующем поле.
  2. Внешняя консоль заданий: В самописных решениях можно использовать внешнюю обработку «Консоль регламентных заданий» для управляемых форм. В окне редактирования свойств задания доступно поле для указания пользователя.

Дополнительные технические особенности

Разберем ограничения и правила, которые важно учитывать при работе фоновых процессов:

  1. Серверный неинтерактивный контекст: Код регламентного задания исполняется строго на сервере. В вызываемых процедурах запрещено использовать интерактивные команды (например, Предупреждение(), открытие форм или модальные диалоги), иначе задание завершится с ошибкой.
  2. Различия режимов базы: В клиент-серверном режиме задания запускаются автоматически менеджером кластера серверов. В файловом режиме регламентные задачи исполняются только тогда, когда запущен хотя бы один активный клиентский сеанс 1С.
  3. Авторство объектов: Если код задания создает или меняет элементы справочников, документы или записи регистров, в качестве автора или ответственного платформа запишет пользователя, от имени которого запущено регламентное задание.
← На главную