Как реализовать полноэкранный интерфейс рабочего места кассира (РМК) в 1С:Предприятие 8.3

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

При разработке специализированных решений, таких как рабочее место кассира (РМК) или терминал самообслуживания, часто возникает необходимость полностью скрыть стандартный интерфейс платформы 1С:Предприятие (панели разделов, функции, командный интерфейс) и предоставить пользователю только одну рабочую форму. В этой статье мы подробно разберем, как реализовать «нетленку» в полноэкранном режиме на тонком клиенте (интерфейс «Такси»), настроить автоматический запуск и спроектировать удобный интерфейс. В качестве альтернативы самостоятельной разработке можно использовать готовую конфигурацию рабочего места кассира с поддержкой торгового оборудования.

Выбор объекта и режима основного окна

Для реализации подобной задачи оптимальным вариантом является использование обычной Обработки с Управляемой формой. Использование документа для этих целей нецелесообразно, так как форма РМК — это агрегатор данных, который может порождать множество документов в процессе работы.

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

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


Процедура ПередНачаломРаботыСистемы(Отказ)
    
    // Проверяем, назначен ли пользователю доступ к РМК
    Если РольДоступна("ПользовательРМК") Тогда
        КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.ПолноэкранноеРабочееМесто);
    Иначе
        КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.Обычный);
    КонецЕсли;
    
КонецПроцедуры

Проанализируем этот код: использование метода УстановитьРежимОсновногоОкна позволяет динамически менять поведение интерфейса в зависимости от прав пользователя. Если заходит обычный менеджер, он видит стандартный интерфейс «Такси», если кассир — полноэкранное приложение.

Автоматический запуск рабочей формы

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

Разберем реализацию запуска по шагам:


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

Обратите внимание на последний параметр метода ОткрытьФорму. Установка значения Истина позволяет сделать форму уникальной и предотвращает ее повторное открытие, если это необходимо.

Настройка свойств управляемой формы для РМК

Чтобы форма выглядела монолитно и пользователь не мог случайно ее закрыть или свернуть, нужно правильно настроить ее свойства в Конфигураторе:

  1. Отображать кнопку закрытия: Снимите галочку. Это уберет «крестик» в правом верхнем углу, заставив пользователя выходить из системы только через специальные кнопки (например, «Закрыть смену»).
  2. Изменение размера: Установите значение Неизменять. Это предотвратит появление рамок, за которые можно потянуть окно.
  3. Состояние окна: Установите Максимизированное.
  4. Заголовок: Можно оставить пустым или написать название вашего магазина/РМК.

Для предотвращения закрытия формы через сочетание клавиш Alt+F4, мы можем добавить проверку в событие формы ПередЗакрытием. Выясним причину закрытия: если это попытка закрыть окно системы, можно вызывать диалог подтверждения или требовать пароль администратора.


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

Проектирование интерфейса (Сетки и разделение экрана)

Часто в РМК требуется разделить экран на функциональные зоны: например, левая половина для списка товаров, правая — для итогов чека и кнопок оплаты. В управляемых формах 1С нет прямого аналога «разделителя» (splitter), как в обычных формах, но мы можем достичь того же эффекта с помощью Групп.

Разберем, как создать сетку из 4 четвертей:

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

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

Оптимизация под сенсорное управление и режим киоска

Если ваше РМК будет работать на терминале с тачскрином, рассмотрим дополнительные настройки:

1. Масштабирование элементов. Стандартные кнопки 1С могут быть слишком мелкими для нажатия пальцем. Используйте свойство элементов Высота (установите значение 2 или 3) и Шрифт (увеличьте размер до 12-14 пунктов).

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

3. Фокус ввода. Главная проблема РМК — потеря фокуса в поле ввода штрихкода. Проанализируем ситуацию: после добавления товара или нажатия любой кнопки фокус может уйти. Рекомендуется в конце каждого алгоритма (добавление в корзину, оплата) принудительно возвращать фокус:


&НаКлиенте
Процедура ПослеДобавленияТовара()
    // Логика добавления...
    
    ТекущийЭлемент = Элементы.ПолеВводаШтрихкода;
КонецПроцедуры

Работа с горячими клавишами

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

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

← На главную