Low-code дизайнер > Создание интерфейсов > Типы виджетов > Виджеты для работы с данными / Виджет «EQL-поиск»

Виджет «EQL-поиск»

Виджет EQL-поиск размещается на формах приложений и страницах и позволяет осуществлять поисковые запросы на языке EQL365 (ELMA365 Query Language). Пользователи смогут применять операции и функции разработанного синтаксиса, задавать сложную выборку данных с множеством условий и выполнять поиск по параметрам любого приложения системы.

Настройка EQL-поиска при помощи виджета

Виджет EQL-поиск представляет собой строку поиска, в которой пользователи указывают EQL-запрос. Поиск по запросу осуществляется при помощи скрипта, который создаётся в дизайнере интерфейсов. Пользователь запускает его на странице или форме, например, при нажатии на настроенную кнопку. Результат поиска выводится в специальной добавленной переменной.

Рассмотрим подробнее настройку EQL-поиска в виджете. Для примера разместим виджет на отдельной странице Конверсия сделок, где отображается график перехода элементов по их статусам. Настроим поиск на странице по параметрам приложения Сделки.

eql-search-widget-1

Шаг 1. Добавление контекстных переменных

Чтобы настроить виджет EQL-поиск, в дизайнере интерфейсов создайте специальные контекстные переменные. Они используются для сопоставления с настройками виджета, а также для отображения результатов поиска.

  1. В дизайнере интерфейсов перейдите на вкладку Контекст.
  2. Добавьте свойства. Названия и коды переменных приведены для примера. Типы данных должны совпадать с указанными:

eql-search-widget-2

  • Строка EQL-запроса (eql) — свойство с типом Строка. Указывается в настройках виджета и используется для ввода EQL-запроса;
  • Параметры EQL-поиска (parameters) — свойство Произвольный тип. Указывается в настройках виджета. Используется для передачи составленного запроса из виджета в скрипте его обработки;
  • Результат EQL-поиска (appItems) — свойство типа Приложение (несколько) с указанием приложения, по параметрам которого будет осуществляться поиск. В нашем примере используется приложение Сделки. Свойство добавляется на поле для моделирования для отображения всех элементов, совпадающих с условиями введённого пользователем EQL-запроса.  

Шаг 2. Размещение и настройка виджета EQL-поиск

На следующем этапе настройте виджет EQL-поиск. Для этого:

  1. Перейдите на вкладку Шаблон и перетащите виджет с правой панели дизайнера интерфейсов в ту область поля для моделирования, где хотите разместить строку поиска.
  2. В открывшемся окне на вкладке Основные укажите настройки виджета:

eql-search-widget-3

  • Строка EQL — сопоставьте опцию с переменной типа Строка, добавленной на шаге 1. Нажмите <Не установлено> и выберите свойство из списка. В нашем примере — это Строка EQL-запроса;
  • Параметры EQL — сопоставьте опцию с переменной Произвольный тип, добавленной на шаге 1. Нажмите <Не установлено> и выберите свойство из списка, например Параметры EQL-поиска;
  • Приложение* — выберите приложение, по параметрам которого будет выполняться поиск с учётом условий составленных EQL-запросов. В нашем примере — приложение Сделки.
  1. На вкладках События и Системные вы можете задать системные настройки, одинаковые для всех виджетов. Они позволяют управлять видимостью и доступом виджета, настраивать поведение при наведении курсора и т. д. Подробнее об этом читайте в статье «Системные настройки виджетов»
  2. Сохраните заданные в виджете параметры.

Шаг 3. Настройка скрипта обработки EQL-запроса

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

Чтобы это настроить, выполните следующие действия:

  1. На вкладке Виджеты на правой панели дизайнера интерфейсов найдите виджет Кнопка. Перетащите его на поле для моделирования, например, разместите кнопку под строкой EQL-поиска.
  2. В открывшемся окне настройте отображение кнопки и задайте её название, например, Поиск.
  3. В поле Выполняемый скрипт нажмите Создать и укажите название скрипта, который будет запускаться при нажатии на кнопку, например, Click;
  4. Нажмите на появившуюся в поле кнопку Открыть, чтобы перейти на вкладку Скрипты и задать следующую команду:

async function Click (): Promise<void> {
   Context.data.appItems = await Context.fields.appItems.app.search().where(Context.data.eql!, Context.data.parameters).all();
}

Шаг 4. Настройка отображения результата поиска

Согласно заданному скрипту найденные по EQL-запросу элементы приложения записываются в переменную Результат EQL-поиска, созданную на шаге 1. Её можно использовать в дизайнере интерфейсов. Например, отобразим результат поиска на странице. Для этого:

  1. Перейдите на вкладку Шаблон и на правой боковой панели нажмите Свойства.
  2. Перетащите свойство Результат EQL-поиска на поле для моделирования. Например, разместите его под настроенной кнопкой Поиск.
  3. В открывшемся окне настроек в поле Только для чтения отметьте Да, чтобы пользователи могли только просматривать отображаемые в свойстве элементы.
  4. Задайте другие настройки строки формы. Например, включите опцию Скрывать, если не заполнено, чтобы показывать поле с найденными элементами только после обработки EQL-запроса.
  5. Сохраните заданные параметры.

Шаг 5. Публикация настроенного интерфейса

Настройки страницы в дизайнере интерфейсов для нашего примера могут выглядеть следующим образом:

eql-search-widget-4

Чтобы страница стала доступна пользователям, нажмите Сохранить и Опубликовать на верхней панели дизайнера интерфейсов.

Теперь пользователи могут использовать EQL-поиск, чтобы искать элементы приложения Сделки.