Расширение глобального поиска 1С, или Глобальный поиск "на максималках"

1 28 марта 2023 21:20

Мало кто знает, что поле "Глобального поиска" в 1С можно доработать. Добавить свои варианты поиска, кнопочки в результатах и даже целые пользовательские меню.

Расширенный глобальный поиск 1С

Предназаначен для расширения функционала поля глобального поиска в 1С.

На его основе можно создавать удобное иерархическое меню, в котором расположить свои виды поиска.

Каждый элемент меню по умолчанию имеет кнопки:

  • Команда "Назад" для возвращения к родительской команде
  • Команда "Ввод строки" для изменения строки поиска
  • Команда "Обновить" для обновления результатов поиска
  • Использование стандартных команд позволяет пользователям не вводить вручную имена команд с соответствием семантики.

Встроенное меню

Расширение имеет встроенное меню для демонстрации возможностей. Активируется оно символом "".

-

Поиск по метаданным

Позволяет искать метаданные по именам и синонимам. С фильтром по типу метаданных и без.

-
-
-

Поиск по формам

Позволяет искать по открытым формам. Формы можно активировать или закрывать. Дополнительно по форме можно искать элементы. Элемент можно активировать или дополнительно выделить заливкой.
-
-

Разработка собственного меню

Расширение имеет переопределяемые модули для возможности создания своих меню. Все возможности переопределения можно увидеть в самих модулях, но основное:

РГП_ГлобальныйПоискКлиентПереопределяемый.ПослеЗаполненияПараметровРасширенногоГлобальногоПоиска()

В данный метод попадает структура ПараметрыПоиска. Описание можно посмотреть в РГП_ГлобальныйПоискКлиент.ПараметрыРасширенногоГлобальногоПоиска

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

Примеры своих команд

Все команды должны иметь родителя. Все кроме "корневой", которая активируется путём ввода специального символа. Этот же символ далее будет являться разделителем команд.

В расширении есть предопределенное меню с корневой командой, использующей символ. Получить основную команду можно так:

ОбщаяКоманда = ПараметрыПоиска.Команды.Получить("\");

Далее можно добавлять свои команды. Простой пример:

НашеМеню = РГП_ГлобальныйПоискКлиент.НоваяКомандаРасширенногоПоиска(ПараметрыПоиска, "Наше", ОбщаяКоманда);
НашеМеню.Представление = "Наше меню";

Можно добавить свою картинку:

НашеМеню.Картинка = БиблиотекаКартинок.ПоискДанных;

И подчиненные команды:

Команда при нажатии открывает форму:

Команда = РГП_ГлобальныйПоискКлиент.НоваяКомандаРасширенногоПоиска(ПараметрыПоиска, "К1", НашеМеню);
Команда.Представление = "Открыть форму";
Команда.ВыполняемоеДействие = РГП_ГлобальныйПоискКлиентСервер.ВыполняемоеДействиеОткрытияФормы("ОбщаяФорма.ОбщиеНастройки");

Команда при нажатии открывает значение:

Команда = РГП_ГлобальныйПоискКлиент.НоваяКомандаРасширенногоПоиска(ПараметрыПоиска, "К2", НашеМеню);
Команда.Представление = "Открыть значение";
Команда.ВыполняемоеДействие = РГП_ГлобальныйПоискКлиентСервер.ВыполняемоеДействиеОткрытияЗначения(ТекущаяДата()); 

Команда при нажатии выполняет описание оповещения:

Команда = РГП_ГлобальныйПоискКлиент.НоваяКомандаРасширенногоПоиска(ПараметрыПоиска, "К3", НашеМеню);
Команда.Представление = "Описание оповещения";
ОписаниеОповещения = РГП_ГлобальныйПоискКлиентСервер.ОписаниеОповещения("Процедура1", "Модуль1");
Команда.ВыполняемоеДействие = РГП_ГлобальныйПоискКлиентСервер.ВыполняемоеДействиеОписанияОповещения(ОписаниеОповещения);

При этом сигнатура описания будет такой:

// Выполнить что-то
// 
// Параметры:
//  ВыполняемоеДействие - см. РГП_ГлобальныйПоискКлиентСервер.ВыполняемоеДействие
//  ДополнительныеПараметры - Произвольный
Процедура Процедура1(ВыполняемоеДействие, ДополнительныеПараметры) Экспорт
	//Что-то делаем
КонецПроцедуры

Команда при нажатии выполняет план поиска:

Команда = РГП_ГлобальныйПоискКлиент.НоваяКомандаРасширенногоПоиска(ПараметрыПоиска, "К4", НашеМеню);
Команда.Представление = "План поиска";
ЭлементПлана = РГП_ГлобальныйПоискКлиент.ЭлементПланаГлобальногоПоискаКоманды("Процедура2", "Модуль1", Ложь);
Команда.ПланПоиска.Добавить(ЭлементПлана);

При этом так может выглядеть процедура плана поиска:

// Заполняем РезультатыПоиска, которые увидит пользователь
// 
// Параметры:
//  СтрокаПоиска - Строка - Полная строка (включая команды меню).
//  РезультатыПоиска - РезультатГлобальногоПоиска - Выходной параметр. Содержит результаты поиска.
//  ПараметрыВыполнения - см. ПараметрыВыполненияКомандыПоиска
Процедура Процедура2(Знач СтрокаПоиска, РезультатыПоиска, ПараметрыВыполнения) Экспорт
	
	//Во входящей строке находится полная строка (включая команды меню)
	//Если же нам нужна именно строка без команд, то можем взять её в параметрах выполнения
	СтрокаПоиска = ПараметрыВыполнения.СтрокаПоиска;
	
	//Здесь у нас находится ключ команды
	КлючКоманды = ПараметрыВыполнения.Ключ;
	
	//Так мы можем добавить результат поиска. При этом применяются те же объекты выполняемых действий
	ВыполняемоеДействие = РГП_ГлобальныйПоискКлиентСервер.ВыполняемоеДействиеОткрытияЗначения(ТекущаяДата());
	РГП_ГлобальныйПоискКлиентСервер.ДобавитьЭлементРезультатаГлобальногоПоиска(
		РезультатыПоиска, ВыполняемоеДействие, "Текущая дата");

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

Подробнее

Для понимания всех используемых возможностей можно посомтреть встроенные стандартные пункты меню в расширении.

В данном видео можено посмотреть сам принцип доработки поля глобального поиска, а так же примеры использования расширения

Доработка расширения в ЕДТ

Если вы хотите как-то доработать данную "платформу" для расширения глобального поиска, то:

  • Расширение разрабатывается на EDT (на данный момент версии 2022.1.5) с использованием строгой типизации
  • Так как это расширение, то нужна основная конфигурация. Я веду разработку на своём форке БСП: https://github.com/SeiOkami/ssl_3_1_edt
  • Когда у нас уже есть основной проект, то необходимо импортировать проект расширения. Можно сделать импорт напрямую из моего репозитория или же сделать свой при помощи форка моего репозитория.
  • Когда определились с репозиторием, то в ЕДТ в навигаторе нажимаем Правой кнопкой мыши по пустому месту → выбираем Импорт →И далее указываем ссылку клонирования репозитория из гитхаб и проходим по всем пунктам импорта
  • После успешного импорта необходимо обновить основное приложение (базу) из проекта с галочкой “Загрузить конфигурацию полностью”
  • Зайти в конфигуратор базы и снять все флажки расширения кроме “Активно”

Контакты и материалы

Товары

Расширение глобального поиска 1С, или Глобальный поиск "на максималках"

Скачать бесплатно 0

Автоматическая установка с TurboConf

1. Откройте маркетплейс из главного меню TurboConf или из меню в панели уведомлений.

Откройте маркетплейс

2. Найдите нужную разработку.

Найдите нужную разработку

3. Нажмите кнопку Установить.

Нажмите кнопку Установить

TurboConf все установит автоматически!

См. также

Навигация по областям

Шаблоны модулей

Модератору