При работе с системой 1С:Предприятие, особенно в конфигурациях, использующих Библиотеку Стандартных Подсистем (БСП), таких как 1С:УХ 3.2, вы можете столкнуться с предопределенным системным пользователем, который называется СлужебныйПользовательДляЗапускаРегламентныхЗаданий. Этот пользователь предназначен для выполнения автоматических операций в фоновом режиме, таких как регламентные и фоновые задания. Однако, когда мы пытаемся вручную изменить его права через конфигуратор, а затем обнаруживаем, что все наши изменения сбрасываются, это может вызвать недоумение. Давайте рассмотрим, почему это происходит и как правильно предоставить необходимые права для выполнения регламентных заданий, например, для запуска рассылок.
СлужебныйПользовательДляЗапускаРегламентныхЗаданий — это не обычный пользователь информационной базы, с которым работают конечные пользователи. Это системный предопределенный элемент, созданный для внутренней работы платформы и конфигурации. Его основная задача — служить "исполнителем" для регламентных и фоновых заданий, когда не указан конкретный пользователь. Такой подход обеспечивает стабильность и независимость выполнения системных операций от интерактивной работы пользователей.
Одна из ключевых особенностей этого служебного пользователя заключается в том, что его параметры, включая назначенные ему роли, могут автоматически управляться системой. Если вы попытаетесь вручную добавить или удалить роли этому пользователю через конфигуратор, вы, скорее всего, обнаружите, что эти изменения исчезают на следующий день или после выполнения определенных системных операций. Это происходит потому, что конфигурация или подсистемы (например, БСП) имеют встроенную логику, которая при определенных событиях автоматически восстанавливает предопределенное состояние системных объектов, к которым относится и этот служебный пользователь.
К таким событиям могут относиться:
Таким образом, попытки вручную настроить права этого пользователя обречены на провал, поскольку система будет постоянно возвращать его в исходное состояние, считая ваши изменения некорректными для системного объекта. Подробнее о механизмах работы подсистем можно узнать в справочнике по методам БСП.
Поскольку прямое изменение прав системного пользователя неэффективно и некорректно, нам необходимо рассмотреть другие, более правильные подходы к предоставлению доступа для выполнения регламентных заданий. Основные методы, которые мы можем применить, включают назначение выделенного пользователя для регламентного задания или выполнение кода в привилегированном режиме.
Это рекомендуемый и наиболее безопасный способ. Вместо того чтобы пытаться изменить системного пользователя, мы назначаем конкретного пользователя информационной базы для выполнения нашего регламентного задания. Этот пользователь будет обладать только теми правами, которые необходимы для выполнения конкретной задачи, что значительно повышает безопасность системы.
Этот подход позволяет нам полностью контролировать, какие операции разрешены для конкретного регламентного задания, и изолировать их от системных привилегий, которые могут быть у служебных пользователей.
Этот метод применяется, когда код, выполняющий регламентное задание, находится в общем модуле, и мы хотим, чтобы он выполнялся без проверки прав доступа к некоторым объектам. Использование привилегированного режима означает, что система не будет проверять, есть ли у текущего пользователя (или пользователя, от имени которого запускается задание) права на доступ к объектам, с которыми работает код. Фактически, код выполняется с полными административными правами.
Привилегированный = Истина).Пример (в свойствах общего модуля):
// Для общего модуля "МодульРегламентногоЗадания"
// Свойство "Привилегированный" установлено в Истина
// или в коде:
// УстановитьПривилегированныйРежим(Истина);
После этого, любой код, исполняемый из этого общего модуля, будет выполняться в привилегированном режиме, обходя проверки прав. Если регламентное задание вызывает метод из такого привилегированного модуля, то для выполнения рассылок уже не будут требоваться специальные права у пользователя, от имени которого запускается регламентное задание (будь то СлужебныйПользовательДляЗапускаРегламентныхЗаданий или любой другой).
Использование привилегированного режима снижает безопасность системы. Мы рекомендуем применять его только в тех случаях, когда другие методы (например, назначение выделенного пользователя) не применимы или слишком сложны в реализации. Всегда старайтесь минимизировать использование привилегированного режима и убедитесь, что код в таком модуле тщательно проверен и не содержит потенциальных уязвимостей, которые могут быть использованы для обхода ограничений безопасности.
Давайте пошагово разберем, как найти и настроить нужное регламентное задание в вашей системе 1С:Управление Холдингом 3.2, чтобы применить один из вышеописанных методов.
В режиме предприятия откроем раздел "Администрирование". Далее нам потребуется найти пункт "Обслуживание" или "Поддержка и обслуживание" (точные названия могут незначительно отличаться в разных версиях конфигурации). В этом разделе мы увидим ссылку на "Регламентные и фоновые задания". Откроем ее.
Перед нами откроется список всех зарегистрированных в системе регламентных заданий. Этот список может быть довольно большим. Используйте стандартные возможности поиска или фильтрации (например, по имени задания), чтобы найти нужное. В нашем случае, если речь идет о рассылках, мы можем искать задания, связанные с отправкой отчетов или уведомлений. Часто такие задания имеют в названии слова "Рассылка", "Отправка", "Уведомление" или "Email".
Обратите внимание на колонку "Имя" (техническое имя задания) и "Представление" (понятное пользователю название). Найдя нужное задание, например, "Рассылка отчетов по расписанию", дважды щелкните по нему, чтобы открыть его свойства.
В открывшейся форме свойств регламентного задания мы увидим различные параметры: расписание, состояние, дата последнего запуска и так далее. Нам нужен параметр "Имя пользователя". По умолчанию, если пользователь не указан, задание может выполняться от имени системного пользователя, такого как СлужебныйПользовательДляЗапускаРегламентныхЗаданий, или с полными правами в файловом режиме.
Нажмите на кнопку выбора (обычно это кнопка с тремя точками или стрелкой вниз) рядом с полем "Имя пользователя". Откроется список пользователей информационной базы. Выберите пользователя, которого мы специально создали и настроили для выполнения этого задания (например, "ПользовательДляРассылок").
Важно: убедитесь, что выбранный пользователь существует и имеет все необходимые роли для доступа к данным, с которыми работает регламентное задание (используйте средства на управление правами доступа и просмотр ролей — в этом поможет анализ прав доступа и ограничений RLS).
После выбора пользователя не забудьте нажать кнопку "Записать и закрыть" или "ОК", чтобы сохранить внесенные изменения в настройках регламентного задания.
Таким образом, мы успешно назначили конкретного пользователя для выполнения регламентного задания. С этого момента, при следующем запуске по расписанию, задание будет выполняться от имени выбранного пользователя, используя его набор прав доступа к данным. Это гарантирует стабильное выполнение заданий без конфликтов с системной логикой, которая управляет предопределенным служебным пользователем.
В случае, если вы выбрали метод с привилегированным режимом, никаких изменений в настройках регламентного задания в пользовательском режиме (поле "Имя пользователя") производить не требуется, так как права будут обеспечиваться на уровне кода.