Про фильтрацию поля справочника по двум критериям

Потребовалось отфильтровать список значений, отображаемых для поля справочник.
Если нужно отфильтровать записи только одного, определенного типа (например), то используем такой код после базового события Init:

Guid SomeId_1 = new Guid("...");
//Guid SomeId_2 = new Guid("...");

Page.SomeEditField.PrepareLookupFilter += delegate (object sender, LookupEditEventArgs e) {
        e.Filters.Add(new Dictionarystring, object> {
                {"comparisonType", FilterComparisonType.Equal},
                {"leftExpressionColumnPath", "Type"},
                {"useDisplayValue", false},
                {"rightExpressionParameterValues", new object[]{SomeId_1} }});
};

А вот если отфильтровать надо по двум возможным типам? Тогда как быть? FilterComparisonType.Equal не подходит... Нужно, чтобы отобразились записи типа SomeId_1 или SomeId_2.

Guid SomeId_1 = new Guid("...");
Guid SomeId_2 = new Guid("...");

Нравится

4 комментария

Разобрался сам :)

Guid SomeId_1 = new Guid("...");
Guid SomeId_2 = new Guid("...");
 
Page.SomeEditField.PrepareLookupFilter += delegate (object sender, LookupEditEventArgs e) {
        e.Filters.Add(new Dictionary<string, object> {
                {"comparisonType", FilterComparisonType.Equal},
                {"leftExpressionColumnPath", "Type"},
                {"useDisplayValue", false},
                {"rightExpressionParameterValues", new object[]{SomeId_1, SomeId_2} }});
};

Опоздала :)

Коллеги, добрый день.

Хотел бы реанимировать эту тему) в версии 7.9 подскажите, плиз, как сделать фильтрацию по двум айдишникам:

У меня есть справочник Vocabulary, в нем два айди: ID_1 и ID_2. Сейчас код фильтрует только по 1 айдишнику. Подскажите, плиз, как сделать фильтрацию по 2 и более значениям справочника

	rules: {
				"FieldToBeFiltered": {
				"FiltrationByType": {
					"ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
					"autocomplete": true,
					"autoClean": true,
					"baseAttributePatch": "Vocabulary",
					"comparisonType": Terrasoft.ComparisonType.EQUAL,
					"type": BusinessRuleModule.enums.ValueType.CONSTANT,
					"value": "ID_1"
					}
				}
			},

Дмитрий, здравствуйте!

На данный момент в 7.х такой возможности нет, но зафиксировали Ваше пожелание для рассмотрения возможной реализации в будущих версиях.

Обходные варианты:
- написать второе бизнес-правило, которое будет фильтроваться по другой колонке (не проверяли);
-с помощью filtergroup прописать бизнес-правила. На community есть множество тем на подобный запрос: http://www.community.terrasoft.ru/search/node/filtergroup

Пример (cхема «AccountPageV2», пакет «UIv2»):

emailDetailFilter: function() {
						var recordId = this.get("Id");
						var filterGroup = new this.Terrasoft.createFilterGroup();
						filterGroup.add("AccountNotNull", this.Terrasoft.createColumnIsNotNullFilter("Account"));
						filterGroup.add("AccountConnection", this.Terrasoft.createColumnFilterWithParameter(
								this.Terrasoft.ComparisonType.EQUAL, "Account", recordId));
						filterGroup.add("ActivityType", this.Terrasoft.createColumnFilterWithParameter(
								this.Terrasoft.ComparisonType.EQUAL, "Type", ConfigurationConstants.Activity.Type.Email));
						return filterGroup;
					},
Показать все комментарии