При автоматизации рабочих мест кассиров (РМК) на базе «1С:Предприятие» перед разработчиками и системными администраторами часто встает задача максимального ускорения процесса авторизации. Каждый лишний клик мышкой или дополнительное нажатие клавиш на клавиатуре увеличивает время обслуживания покупателя на кассе. Типичный пример — стандартное окно авторизации 1С, в котором кассиру приходится совершать лишние действия, чтобы перенести фокус ввода на нужное поле и нажать кнопку «ОК».
В этой статье мы подробно разберем, почему стандартными средствами конфигуратора невозможно изменить встроенное окно авторизации, и рассмотрим эффективные альтернативные методы, которые позволяют убрать лишние шаги и оптимизировать интерфейс под клавиатурный ввод или работу со сканером штрихкодов.
Для начала проанализируем ситуацию с технической стороны платформы. Окно выбора пользователя и ввода пароля, которое появляется при старте «тонкого» или «толстого» клиента — это нативный ресурс самой платформы (скомпилированный в исполняемых файлах 1cv8.exe или 1cv8c.exe).
На этом этапе запуска система еще не открыла базу данных и не начала исполнять код вашей конфигурации. Следовательно, изнутри встроенного языка 1С физически невозможно:
Тем не менее, решить задачу минимизации кликов можно с помощью обходных архитектурных путей, которые мы подробно разберем ниже.
Это наиболее надежный и гибкий метод, который дает разработчику 100% контроля над интерфейсом авторизации кассира. Суть метода заключается в отказе от стандартного окна авторизации 1С в пользу собственной формы ввода пароля.
Рассмотрим по шагам реализацию этого механизма:
Шаг 1. Настройка автоматического входа
В базе данных создается специальный пользователь (например, с именем ВходРМК) без пароля. Для этого пользователя настраиваются минимальные права доступа — только на запуск системы и открытие одной специальной формы. В ярлыке запуска 1С на рабочем столе кассира прописываются параметры командной строки для автоматического входа под этой учетной записью:
"C:\Program Files\1cv8\common\1estart.exe" ENTERPRISE /F "C:\Bases\Trade" /N "ВходРМК"
При таком запуске стандартное окно авторизации вообще не появляется — программа сразу загружается под техническим пользователем за доли секунды.
Шаг 2. Перехват события запуска в конфигурации
В модуле управляемого приложения в процедуре ПриНачалеРаботыСистемы прописываем условие: если программа запущена под пользователем ВходРМК, стандартный интерфейс не открывается, а пользователю мгновенно выводится наша кастомная форма авторизации.
Процедура ПриНачалеРаботыСистемы()
ТекущийПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
Если ТекущийПользовательИБ.Имя = "ВходРМК" Тогда
// Открываем кастомную форму авторизации кассира
ОткрытьФорму("ОбщаяФорма.ФормаАвторизацииКассира");
// Отменяем стандартное открытие начальной страницы для этого сеанса
РежимИспользованияВ Ссылке = АльтернативныйРежим;
КонецЕсли;
КонецПроцедуры
Шаг 3. Создание и настройка кастомной формы
В конфигураторе создаем общую форму ФормаАвторизацииКассира. В этой форме мы имеем полную свободу действий:
Истина. Фокус ввода всегда будет находиться в нем при запуске.ПриИзменении пишем код авторизации реального сотрудника.
&НаКлиенте
Процедура КодАвторизацииПриИзменении(Элемент)
// Проверяем введенный код или считанный штрихкод на сервере
ИмяПользователя = ПолучитьПользователяПоКодуНаСервере(КодАвторизации);
Если ЗначениеЗаполнено(ИмяПользователя) Тогда
// Здесь мы можем либо переключить интерфейс текущей сессии под кассира,
// либо завершить эту сессию и запустить новую под реальным пользователем 1С:
ПараметрыЗапуска = СтрШаблон("/N ""%1"" /P ""%2""", ИмяПользователя, ПарольПользователя);
ЗапуститьПриложение("1cv8c.exe ENTERPRISE /F ""C:\Bases\Trade"" " + ПараметрыЗапуска);
ЗавершитьРаботуСистемы(Ложь);
Иначе
ПоказатьПредупреждение(, "Неверный код сотрудника! Повторите попытку.");
КодАвторизации = "";
КонецЕсли;
КонецПроцедуры
Если кассовые компьютеры находятся в домене организации, идеальным решением будет использование штатной авторизации операционной системы (Windows Authentication). При этом подходе стандартное окно 1С не показывается вовсе.
Разберем, как это настроить:
DOMAIN\Username.Если конфигурация находится на замке (на поддержке) и вносить изменения в код нельзя, то для скрытия кнопок нативного окна и передачи фокуса можно использовать скрипты автоматизации на уровне операционной системы. Популярным инструментом для этого является утилита AutoHotkey (AHK).
Проанализируем пример скрипта, который в фоновом режиме отслеживает появление окна авторизации 1С, скрывает ненужные элементы и передает фокус в поле ввода:
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
Loop
{
; Ожидаем появления окна авторизации 1С:Предприятия
WinWait, Авторизация доступа, , 10
if (ErrorLevel = 0)
{
; Скрываем кнопку "Отмена" (обычно Button2)
Control, Hide, , Button2, Авторизация доступа
; Переводим фокус на поле ввода пароля (обычно Edit1 или Edit2 в зависимости от версии платформы)
ControlFocus, Edit2, Авторизация доступа
}
Sleep, 500 ; Пауза цикла для снижения нагрузки на процессор
}
Этот скрипт можно скомпилировать в легковесный исполняемый .exe файл и поместить в автозагрузку Windows на кассовом терминале.
Выясним, какие инструменты предлагает сама фирма 1С в актуальных версиях платформы. Начиная с версии 8.3.26, разработчики существенно модернизировали механизмы аутентификации:
Используя предложенные методики, вы сможете полностью исключить лишние нажатия клавиш на РМК, повысить скорость работы персонала и защитить систему от ошибочных действий пользователей при входе в программу.