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

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

Создание рабочего места кассира (РМК) или сложного мастера настройки на 4–5 шагов — это задача, требующая не только знания кода, но и понимания основ UX/UI (пользовательского опыта и интерфейса). В среде 1С программисты часто сталкиваются с дилеммой: создавать ли несколько отдельных форм или использовать одну форму с программным переключением страниц. Рассмотрим подробнее, как реализовать эффективный интерфейс, который будет быстрым, удобным и надежным.

Архитектурный подход: Отдельные формы против Группы страниц

Первое, с чем нам необходимо определиться — это структура приложения. Проанализируем два основных подхода:

  1. Множество отдельных форм. Этот метод кажется логичным, если каждый этап работы изолирован. Однако он порождает сложности с передачей контекста. Вам придется постоянно передавать структуру параметров через ОткрытьФорму и ловить результаты в ОписаниеОповещения. Это усложняет отладку и может привести к "мерцанию" экрана при закрытии и открытии окон.
  2. Одна форма и Группа страниц. Это рекомендуемый подход для РМК. Все данные находятся в контексте одной формы (реквизиты формы доступны на любой странице), что избавляет от необходимости сложной передачи параметров. Переключение между этапами происходит мгновенно.

Как отметили эксперты, при использовании страниц мы получаем полный контроль над состоянием объектов без лишних серверных вызовов для "проброса" данных между окнами.

Реализация навигации «без закладок»

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

1. Создайте в форме группу типа ГруппаСтраницы. В свойствах этой группы установите значение ОтображениеЗакладок в положение Нет.

2. Управляйте переходом программно с помощью команд "Далее" и "Назад". Для этого используйте свойство ТекущаяСтраница. Рассмотрим пример кода для перехода на следующую страницу:


&НаКлиенте
Процедура КомандаДалее(Команда)
    // Валидация данных текущего шага
    Если ПроверитьЗаполнениеДанныхНаШаге() Тогда
        Элементы.ОсновнаяПанельШагов.ТекущаяСтраница = Элементы.СтраницаОплата;
    КонецЕсли;
КонецПроцедуры

Оптимизация производительности: Ленивая загрузка

Если ваше РМК содержит много динамических списков, таблиц и кнопок на всех 5 страницах, форма может начать "тяжело" открываться. Чтобы избежать этого, мы рекомендуем использовать так называемую ленивую загрузку (Lazy Loading).

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


&НаКлиенте
Процедура ОсновнаяПанельШаговПриСменеСтраницы(Элемент, ТекущаяСтраница)
    Если ТекущаяСтраница = Элементы.СтраницаПодборЗапчастей Тогда
        // Выполняем загрузку данных только при переходе на эту страницу
        ЗаполнитьОстаткиНаСервере();
    КонецЕсли;
КонецПроцедуры

Визуализация и работа с «быстрыми кнопками»

В автобизнесе важна скорость. Стандартные кнопки 1С не всегда удобны для быстрого выбора услуг или товаров. Рассмотрим, как сделать интерфейс более интерактивным:

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

Использование картинок. Для визуальной идентификации услуг (например, иконка шиномонтажа или замены масла) можно использовать элементы декорации типа Картинка. Для обработки нажатия используйте событие Нажатие. Это придаст интерфейсу вид современного приложения.

HTML-панели. Самый гибкий способ — использование поля HTML-документа. Вы можете сформировать на языке HTML/CSS красивую плитку с градиентами, скруглениями и эффектами при наведении. При нажатии на элемент HTML можно передать событие обратно в 1С через механизм onclick="... " и обработчик ПриНажатии.

Оптимизация под тачскрины и горячие клавиши

Если РМК будет использоваться на сенсорных мониторах (в цехах или на приемке), помните о следующих правилах:

UX-фишки для сложного процесса

Выясним, как помочь пользователю не запутаться в 5 страницах процесса. Мы рекомендуем добавить визуальный индикатор прогресса (Breadcrumbs — "хлебные крошки") в верхней части формы. Это может быть простая надпись или набор декораций, отражающих этапы: Приемка -> Дефектовка -> Согласование -> Оплата.

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

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

← На главную