...

Универсальный поиск

Тема в разделе "Разработчикам", создана пользователем lyashek.s, 29 сен 2017.

  1. lyashek.s

    lyashek.s New Member

    Доброго времени суток!
    Есть такая задача: На форме процесса создать универсальную поисковую строку. При вводе текста должен происходить поиск в справочниках Контрагенты и Возможности. Вывод найденных значений в выпадающий список. Возможность выбора объекта. Возможность дальнейшего использования (реализовать можно выводом типа и ИД объекта для последующего парсинга и загрузки объекта).
    Пока есть один простой, но не очень красивый вариант: Сделать общий справочник и заносить туда строки со ссылками на необходимые объекты как контрагентов так и лиды. Организовывать поиск по этому справочнику.

    Версия Стандарт.

    Спасибо!
     
  2. pushkarev

    pushkarev Active Member

    Если я правильно понял задачу, то вам в процессе требуется выбрать контрагента или возможность, чтобы потом работать с процессом либо с тем либо с другим, а пользователь заранее не знает, клиент занесен как возможность или как контрагент.
    Я вижу 3 возможных варианта решения данной задачи:
    1. Тот вариант о котором вы пишете, с созданием дополнительно справочника, в котором будут и контрагенты и возможности. Он достаточно простой, но потребуется как-то наполнять и обновлять этот справочник, скорее всего лиснером на добавление и изменение возможности и контрагента, который будет обновлять данные в справочнике. Минус тут в дополнительной нагрузке на систему (дольше будет выполняться создание и изменение возможности и контрагента), ну и база места больше будет занимать.
    2. Добавить на форму текстовое поле, кнопку поиска (через дизайнер форм), а так же 2 поля по выбору контрагента и возможности. Пользователь должен будет написать свой поисковый запрос в строку, которую мы вывели, потом нажать кнопку поиска. По нажатию на эту кнопку на поля выбора контрагента и возможности должен установиться фильтр, который отфильтрует значения в этих полях. Потом пользователь раскрывает уже отфильтрованные списки контрагента и возможности и выбирает в нужном поле значение. Минус тут в не очень удобной схеме работы с лишними кликами.
    3. Разработать свой веб сервис в ELMA, который будет искать по обеим таблицам (контрагентов и возможностей) и возвращать в ответ объединенную коллекцию значений, удовлетворяющих условиям фильтрации в формате например json. На форме нужно будет создать кастомную панель с разметкой Razor. В ней написать свой визуальный компонент на java script с текстовым полем, который изменению этого поля будет отправлять запросы с введенным текстом нашему веб сервису, получать выборку, и отображать ее пользователю в виде выпадающего списка. Выбранное значение нужно будет сохранять в дополнительном текстовом поле, которое нужно будет добавить в контекст процесса. Потом после выполнения задачи в сценарии процесса парсить записанное в текстовое поле значение и переносить его в соответствующее поле выбора контрагента или возможности. Минус тут в большой сложности и трудоемкости данного решения.
    Как реализовывать все эти варианты можно найти в базе знаний.
     
  3. lyashek.s

    lyashek.s New Member

    Думаю, что 3 вариант с сервисом основанным на процессе ЭЛМА будет работать медленно. Нужно еще и внешний сервис разрабатывать.
     
  4. pushkarev

    pushkarev Active Member

    Поясню про 3 вариант, я имел ввиду не запуск процесса через веб сервис, а именно реализовать свой веб сервис.
    Но я сейчас подумал и понял, что можно свой веб сервис не писать, а воспользоваться ELMA web API. Просто делать 2 запроса c помощью java script, из справочника контрагентов и справочника лидов, в ответ элма вернет выборки и от туда и от туда, и потом просто на клиентской части ответы нужно будет склеить в единый список.
    Работать это будет медленнее чем выбор из одного справочника, т.к. будет выполняться 2 запроса, а не один, но без создания доп. справочника быстрее не получится сделать. Думаю что скорость выбора будет раза в 2 медленнее чем выборка из одного справочника.
     

Поделиться: