В процессе администрирования и разработки в системе 1С:Предприятие часто возникает необходимость запуска регламентных заданий от имени конкретного пользователя. Это особенно актуально для задач обмена данными, где требуются определенные права доступа или специфические настройки окружения. Рассмотрим подробно, как организовать такую работу в клиент-серверном варианте, опираясь на опыт настройки конфигураций «Зарплата и Управление Персоналом 2.5» и «Бухгалтерия предприятия 2.0». Для контроля результата таких процедур можно использовать автоматическую сверку проводок между базами для поиска расхождений.
Для начала разберем важный архитектурный момент, который часто вводит в заблуждение начинающих разработчиков. Проанализируем структуру регламентных заданий в конфигураторе. Если мы откроем дерево конфигурации и перейдем в ветку Общие — Регламентные задания, мы увидим список объектов метаданных. У этих объектов можно настроить расписание по умолчанию и использование, но там нет поля для выбора пользователя.
Выясним причину: в конфигураторе определяется только «шаблон» задания. Конкретный «экземпляр» задания с привязкой к пользователю создается в пользовательском режиме (в базе данных). Именно поэтому попытки найти настройку пользователя в конфигураторе обречены на провал. Настройка должна производиться через внешние или встроенные обработки, такие как «Консоль заданий». Для этой задачи подойдёт консоль для управления и настройки регламентных заданий.
Часто при попытке изменить пользователя в стандартной консоли заданий программа выдает ошибку: «Поле объекта недоступно для записи». Это происходит, когда мы пытаемся напрямую отредактировать предопределенное регламентное задание.
Рассмотрим алгоритм действий для обхода этого ограничения:
Использование, чтобы избежать дублирования функций.Такой подход позволяет гибко управлять параметрами запуска, не вступая в конфликт с жестко заданными системными объектами.
Разберем ситуацию, когда регламентное задание отвечает за автоматический обмен данными. В классических конфигурациях (ЗУП 2.5, БП 2.0) механизмы обмена могут иметь собственные настройки. Посмотрим на этот процесс подробнее:
Зачастую пользователь для обмена указывается не в общем списке регламентных заданий, а непосредственно в настройках узла плана обмена. В интерфейсе настройки обмена есть пункт «Настройка выполнения обмена», где указывается расписание и конкретная учетная запись. В этом случае система сама программно инициализирует фоновое задание от имени указанного человека. Проанализируем код инициализации, который может выглядеть следующим образом в модулях обработки обмена:
// Пример программного создания задания с привязкой пользователя
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание("ОтработкаОбменаДанными");
Задание.Наименование = "Автообмен с Бухгалтерией";
Задание.Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени("Robot_Exchange");
Задание.Использование = Истина;
Задание.Записать();
Важно помнить, что в клиент-серверном варианте регламентные задания всегда выполняются на стороне сервера 1С. Это накладывает специфические требования к технической настройке. Разберем ситуацию, когда задание использует COM-соединение для подключения к другой базе.
Если для обмена требуется библиотека comcntr.dll, ее необходимо зарегистрировать именно на сервере приложений 1С. Если сервер 64-разрядный, а вы пытаетесь использовать 32-разрядные компоненты, задание может завершиться с ошибкой. Посмотрим на решение:
regsvr32.Помните, что пользователь, под которым запущено регламентное задание, не должен постоянно «висеть» в системе. Сеанс создается автоматически в момент запуска задания (тип соединения в консоли кластера — «Фоновое задание») и завершается сразу после выполнения кода. Лицензия при этом потребляется только на время работы задания.
Выясним причину, по которой задание может не отрабатывать под новым пользователем. Часто это связано с нехваткой прав. Чтобы понять, где именно происходит сбой, воспользуемся механизмом отладки:
Для отладки фоновых заданий в конфигураторе необходимо зайти в меню Отладка — Подключения и нажать кнопку Автоматическое подключение. В открывшемся окне установим флажок Фоновые задания. Теперь, когда задание запустится под выбранным пользователем, конфигуратор автоматически «поймает» его на точках останова. Это позволит нам проанализировать значения переменных и права доступа в контексте конкретной сессии ПараметрыСеанса.ТекущийПользователь.
Чтобы регламентное задание успешно выполнялось, к учетной записи в 1С предъявляются следующие требования:
ПолныеПрава или набор ролей, достаточный для выполнения всех операций в коде задания (например, чтение и запись в планы обмена, работа с документами).Таким образом, правильная организация работы регламентных заданий под заданным пользователем требует комплексного подхода: от использования консоли заданий для создания экземпляров до тонкой настройки серверных компонент и прав доступа. Проанализировав все эти аспекты, вы сможете настроить стабильную и безопасную работу автоматических процессов в вашей системе. В рамках общего обслуживания системы также можно настроить автоматическое архивирование и обновление нескольких баз 1С в тихом режиме.