При организации работы в распределенной сети филиалов, торговых точек или кредитных пунктов часто возникает задача упростить вход пользователей в информационную базу. Нередко один и тот же сотрудник может работать в разных подразделениях, либо на одной точке сменяются несколько человек. При этом администраторы и разработчики сталкиваются с желанием кастомизировать стандартное окно входа 1С: добавить туда выбор филиала или отфильтровать огромный список пользователей, оставив только сотрудников конкретного кабинета или пункта. Разберем, как устроена аутентификация в платформе 1С:Предприятие, какие существуют технические ограничения и как грамотно решить эту задачу на практике.
Проанализируем, почему нельзя просто «дорисовать» поле выбора подразделения в стандартное окно входа. Диалоговое окно аутентификации формируется ядром платформы 1С до загрузки метаданных конфигурации, запуска серверного контекста и инициализации модулей. Средствами встроенного языка 1С невозможно изменить макет этого системного окна, добавить в него произвольные элементы управления или динамически отфильтровать список пользователей по какому-либо признаку.
Платформа управляет отображением пользователей в системном списке исключительно через булево свойство учетной записи ПоказыватьВСпискеВыбора. Если в базе заведено более сотни пользователей, стандартный выпадающий список становится неудобным и перегруженным. Рассмотрим эффективные способы обхода этого ограничения.
Если на рабочем месте (компьютере в филиале) требуется предоставить доступ только определенному кругу сотрудников, самым быстрым административным решением является настройка индивидуальных ярлыков запуска с передачей параметров командной строки.
Разберем, как это работает по шагам:
Синтаксис вызова через командную строку:
"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 "Точка_ТЦ_Север"
В коде конфигурации переданную строку можно прочитать через глобальное свойство ПараметрЗапуска в модуле управляемого приложения.
Создание нескольких учетных записей для одного физического лица (например, «Иванов_Пункт1» и «Иванов_Пункт2») часто приводит к путанице в аналитике и усложняет администрирование. Правильный архитектурный подход заключается в том, чтобы закрепить за сотрудником одну учетную запись, а выбор подразделения выполнять интерактивно при начале сеанса.
Разберем логику реализации:
ПриНачалеРаботыСистемы проверяется, определено ли текущее подразделение. Если передан ПараметрЗапуска, подразделение устанавливается автоматически. Если нет — открывается модальная или блокирующая интерфейс форма выбора подразделения из разрешенного списка.ПараметрыСеанса.ТекущееПодразделение.Посмотрим на пример кода в модуле управляемого приложения:
Процедура ПриНачалеРаботыСистемы()
Если Не ЗначениеЗаполнено(ПараметрыСеанса.ТекущееПодразделение) Тогда
// Если передан ключ /C через ярлык, инициализируем подразделение
Если ЗначениеЗаполнено(ПараметрЗапуска) Тогда
УстановитьПодразделениеПоКоду(ПараметрЗапуска);
Иначе
// Открываем интерактивную форму выбора подразделения
ОткрытьФорму("Обработка.ВыборПодразделенияПриВходе.Форма", , , Истина);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
При таком подходе пользователь имеет доступ только к документам выбранного филиала в рамках текущей сессии, а вся история работы ведется от имени одного реального сотрудника.
В сценариях с большим потоком сотрудников на точках (кассовые зоны, кредитные стойки) оптимально использовать модель общего терминала. Вход в Windows и 1С выполняется под системной учетной записью рабочего места (например, «Кредитный_Пункт_3»), а идентификация конкретного сотрудника происходит внутри сеанса без перезапуска программы.
Внутри открытого интерфейса сотрудник авторизуется персональным PIN-кодом, выбором из отфильтрованного списка сотрудников точки или сканированием персонального бейджа со штрихкодом. Это исключает необходимость многократной перезагрузки платформы 1С при пересменках.
Если в силу бизнес-процессов разделение учетных записей по филиалам неизбежно, а доменная аутентификация отсутствует, рекомендуется применить структурированное именование учетных записей:
Отдел1_ИвановИИ, Отдел2_ИвановИИ. В этом случае в выпадающем списке пользователи будут автоматически сгруппированы по алфавиту в рамках своих подразделений.ИвановИИ (Отдел 1), ИвановИИ (Отдел 2). Такой вариант позволяет быстро находить сотрудника по первым буквам фамилии.Подведем итог: изменить встроенное окно логина платформы 1С невозможно, однако комбинирование параметров запуска, ярлыков на рабочих местах и параметров сеанса с динамическим RLS позволяет полностью решить задачу разделения прав и удобства входа пользователей.