Кастомизация строки поиска (Command line)

Всем привет!

Есть потребность расширить функциональность строки поиска (там где написано Что я могу для вас сделать) для поиска информации по другим сущностям (почта, адреса и т.п.). Кто-нибудь сталкивался с похожей задачей или может быть есть какие-то стандартные инструменты расширения функциональности?

Заранее спасибо за ответы.

Нравится

2 комментария
Лучший ответ

Поставьте точку останова в методе getFilters в схеме BaseDataView, увидите колстек выполнения, как идет фильтрация.

Лучше будет наверное, для частых поисков например по Email, добавить новое поле в секцию раздела. Затем вы можете получить значение этого поля и в переопределенном методе getFilters нужного вам раздела, дополнять фильтры как вам нужно. При наличии например "@" в введенном значении делаете например такой фильтр:

 

 getFilters: function() {
	var filterGroup = this.callParent(arguments);
	filterGroup.logicalOperation = Terrasoft.LogicalOperatorType.OR;
	var emailFilter = //получаем введенное значение в новое поле;
	if (emailFilter && emailFilter.includes("@")) {//либо сразу делать маску почты и проверку по маске
		filterGroup.add("EmailFilter", this.Terrasoft.createColumnFilterWithParameter(
			this.Terrasoft.ComparisonType.CONTAIN, "[ContactCommunication:Contact].Number".substring(), emailFilter));
	}
	return filterGroup;
},

 

Поставьте точку останова в методе getFilters в схеме BaseDataView, увидите колстек выполнения, как идет фильтрация.

Лучше будет наверное, для частых поисков например по Email, добавить новое поле в секцию раздела. Затем вы можете получить значение этого поля и в переопределенном методе getFilters нужного вам раздела, дополнять фильтры как вам нужно. При наличии например "@" в введенном значении делаете например такой фильтр:

 

 getFilters: function() {
	var filterGroup = this.callParent(arguments);
	filterGroup.logicalOperation = Terrasoft.LogicalOperatorType.OR;
	var emailFilter = //получаем введенное значение в новое поле;
	if (emailFilter && emailFilter.includes("@")) {//либо сразу делать маску почты и проверку по маске
		filterGroup.add("EmailFilter", this.Terrasoft.createColumnFilterWithParameter(
			this.Terrasoft.ComparisonType.CONTAIN, "[ContactCommunication:Contact].Number".substring(), emailFilter));
	}
	return filterGroup;
},

 

Показать все комментарии