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

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

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

Основной механизм: событие ПриНачалеРаботыСистемы

Все действия, которые должны происходить при запуске клиентского приложения, описываются в событии ПриНачалеРаботыСистемы(). Данный обработчик размещается в модуле управляемого приложения (или модуле обычного приложения для классического интерфейса).

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


Процедура ПриНачалеРаботыСистемы()
    
    // Получаем авторизованного пользователя
    ТекущийПользователь ИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
    
    Если ТекущийПользовательИБ.Имя = "ИвановИИ" Тогда
        ОткрытьФорму("Обработка.МояОбработка.Форма.Форма");
    КонецЕсли;

КонецПроцедуры

Почему не стоит жестко прописывать имя пользователя в коде

Прямое указание строки с именем пользователя (например, "ИвановИИ") непосредственно в исходном коде — плохая практика разработки. Если пользователь сменит логин, уволится или аналогичные функциональные обязанности перейдут к другому сотруднику, придется вносить изменения в конфигуратор и снова обновлять базу данных.

Проанализируем более гибкие и правильные подходы к ограничению условий выполнения:

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

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


Процедура ПриНачалеРаботыСистемы()
    
    // Пример проверки роли или специального флага
    Если РольДоступна("ЗапускСпециальнойОбработки") Тогда
        ОткрытьФорму("Обработка.МояОбработка.Форма.Форма");
    КонецЕсли;

КонецПроцедуры

Технические особенности и ограничения платформы

При реализации автозапуска обработок важно брать во внимание технический контекст платформы 1С:

  1. Клиентский контекст выполнения. Процедура ПриНачалеРаботыСистемы() выполняется строго на клиенте. Прямые обращения к менеджерам справочников или серверным объектам (например, ВнешниеОбработки.Создать()) напрямую в ней недоступны. Для выполнения серверных операций требуется вызывать функции из серверных общих модулей.
  2. Интерактивный запуск. Событие срабатывает только при интерактивном входе через тонкий, толстый или веб-клиент. При запуске регламентных заданий, фоновых процессов, OLE/COM-соединений, а также вызовах через HTTP/SOAP веб-сервисы данная процедура не вызывается.
  3. Асинхронность в управляемом приложении. Вызов формы осуществляется методом ОткрытьФорму(). Использование модальных окон при старте системы запрещено, если в конфигурации установлена режим использования модальности Не использовать.

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

Если нет возможности или необходимости менять код конфигурации, разберем варианты решения задачи средствами платформы и БСП:

← На главную