При разработке специализированных решений, таких как рабочее место кассира (РМК) или терминал самообслуживания, часто возникает необходимость полностью скрыть стандартный интерфейс платформы 1С:Предприятие (панели разделов, функции, командный интерфейс) и предоставить пользователю только одну рабочую форму. В этой статье мы подробно разберем, как реализовать «нетленку» в полноэкранном режиме на тонком клиенте (интерфейс «Такси»), настроить автоматический запуск и спроектировать удобный интерфейс. В качестве альтернативы самостоятельной разработке можно использовать готовую конфигурацию рабочего места кассира с поддержкой торгового оборудования.
Для реализации подобной задачи оптимальным вариантом является использование обычной Обработки с Управляемой формой. Использование документа для этих целей нецелесообразно, так как форма РМК — это агрегатор данных, который может порождать множество документов в процессе работы.
Первым делом нам необходимо разобраться с тем, как заставить платформу работать в полноэкранном режиме. Начиная с версии платформы 8.3.9, появились новые режимы основного окна клиентского приложения. Для решения нашей задачи идеально подходит режим ПолноэкранноеРабочееМесто. В этом режиме скрываются все панели (меню, функции, оповещения), и форма занимает все доступное пространство экрана.
Рассмотрим, как программно установить этот режим при запуске системы. Нам потребуется обработчик события ПередНачаломРаботыСистемы в модуле управляемого приложения.
Процедура ПередНачаломРаботыСистемы(Отказ)
// Проверяем, назначен ли пользователю доступ к РМК
Если РольДоступна("ПользовательРМК") Тогда
КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.ПолноэкранноеРабочееМесто);
Иначе
КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.Обычный);
КонецЕсли;
КонецПроцедуры
Проанализируем этот код: использование метода УстановитьРежимОсновногоОкна позволяет динамически менять поведение интерфейса в зависимости от прав пользователя. Если заходит обычный менеджер, он видит стандартный интерфейс «Такси», если кассир — полноэкранное приложение.
Просто развернуть окно во весь экран недостаточно — нужно сразу показать пользователю нужную форму, чтобы он не видел пустой рабочий стол платформы. Для этого используем процедуру ПриНачалеРаботыСистемы в том же модуле управляемого приложения.
Разберем реализацию запуска по шагам:
Процедура ПриНачалеРаботыСистемы()
// Выполняем типовые проверки (даты запрета, обновления и т.д.)
// ОбщийМодуль.ВыполнитьРегламентныеДействияПриЗапуске();
Если РольДоступна("ПользовательРМК") Тогда
// Открываем форму нашей обработки
ПараметрыФормы = Новый Структура;
ОткрытьФорму("Обработка.РМК_Фронтенд.Форма.Форма", ПараметрыФормы, , Истина);
КонецЕсли;
КонецПроцедуры
Обратите внимание на последний параметр метода ОткрытьФорму. Установка значения Истина позволяет сделать форму уникальной и предотвращает ее повторное открытие, если это необходимо.
Чтобы форма выглядела монолитно и пользователь не мог случайно ее закрыть или свернуть, нужно правильно настроить ее свойства в Конфигураторе:
Неизменять. Это предотвратит появление рамок, за которые можно потянуть окно.Максимизированное.Для предотвращения закрытия формы через сочетание клавиш Alt+F4, мы можем добавить проверку в событие формы ПередЗакрытием. Выясним причину закрытия: если это попытка закрыть окно системы, можно вызывать диалог подтверждения или требовать пароль администратора.
&НаКлиенте
Процедура ПередЗакрытием(Отказ завершениеРаботы, ТекстУточнения, СтандартнаяОбработка)
Если завершениеРаботы Тогда
// Здесь можно добавить проверку на незакрытый чек
Возврат;
КонецЕсли;
Если НЕ РазрешеноЗакрытиеФормы Тогда
Отказ = Истина;
Сообщить("Используйте кнопку 'Выход' для завершения работы!");
КонецЕсли;
КонецПроцедуры
Часто в РМК требуется разделить экран на функциональные зоны: например, левая половина для списка товаров, правая — для итогов чека и кнопок оплаты. В управляемых формах 1С нет прямого аналога «разделителя» (splitter), как в обычных формах, но мы можем достичь того же эффекта с помощью Групп.
Разберем, как создать сетку из 4 четвертей:
Группа - обычная группа и направлением Горизонтальное.РастягиватьПоГоризонтали и РастягиватьПоВертикали в значение Да.Чтобы части экрана были действительно независимыми, можно использовать механизм Вложенных форм. Для этого в управляемую форму добавляется элемент типа Поле формы с видом Поле управляемой формы. Это позволяет динамически подгружать разные формы в разные части экрана, что крайне удобно для модульного дизайна РМК.
Если ваше РМК будет работать на терминале с тачскрином, рассмотрим дополнительные настройки:
1. Масштабирование элементов. Стандартные кнопки 1С могут быть слишком мелкими для нажатия пальцем. Используйте свойство элементов Высота (установите значение 2 или 3) и Шрифт (увеличьте размер до 12-14 пунктов).
2. Режим киоска. Если нужно полностью исключить доступ пользователя к операционной системе, можно использовать параметр запуска /Kiosk. В этом режиме приложение запускается без рамок окна и системного меню Windows. Это реализуется через настройку ярлыка запуска 1С или в параметрах запуска в конфигураторе. При необходимости оснащения кассы экраном для клиента можно применить решение для вывода информации покупателю на второй монитор или планшет.
3. Фокус ввода. Главная проблема РМК — потеря фокуса в поле ввода штрихкода. Проанализируем ситуацию: после добавления товара или нажатия любой кнопки фокус может уйти. Рекомендуется в конце каждого алгоритма (добавление в корзину, оплата) принудительно возвращать фокус:
&НаКлиенте
Процедура ПослеДобавленияТовара()
// Логика добавления...
ТекущийЭлемент = Элементы.ПолеВводаШтрихкода;
КонецПроцедуры
В полноэкранном режиме у нас нет меню, поэтому взаимодействие часто строится на горячих клавишах. Для каждой кнопки на форме (например, «Расчет», «Поиск», «Отмена») обязательно настройте свойство СочетаниеКлавиш. Например, F10 для перехода к оплате. Это позволит кассиру работать быстро, не используя мышь.
Таким образом, комбинируя программную установку режима ПолноэкранноеРабочееМесто, автоматический запуск формы при старте системы и грамотную верстку через группы управляемой формы, мы получаем полноценное, защищенное от вмешательства пользователя рабочее место кассира на современной платформе 1С.