Мало кто знает, что поле "Глобального поиска" в 1С можно доработать. Добавить свои варианты поиска, кнопочки в результатах и даже целые пользовательские меню.
Предназаначен для расширения функционала поля глобального поиска в 1С.
На его основе можно создавать удобное иерархическое меню, в котором расположить свои виды поиска.
Каждый элемент меню по умолчанию имеет кнопки:
Расширение имеет встроенное меню для демонстрации возможностей. Активируется оно символом "".
Позволяет искать метаданные по именам и синонимам. С фильтром по типу метаданных и без.
Позволяет искать по открытым формам. Формы можно активировать или закрывать. Дополнительно по форме можно искать элементы. Элемент можно активировать или дополнительно выделить заливкой.
Расширение имеет переопределяемые модули для возможности создания своих меню. Все возможности переопределения можно увидеть в самих модулях, но основное:
РГП_ГлобальныйПоискКлиентПереопределяемый.ПослеЗаполненияПараметровРасширенногоГлобальногоПоиска()
В данный метод попадает структура ПараметрыПоиска. Описание можно посмотреть в РГП_ГлобальныйПоискКлиент.ПараметрыРасширенногоГлобальногоПоиска
Путем добавления команд в структуру можно создавать свои пункты иерархического меню. Все взаимодействие с пользователем берет на себя расширение, а разработчику нужно только создать свои методы для поиска и использовать в них при построении результата методы расширения.
Все команды должны иметь родителя. Все кроме "корневой", которая активируется путём ввода специального символа. Этот же символ далее будет являться разделителем команд.
В расширении есть предопределенное меню с корневой командой, использующей символ. Получить основную команду можно так:
ОбщаяКоманда = ПараметрыПоиска.Команды.Получить("\");
Далее можно добавлять свои команды. Простой пример:
НашеМеню = РГП_ГлобальныйПоискКлиент.НоваяКомандаРасширенногоПоиска(ПараметрыПоиска, "Наше", ОбщаяКоманда);
НашеМеню.Представление = "Наше меню";
Можно добавить свою картинку:
НашеМеню.Картинка = БиблиотекаКартинок.ПоискДанных;
И подчиненные команды:
Команда при нажатии открывает форму:
Команда = РГП_ГлобальныйПоискКлиент.НоваяКомандаРасширенногоПоиска(ПараметрыПоиска, "К1", НашеМеню);
Команда.Представление = "Открыть форму";
Команда.ВыполняемоеДействие = РГП_ГлобальныйПоискКлиентСервер.ВыполняемоеДействиеОткрытияФормы("ОбщаяФорма.ОбщиеНастройки");
Команда при нажатии открывает значение:
Команда = РГП_ГлобальныйПоискКлиент.НоваяКомандаРасширенногоПоиска(ПараметрыПоиска, "К2", НашеМеню);
Команда.Представление = "Открыть значение";
Команда.ВыполняемоеДействие = РГП_ГлобальныйПоискКлиентСервер.ВыполняемоеДействиеОткрытияЗначения(ТекущаяДата());
Команда при нажатии выполняет описание оповещения:
Команда = РГП_ГлобальныйПоискКлиент.НоваяКомандаРасширенногоПоиска(ПараметрыПоиска, "К3", НашеМеню);
Команда.Представление = "Описание оповещения";
ОписаниеОповещения = РГП_ГлобальныйПоискКлиентСервер.ОписаниеОповещения("Процедура1", "Модуль1");
Команда.ВыполняемоеДействие = РГП_ГлобальныйПоискКлиентСервер.ВыполняемоеДействиеОписанияОповещения(ОписаниеОповещения);
При этом сигнатура описания будет такой:
// Выполнить что-то
//
// Параметры:
// ВыполняемоеДействие - см. РГП_ГлобальныйПоискКлиентСервер.ВыполняемоеДействие
// ДополнительныеПараметры - Произвольный
Процедура Процедура1(ВыполняемоеДействие, ДополнительныеПараметры) Экспорт
//Что-то делаем
КонецПроцедуры
Команда при нажатии выполняет план поиска:
Команда = РГП_ГлобальныйПоискКлиент.НоваяКомандаРасширенногоПоиска(ПараметрыПоиска, "К4", НашеМеню);
Команда.Представление = "План поиска";
ЭлементПлана = РГП_ГлобальныйПоискКлиент.ЭлементПланаГлобальногоПоискаКоманды("Процедура2", "Модуль1", Ложь);
Команда.ПланПоиска.Добавить(ЭлементПлана);
При этом так может выглядеть процедура плана поиска:
// Заполняем РезультатыПоиска, которые увидит пользователь
//
// Параметры:
// СтрокаПоиска - Строка - Полная строка (включая команды меню).
// РезультатыПоиска - РезультатГлобальногоПоиска - Выходной параметр. Содержит результаты поиска.
// ПараметрыВыполнения - см. ПараметрыВыполненияКомандыПоиска
Процедура Процедура2(Знач СтрокаПоиска, РезультатыПоиска, ПараметрыВыполнения) Экспорт
//Во входящей строке находится полная строка (включая команды меню)
//Если же нам нужна именно строка без команд, то можем взять её в параметрах выполнения
СтрокаПоиска = ПараметрыВыполнения.СтрокаПоиска;
//Здесь у нас находится ключ команды
КлючКоманды = ПараметрыВыполнения.Ключ;
//Так мы можем добавить результат поиска. При этом применяются те же объекты выполняемых действий
ВыполняемоеДействие = РГП_ГлобальныйПоискКлиентСервер.ВыполняемоеДействиеОткрытияЗначения(ТекущаяДата());
РГП_ГлобальныйПоискКлиентСервер.ДобавитьЭлементРезультатаГлобальногоПоиска(
РезультатыПоиска, ВыполняемоеДействие, "Текущая дата");
КонецПроцедуры
Для понимания всех используемых возможностей можно посомтреть встроенные стандартные пункты меню в расширении.
В данном видео можено посмотреть сам принцип доработки поля глобального поиска, а так же примеры использования расширения
Если вы хотите как-то доработать данную "платформу" для расширения глобального поиска, то:
Расширение глобального поиска 1С, или Глобальный поиск "на максималках" |
1. Откройте маркетплейс из главного меню TurboConf или из меню в панели уведомлений.
2. Найдите нужную разработку.
3. Нажмите кнопку Установить.
TurboConf все установит автоматически!