Как скрыть все панели интерфейса и оставить только одну обработку на начальной странице в 1С

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

При автоматизации рабочих мест со специфическими задачами (например, терминалы сбора данных, рабочие места кассиров или производственные мониторы с сенсорным управлением) часто возникает необходимость максимально упростить интерфейс. Идеальный вариант — когда пользователь при входе видит только одну форму своей обработки и не имеет доступа к меню разделов, панелям навигации и другим стандартным элементам системы. В рамках данной статьи мы разберем, как программно настроить такой интерфейс в 1С:Предприятие 8.3, используя расширения и механизмы платформы.

Постановка задачи и выбор стратегии решения

Рассмотрим ситуацию на примере конфигурации 1С:Комплексная автоматизация 2.5. Нам необходимо добиться следующего поведения системы:

  1. При запуске приложения окно открывается в полноэкранном режиме (режим "киоска").
  2. Все стандартные панели (верхняя, левая, правая, нижняя) скрыты.
  3. На начальной странице отображается только одна конкретная обработка.
  4. Настройки применяются только к определенным пользователям, обладающим специальной ролью.

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

Шаг 1: Установка режима основного окна

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

Разберем их подробнее. Режим РабочееМесто скрывает панели навигации и действий, но оставляет заголовок приложения. Режим ПолноэкранноеРабочееМесто — это радикальный вариант, который убирает даже системный заголовок окна и панель задач Windows. Проанализируем пример кода, который необходимо разместить в модуле управляемого приложения (через расширение) в обработчике ПередНачаломРаботыСистемы:


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

Использование этого метода гарантирует, что приложение примет нужный вид еще до того, как интерфейс будет полностью отрисован.

Шаг 2: Программное скрытие панелей интерфейса

Даже в режиме рабочего места у пользователя могут остаться элементы управления, которые нам не нужны. Чтобы гарантированно "очистить" экран, воспользуемся объектом ХранилищеСистемныхНастроек. Нам нужно перезаписать настройки интерфейса клиента.

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


// Загружаем текущие настройки интерфейса
НастройкиИнтерфейса = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения");

// Если настроек еще нет (первый вход), создаем новый объект
Если НастройкиИнтерфейса = Неопределено Тогда
    НастройкиИнтерфейса = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
КонецЕсли;

НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав();

// Очищаем все возможные области расположения панелей
НастройкиСостава.Лево.Очистить();
НастройкиСостава.Верх.Очистить();
НастройкиСостава.Низ.Очистить();
НастройкиСостава.Право.Очистить();

// Устанавливаем и сохраняем пустой состав
НастройкиИнтерфейса.УстановитьСостав(НастройкиСостава);
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , НастройкиИнтерфейса);

Этот код эффективно убирает панель разделов, панель инструментов и панель открытых окон, оставляя рабочую область абсолютно чистой.

Шаг 3: Настройка начальной страницы

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

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


НастройкиНачальнойСтраницы = Новый НастройкиНачальнойСтраницы;
СоставФорм = Новый СоставФормНачальнойСтраницы;

// Указываем путь к форме нашей обработки
// Обратите внимание на синтаксис: "Обработка.ИмяОбработки.Форма.ИмяФормы"
СоставФорм.ЛеваяКолонка.Добавить("Обработка.РабочийСтолСенсорный.Форма.Форма");

НастройкиНачальнойСтраницы.УстановитьСоставФорм(СоставФорм);
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиНачальнойСтраницы", , НастройкиНачальнойСтраницы);

Важно помнить, что если вы используете расширение, имя обработки может содержать префикс расширения. Проверьте правильность пути к форме, иначе начальная страница останется пустой.

Объединение решения в расширении

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


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

Дополнительные рекомендации для сенсорных интерфейсов

Если ваша цель — создание интерфейса для сенсорного монитора, просто скрыть панели может быть недостаточно. Рассмотрим несколько дополнительных приемов:

  1. Компактный режим: В 1С существует так называемый "Такси Компактный" интерфейс. Однако для сенсоров иногда лучше использовать стандартный режим с увеличенными отступами. Вы можете управлять этим через КлиентскоеПриложение.УстановитьИнтерфейс.
  2. Запрет горячих клавиш: Даже без панелей пользователь может нажать Ctrl+Shift+L (поиск) или Alt+F10. Если это критично, в форме обработки можно перехватывать нажатия клавиш или использовать полноэкранный режим киоска на уровне операционной системы.
  3. Очистка истории: Чтобы пользователь не мог "вернуться" к предыдущим объектам через системные механизмы, полезно периодически вызывать ИсторияРаботыПользователя.Очистить().
  4. Обработка закрытия: В самой форме обработки обязательно предусмотрите крупную кнопку "Выход" или "Завершить работу", так как стандартный крестик окна в режиме ПолноэкранноеРабочееМесто может отсутствовать.

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

← На главную