Многие специалисты сталкиваются с неприятной ситуацией в современных конфигурациях 1С (построенных на базе БСП): регламентные задания перестают работать, если они запускаются от имени пользователя СлужебныйПользовательДляЗапускаРегламентныхЗаданий. Если вручную включить ему аутентификацию, задание может отработать один раз, после чего система снова сбрасывает настройки аутентификации, и процесс останавливается с ошибкой доступа. Удаление и ручное пересоздание пользователя не помогают — все возвращается к стандартному виду. Давайте разберем по шагам, почему это происходит, и рассмотрим проверенные способы решения этой проблемы.
В современных конфигурациях за состояние служебных пользователей отвечает Библиотека стандартных подсистем (БСП). Платформа и типовые алгоритмы работают следующим образом:
Проанализируем доступные варианты решения, начиная с программного вмешательства и заканчивая альтернативными настройками системы.
Чтобы БСП при автоматическом создании или обновлении служебного пользователя сразу устанавливала ему стандартную аутентификацию, мы можем вмешаться в функцию создания с помощью расширения конфигурации.
Рассмотрим, как изменить логику общего модуля РегламентныеЗаданияСервер в функции СлужебныйПользовательИБ. Добавим установку свойства АутентификацияСтандартная:
&Вместо("СлужебныйПользовательИБ")
Функция Расш1_СлужебныйПользовательИБ(РегламентноеЗадание)
// Получаем базовые свойства пользователя
Свойства = Пользователи.НовоеОписаниеПользователяИБ(, Истина);
Свойства.Имя = ИмяСлужебногоПользователя();
// ВСТАВКА: Принудительно включаем стандартную аутентификацию
Свойства.АутентификацияСтандартная = Истина;
// Дальнейшая логика создания/обновления (примерно)
СсылкаНового = Справочники.Пользователи.ПолучитьСсылку(
Новый УникальныйИдентификатор("91f28855-c379-11ef-8882-b06ebfbf08c7"));
// ... остальной типовой код или вызов ПродолжитьВызов(РегламентноеЗадание)
// в зависимости от реализации вашей версии БСП
КонецФункции
Важно: Приведенный код является примерным ориентиром. В расширении используйте аннотацию &Вместо или &ИзменениеИКонтроль для аккуратного внедрения строки Свойства.АутентификацияСтандартная = Истина; в нужное место типовой функции.
Если в консоли регламентных заданий (или в конфигураторе) полностью очистить поле «Пользователь» для проблемного задания, платформа будет выполнять его от имени виртуального системного пользователя (DefUser). Этот виртуальный пользователь автоматически получает права, объединяющие основные роли конфигурации (а если они не заданы — полные неограниченные права). Это позволяет обойти проблему сброса аутентификации и ошибок доступа на уровне метаданных.
Вместо того чтобы бороться с агрессивным поведением БСП в отношении системных учеток, создадим обычного пользователя:
РоботРегЗаданий).Поскольку этот пользователь не идентифицируется системой как служебный, БСП не будет пытаться сбрасывать его настройки.
Если инфраструктура позволяет, вместо использования стандартной аутентификации 1С по логину и паролю, для служебного пользователя можно включить галочку «Аутентификация ОС». Там необходимо указать пользователя Windows или Linux, под учетной записью которого запущена служба сервера 1С:Предприятия. Это абсолютно легитимный и безопасный способ авторизации фоновых процессов, который БСП, как правило, не сбрасывает.
Если вы работаете с файловой базой данных, проблема может крыться не в настройках профиля, а в зависшем планировщике. Ошибка доступа часто возникает, если фоновый процесс заблокировал каталог планировщика. В этом случае выполните следующие действия:
1Cv8JobScheduler.Резюме: Подобное агрессивное поведение платформы по сбросу прав и аутентификации иногда признается разработчиками 1С как ошибка конкретного релиза конфигурации. Поэтому, помимо предложенных технических решений, рекомендуем регулярно проверять реестр ошибок и обновлять конфигурацию — возможно, в новых версиях БСП эта логика контроля уже скорректирована.