В процессе работы с типовыми конфигурациями на обычных формах, такими как Управление торговлей 10.3, пользователи часто сталкиваются с необходимостью быстрого переключения между наборами настроек (пресетами). Стандартный механизм «Сохранение настройки» и «Восстановление настройки» требует нескольких кликов мышью, что замедляет работу, если переключение происходит часто. В этой статье мы разберем, как привязать конкретные пресеты к сочетаниям клавиш (хоткеям), чтобы загрузка нужных параметров происходила мгновенно.
Рассмотрим ситуацию: у нас есть обработка для формирования прайс-листа. Для разных категорий клиентов или разных складов созданы свои настройки отбора номенклатуры. Наша задача — сделать так, чтобы при нажатии, например, Ctrl+1 загружался «Прайс Опт», а при Ctrl+2 — «Прайс Розница».
Для реализации этого функционала в обычных формах 1С 8.3 нам потребуется выполнить два основных шага:
Проанализируем самый простой и быстрый в реализации способ. В обычных формах у элементов управления типа Кнопка есть замечательное свойство — СочетаниеКлавиш. Это позволяет платформе автоматически отслеживать нажатие комбинации клавиш и вызывать связанное действие.
Выполним следующие действия:
КнопкаПресет1.Ctrl+1.Видимость в значение Ложь. Важно знать: в обычных формах сочетание клавиш для невидимой кнопки продолжает работать.Рассмотрим пример кода, который будет вызываться при нажатии:
Процедура КнопкаПресет1Нажатие(Элемент)
// Указываем имя настройки, которую мы сохранили ранее через стандартное окно
ИмяНастройки = "ПрайсОпт";
// Вызываем процедуру программного восстановления
ВосстановитьНастройкуПоИмени(ИмяНастройки);
КонецПроцедуры
Теперь разберем подробнее, как именно происходит программное восстановление. В 1С 8 настройки могут храниться либо в системном хранилище, либо в специальном справочнике (в зависимости от логики конфигурации УТ 10.3).
Проанализируем ситуацию, когда используются системные механизмы. Для этого используется объект ХранилищеОбщихНастроек или метод формы ВосстановитьЗначения(). Однако, чтобы загрузить конкретный именованный пресет, нам нужно обратиться к менеджеру настроек.
Посмотрим на пример функции, которая загружает структуру данных и заполняет реквизиты формы:
Процедура ВосстановитьНастройкуПоИмени(ИмяПресет)
// В УТ 10.3 часто используется универсальный механизм сохраненных настроек
// КлючОбъекта обычно равен полному имени обработки
КлючОбъекта = "Обработка.ПечатьПрайсЛиста";
// Пытаемся получить данные из системного хранилища
Настройки = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, ИмяПресет);
Если Настройки <> Неопределено Тогда
// Заполняем реквизиты формы из полученной структуры
Для Каждого ТекНастройка Из Настройки Цикл
Попытка
ЭтотОбъект[ТекНастройка.Ключ] = ТекНастройка.Значение;
Исключение
// Пропускаем, если реквизит не найден
КонецПопытки;
КонецЦикла;
// Обязательно вызываем обновление элементов формы,
// если данные влияют на видимость или списки
ОбновитьФормуПослеЗагрузки();
КонецЕсли;
КонецПроцедуры
Если пресетов много (более 3-5), загромождать форму невидимыми кнопками неудобно. Выясним, как сделать это более элегантно. Мы можем использовать Командную панель.
Разберем по шагам:
Командную панель (или используем существующую).СочетаниеКлавиш.Это решение лучше тем, что пользователь будет видеть подсказки (хоткеи) прямо в меню, что повышает удобство интерфейса (юзабилити). При этом программная логика загрузки остается такой же, как в Способе 2.
Проанализируем специфику Управления торговлей 10.3. В этой конфигурации многие отчеты и обработки построены на базе «Универсального отчета». В таких объектах уже есть встроенные процедуры, такие как РаботаСДиалогами.ВосстановитьНастройки() или использование справочника СохраненныеНастройки.
Если ваша обработка использует типовой механизм УТ, то загрузку лучше делать через поиск в справочнике:
НастройкаСсылка = Справочники.СохраненныеНастройки.НайтиПоНаименованию(ИмяПресет);
Если Не НастройкаСсылка.Пустая() Тогда
// Используем типовой метод УТ для извлечения данных
СтруктураНастроек = НастройкаСсылка.СохраненнаяНастройка.Получить();
// Далее заполняем реквизиты, как в примере выше
КонецЕсли;
При назначении горячих клавиш следует соблюдать осторожность, чтобы не войти в конфликт со стандартными функциями платформы 1С. Рассмотрим наиболее безопасные варианты:
Ctrl + Цифра (от 0 до 9) — они редко заняты глобальными действиями.F5–F12 в сочетании с Alt или Shift.F1 (справка), Ctrl+S (сохранение), Ctrl+P (печать) и Alt+F4 (закрытие), так как система перехватит их раньше вашей формы.Таким образом, мы выяснили, что наиболее эффективным методом для обычных форм является создание кнопок (видимых или нет) с назначенными свойствами СочетаниеКлавиш и вызовом процедуры программного восстановления из ХранилищаОбщихНастроек. Это позволяет превратить рутинный процесс выбора параметров в мгновенное действие, значительно ускоряя работу оператора или менеджера.