Добрый день! Коллеги, помоги с решением проблемы.
Есть функционал работы со счетами (правда от базового там мало что осталось).
При формировании счета можно выбрать продукты. У продукта есть Название и Артикул, при этом по Названию можно искать (lookup), а по Артикулу нет (текстовое поле).
Хочу, что бы поиск оможно было осуществлять не только по Названию, но и по Артикулу. Что для этого нужно сделать?
Нравится
Здравствуйте, Андрей
Базовыми средствами приложения можно только изменить отображаемое значение в объекте и использовать другое поле, так у Вас появится возможность изменить колонку по которой проводиться поиск (но это будет только замена колонки по которой проводиться поиск, а не добавление дополнительной).
Также передал данное обращение разработчикам поддержки для дальнейшего анализа и предоставления решения.
Denys Diachenko,
Спасибо!
Правильно ли я понимаю, что в логике BPM у сущности не может быть две колонки с типом lookup? Или тут сложность в чем-то другом?
Andrey Aleksandrov пишет:
Или тут сложность в чем-то другом
По-умолчанию поиск работает по "главной" колонке, которая указывается в объекте.
Если вам надо переделать поиск по конкретно в том элементе, который у вас на скриншоте - то в принципе это сделать легко (откопать getLookupQuery, да и изменить фильтрацию)
Варфоломеев Данила,
мне нужно реализовать поиск по двум колонкам - Название и Артикул.
Если искали по названию, то автоматически заполняется артикул и наоборот
Andrey Aleksandrov пишет:
мне нужно реализовать поиск по двум колонкам - Название и Артикул.
Ох уж эти неявные описания задач...
Перефразирую (поправьте, если что не так): У вас есть деталь. На делали 2 поля: 1-lookup, ссылка на продукт, 2 - Артикул, текстовое. Задача: из текстового поля "артикул" сделать справочное (со ссылкой на продукты, но фильтрация по артикулу), и сделать заполняемость полей (артикул - продукт).
Если всё так, то вот решения:
1) Дабы не дублировать одно и то же поле, убрать поле артикул, перегрузить функцию getLookupQuery, настроить там фильтр по 2 полям.
2) Если всё-таки нужно видеть поле, то тип поля "артикул" меняем на справочник со ссылкой на продукт. Опять же перегружаем getLookupQuery, настраиваем нужную фильтрацию и список выдаваемых значений. Плюс потом надо событийные функции (через attributes) доделать, чтобы поля заполнялись по зависимостям. Или через бизнес правила.
3) Если надо оставить "артикул" в текстовом виде - то придётся дописывать подгружаемый list для элемента и кучу других обработчиков. Где-то в конфигурации уже есть SearchableTextEdit... Вообщем, лучше не стоит.
Ну и во всех вариантах придётся писать гору кода и логики.
Варфоломеев Данила пишет:
Ох уж эти неявные описания задач...
:-) давайте со стороны пользователя пойдем.
Я, как пользователь системы, должен сформировать счет (или заказ поставщику) добавив туда определенный перечень товаров. Бывает, что названия товаров отличаются в одну букву\цифру:
Сервер HP HPE DL20 Gen9 E3-1240v6 SFF 900WPerf Svr
Сервер HP HPE DL20 Gen9 ES3-1240v6 SFF 900WPerf Svr
В этом случае мне удобнее оперировать понятием Артикул товара. Но для многих товаров все же удобнее поиск по названию так что необходимо добавить возможность поиска по Артикулу из детали, а так же оставить возможность поиска по Названию.
Но в целом вы все и так правильно поняли.
Варфоломеев Данила пишет:
Ну и во всех вариантах придётся писать гору кода и логики.
Я долек от разработки, но даже у меня возникает резонный вопрос - в чем проблема искать по двум разным столбцам? У нас есть сущность Продукт, у нее несколько параметров - название, артикул, цена и тд. Для в любой БД можно это сделать.
Andrey Aleksandrov пишет:
в чем проблема искать по двум разным столбцам?
¯\_(ツ)_/¯
Я так понимаю официально это можно охарактеризовать как: "Возможность не была запланирована изначально, поэтому программно не реализована".
В одном проекте нам партнеры реализовали в поле lookup поиск контактов не только по имени, но и по его средствам связи, например.
То есть, вводим телефон, а система нам отфильтровывает список контактов с такими номерами
Потому и поиск продукта по двум полям можно сделать
Andrey Aleksandrov,
Данила правильно ответил. Нужно переопределить метод "getLookupQuery" в странице редактирования детали. Базовый метод находится в "BasePageV2", так что можно отладится и посмотреть как все работает.