Hot-keys для дополнительных свойств справочников и документов.
Способ создания hot-keys для дополнительных свойств справочников и документов в обычном интерфейсе.
- Описание
- Подробнее
Описание
Ктото может скажет: Чего тут сложного, добавить скрытую кнопку на форму и приязать к ней действие.
А если нам нужно добавить на все формы объектов у которых есть дополнительные свойства? А что делать с формами списков?
Обработка события от элементов формы должна находится в модуле формы, придеться вставлять процедуры во все формы.
Представляю способ не затрагивающий модули форм, в результате которого получает 3 вставки по 2 строчки каждый в типовой код, и две процедуры. Процедуры можно разместить в свой общий модуль или , если его у вас нет, в типовой, например: РаботаСДиалогами.
Приступим.
Функция вызывается при открытии формы на которой есть кнопка дополнительные свойства.
Вставка № 1
Процедура ИзменитьПредставлениеКнопкиВыбораСвойств(ФормаОбъекта, ОписаниеЗначенийСвойств) Экспорт Если ПустаяСтрока(ОписаниеЗначенийСвойств) ИЛИ ОписаниеЗначенийСвойств = «Дополнительные реквизиты» Тогда Для Каждого ЭлементФормы Из ФормаОбъекта.ЭлементыФормы Цикл КонецПроцедуры |
Т.к. мы не можем разместить процедуру обрабатывающую событие в в общем модуле, будем использовать «чужую», котораю уже есть в форме. Вставки 2 и 3 вызываются при нажатии на кнопку дополнительные свойства. Первая при нажатии кнопки на форме элемента, вторая на форме списка.
Вставка № 2
Процедура ОткрытьСвойстваДокумента(ДокументОбъект, ФормаДокумента) Экспорт Если ДокументОбъект.ЭтоНовый() Тогда ЗначениеУстановленно = РаботаСДополнительнымиХарактеристикамиОбъектов.УстановитьЗначениеСвойстваОбъекта(ДокументОбъект, ФормаДокумента); Форма = Обработки.ЗначенияСвойствОбъекта.ПолучитьФорму(«ЗначенияСвойствОбъекта», ФормаДокумента, ДокументОбъект.Ссылка); КонецПроцедуры |
Вставка № 3
Процедура ОткрытьСвойстваИзСписка(Объект, ФормаОбъекта) Экспорт Если Объект = неопределено Тогда ЗначениеУстановленно = РаботаСДополнительнымиХарактеристикамиОбъектов.УстановитьЗначениеСвойстваОбъекта(Объект, ФормаОбъекта); Форма = Обработки.ЗначенияСвойствОбъекта.ПолучитьФорму(«ЗначенияСвойствОбъекта», ФормаОбъекта); КонецПроцедуры |
Со вставками разобрались, приступим к процедуре создания наших кнопок.
Процедура создает кнопки на текущей форме и устанавливает на нее действие. (Если у кнопки убрать видимость, не отрабатывает нажатие по hot-key поэтому пришлось сделать «микро» кнопки). Сделаем ограничение на количество кнопок, 10 шт.
Процедура СоздатьКнопкиУстановкиДополнительныхРеквизитов(ФормаОбъекта, ЭлементФормы) Перем ТипЗначенияРеквизита; СписокКодовСвойствДокументов = «004,006,009,010,012,013,014,015»; //не больше 10 ! МассивВсехКодов = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СписокКодовСвойствДокументов+«,»+СписокКодовСвойствСправочников); Для Каждого Код Из МассивВсехКодов Цикл //список возможных способов получения типов Попытка // Получим списки свойств объектов Запрос.УстановитьПараметр(«Коды»,МассивВсехКодов); //проверим если тип ОбъектаФормы в ТаблицаСвойстваОбъектов Для Каждого Строка Из ТаблицаСвойстваОбъектов Цикл СчетчикКнопок = 0; ТекщаяКлавиша = Клавиша.Нет; КнопкаДействия = ЭлементФормы.Кнопки.Найти(«ДействиеСвойства»); Попытка КонецЦикла; КонецПроцедуры |
Ну и последняя функция обрабатывет событие от наших кнопок. При нажатии на hot-key наша кнопка становится текущей, это и будем проверять. Если тип значения у свойства Булево, то функция меняет с Истины на Ложь или наобром, если другой тип, то вызывается Окно ввода значения.
Функция УстановитьЗначениеСвойстваОбъекта(Объект, ФормаДокумента) Перем ВыбранЗнач; Если ТипЗнч(ФормаДокумента.ТекущийЭлемент) = Тип(«Кнопка») Тогда Запрос = Новый Запрос(«ВЫБРАТЬ Запрос.УстановитьПараметр(«Код»,Сред(ИмяКнопки,3)); Если ПрефиксИмени = «О_» Тогда Запись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); Если Выборка.ТипЗначения.СодержитТип(Тип(«Булево»)) Тогда Если ЗаписьЗаписать Тогда // установим текущий элемент не на наши кнопки // изменим представление кнопки дополнительные свойства Возврат СвойствоУстановленно; КонецФункции |
Вот вобщем и все.
В результате получаем hot-keys на любой форме, где есть кнопка «Дополнительные свойства» с минимальными вставками в типовой код.

