Как добавить горячие клавиши для быстрого выбора пресетов в обработке 1С 8.3 (УТ 10.3)

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

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

Постановка задачи и анализ механизмов

Рассмотрим ситуацию: у нас есть обработка для формирования прайс-листа. Для разных категорий клиентов или разных складов созданы свои настройки отбора номенклатуры. Наша задача — сделать так, чтобы при нажатии, например, Ctrl+1 загружался «Прайс Опт», а при Ctrl+2 — «Прайс Розница».

Для реализации этого функционала в обычных формах 1С 8.3 нам потребуется выполнить два основных шага:

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

Способ 1. Использование невидимых кнопок с сочетаниями клавиш

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

Выполним следующие действия:

  1. Откроем форму обработки в конфигураторе.
  2. Добавим на форму новую кнопку. Назовем ее, например, КнопкаПресет1.
  3. В палитре свойств этой кнопки найдем поле СочетаниеКлавиш и назначим, например, Ctrl+1.
  4. Если мы не хотим, чтобы кнопка занимала место в интерфейсе, мы можем установить свойство Видимость в значение Ложь. Важно знать: в обычных формах сочетание клавиш для невидимой кнопки продолжает работать.
  5. Создадим обработчик нажатия этой кнопки.

Рассмотрим пример кода, который будет вызываться при нажатии:


Процедура КнопкаПресет1Нажатие(Элемент)
    // Указываем имя настройки, которую мы сохранили ранее через стандартное окно
    ИмяНастройки = "ПрайсОпт";
    
    // Вызываем процедуру программного восстановления
    ВосстановитьНастройкуПоИмени(ИмяНастройки);
КонецПроцедуры

Способ 2. Программная загрузка настроек из хранилища

Теперь разберем подробнее, как именно происходит программное восстановление. В 1С 8 настройки могут храниться либо в системном хранилище, либо в специальном справочнике (в зависимости от логики конфигурации УТ 10.3).

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

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


Процедура ВосстановитьНастройкуПоИмени(ИмяПресет)
    
    // В УТ 10.3 часто используется универсальный механизм сохраненных настроек
    // КлючОбъекта обычно равен полному имени обработки
    КлючОбъекта = "Обработка.ПечатьПрайсЛиста";
    
    // Пытаемся получить данные из системного хранилища
    Настройки = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, ИмяПресет);
    
    Если Настройки <> Неопределено Тогда
        // Заполняем реквизиты формы из полученной структуры
        Для Каждого ТекНастройка Из Настройки Цикл
            Попытка
                ЭтотОбъект[ТекНастройка.Ключ] = ТекНастройка.Значение;
            Исключение
                // Пропускаем, если реквизит не найден
            КонецПопытки;
        КонецЦикла;
        
        // Обязательно вызываем обновление элементов формы, 
        // если данные влияют на видимость или списки
        ОбновитьФормуПослеЗагрузки();
    КонецЕсли;

КонецПроцедуры

Способ 3. Командная панель и подменю «Быстрый выбор»

Если пресетов много (более 3-5), загромождать форму невидимыми кнопками неудобно. Выясним, как сделать это более элегантно. Мы можем использовать Командную панель.

Разберем по шагам:

  1. Добавим на форму Командную панель (или используем существующую).
  2. Создадим в ней кнопку с типом Действие или подменю.
  3. Для каждого пункта подменю в свойствах также можно задать СочетаниеКлавиш.

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

Особенности для конфигурации УТ 10.3

Проанализируем специфику Управления торговлей 10.3. В этой конфигурации многие отчеты и обработки построены на базе «Универсального отчета». В таких объектах уже есть встроенные процедуры, такие как РаботаСДиалогами.ВосстановитьНастройки() или использование справочника СохраненныеНастройки.

Если ваша обработка использует типовой механизм УТ, то загрузку лучше делать через поиск в справочнике:


НастройкаСсылка = Справочники.СохраненныеНастройки.НайтиПоНаименованию(ИмяПресет);
Если Не НастройкаСсылка.Пустая() Тогда
    // Используем типовой метод УТ для извлечения данных
    СтруктураНастроек = НастройкаСсылка.СохраненнаяНастройка.Получить();
    // Далее заполняем реквизиты, как в примере выше
КонецЕсли;

Важные рекомендации по выбору клавиш

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

Таким образом, мы выяснили, что наиболее эффективным методом для обычных форм является создание кнопок (видимых или нет) с назначенными свойствами СочетаниеКлавиш и вызовом процедуры программного восстановления из ХранилищаОбщихНастроек. Это позволяет превратить рутинный процесс выбора параметров в мгновенное действие, значительно ускоряя работу оператора или менеджера.

← На главную