Как изменить стандартное окно авторизации 1С и настроить выбор подразделения при входе

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

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

Ограничения стандартного окна аутентификации платформы

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

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

Вариант 1. Использование ярлыков и параметров командной строки

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

Разберем, как это работает по шагам:

  1. В свойствах пользователей информационной базы отключаем флаг Показывать в списке выбора. Это предотвратит отображение общего списка из сотен учетных записей в диалоговом окне.
  2. На рабочем столе конкретного компьютера создаем ярлыки для тех сотрудников, которые фактически работают на данной точке.
  3. В свойствах ярлыка в поле «Объект» указываем путь к исполняемому файлу платформы и параметры подключения к базе с ключами авторизации:

Синтаксис вызова через командную строку:


"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /IBConnectionString "Srvr=Server1C;Ref=BaseName;" /N "ИвановИИ"

Параметр /N задает имя пользователя. Если требуется полностью автоматизировать вход на выделенном ПК, можно дополнительно передать пароль через ключ /P:


"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /IBConnectionString "Srvr=Server1C;Ref=BaseName;" /N "ИвановИИ" /P "СекретныйПароль"

Кроме того, через ключ /C можно передать в сеанс произвольную строку (параметр запуска). Например, код или наименование подразделения:


"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /IBConnectionString "Srvr=Server1C;Ref=BaseName;" /N "ИвановИИ" /C "Точка_ТЦ_Север"

В коде конфигурации переданную строку можно прочитать через глобальное свойство ПараметрЗапуска в модуле управляемого приложения.

Вариант 2. Единая учетная запись и выбор рабочего контекста при старте

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

Разберем логику реализации:

  1. Пользователь проходит стандартную авторизацию под своим единственным логином.
  2. В процедуре ПриНачалеРаботыСистемы проверяется, определено ли текущее подразделение. Если передан ПараметрЗапуска, подразделение устанавливается автоматически. Если нет — открывается модальная или блокирующая интерфейс форма выбора подразделения из разрешенного списка.
  3. Выбранное значение сохраняется в объект ПараметрыСеанса.ТекущееПодразделение.
  4. Механизм ограничения доступа на уровне записей (RLS) настраивается с фильтрацией данных по текущему подразделению из параметров сеанса.

Посмотрим на пример кода в модуле управляемого приложения:


Процедура ПриНачалеРаботыСистемы()
    
    Если Не ЗначениеЗаполнено(ПараметрыСеанса.ТекущееПодразделение) Тогда
        // Если передан ключ /C через ярлык, инициализируем подразделение
        Если ЗначениеЗаполнено(ПараметрЗапуска) Тогда
            УстановитьПодразделениеПоКоду(ПараметрЗапуска);
        Иначе
            // Открываем интерактивную форму выбора подразделения
            ОткрытьФорму("Обработка.ВыборПодразделенияПриВходе.Форма", , , Истина);
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

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

Вариант 3. Модель рабочего места (РМК) со сменяемыми сотрудниками

В сценариях с большим потоком сотрудников на точках (кассовые зоны, кредитные стойки) оптимально использовать модель общего терминала. Вход в Windows и 1С выполняется под системной учетной записью рабочего места (например, «Кредитный_Пункт_3»), а идентификация конкретного сотрудника происходит внутри сеанса без перезапуска программы.

Внутри открытого интерфейса сотрудник авторизуется персональным PIN-кодом, выбором из отфильтрованного списка сотрудников точки или сканированием персонального бейджа со штрихкодом. Это исключает необходимость многократной перезагрузки платформы 1С при пересменках.

Вариант 4. Стандартизация именования учетных записей

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

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

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

← На главную