Как отображать записи по фильтру

Добрый день!

Работаю в разделе Обращения. Необходимо: в случае добавления Подчиненных обращений, отображались только обращения которые соответствуют определенному условию (Категория == Инцидент и т.п.).

Подскажите куда вносить изменения и пример кода.

Нравится

6 комментариев

Добрый день.

 

Посмотрите эту статью по множественному добавлению записей в деталь.

 

Обратите внимание на функцию openLookupWithMultiSelect в миксине LookupMultiAddMixin.

 

В Вашей карточке обращения Вам нужно переопределить метод getAdditionalLookupFilters, указав в нём нужные фильтры.

 

Либо можно реализовать функциональность фильтрации данных по аналогии с примером на академии, но без использования миксина LookupMultiAddMixin.

 

Также на Академии есть пост, в котором подробно рассматривается этот вопрос.

Алла Савельева,

Разобрался. Спасибо!

Pavel Litvinovich,

 

Рада была помочь)

Все-таки возникла проблема.

Фильтры работают нормально, записи отображаются нужные. Но при попытке добавить запись на деталь ошибка: 

Работаю в Обращениях. Данную логику применяю в случае добавления на деталь Подчиненные обращения новой записи. Деталь Подчиненные обращения читает данные из объекта Обращения.

Вот мой код:

define("CaseChildCaseDetail", ["LookupMultiAddMixin"], function() {
	return {
		entitySchemaName: "Case",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
		mixins: {			
			// Подключение миксина к схеме.
			LookupMultiAddMixin: "Terrasoft.LookupMultiAddMixin"
		},
		methods: {
			init: function() {
                this.callParent(arguments);
				this.mixins.LookupMultiAddMixin.init.call(this);
            },
			getAddRecordButtonVisible: function() {
                //Отображать кнопку добавления если деталь развернута, даже если для детали не реализована страница записи.
                return this.getToolsVisible();
            },
			// Переопределение базового метода.
            // Обработчик события сохранения страницы редактирования детали.
            onCardSaved: function() {
                // Открывает справочное окно с множественным выбором записей.
                this.openLookupWithMultiSelect();
            },
			// Переопределение базового метода добавления записи на деталь.
			addRecord: function() {
				// Открывает справочное окно с множественным выбором записей.
				this.openLookupWithMultiSelect(true);
			},
			// Метод, возвращающий конфигурационный объект для справочного окна.
			getMultiSelectLookupConfig: function() {
				return {
					rootEntitySchemaName: "Case",
					rootColumnName: "Id",
					relatedEntitySchemaName: "Case",
					relatedColumnName: "Id"
				};
			},
			getAdditionalLookupFilters: function() {
				//Отображать только записи Инцидент И НЕ массовый инцидент
				var idCategoryIncident = "1b0bc159-150a-e111-a31b-00155d04c01d";//Категория Инцидент
				var filterGroup = new this.Terrasoft.createFilterGroup();
				filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
				filterGroup.add("OneFilter", this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "OmnMassIncident", false));//Инцидент НЕ массовый
				filterGroup.add("TwoFilter", this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "Category", idCategoryIncident));//Категория Инцидент
				return filterGroup;
			},
		}
	};
});

Подскажите что я делаю не правильно.

Pavel Litvinovich,

Для понимания причин проблемы необходимо проводить дэбаг, только после его результатов уже можно что-то говорить. Однако, на первый взгляд, проблема может крыться в методе 

getMultiSelectLookupConfig, стоит проверить, корректно ли указаны значения rootColumnName и relatedColumnName. В вашем случае обращения связаны колонкой ParentCase, но у вас в двух значениях id.

Спасибо! Сделал немного по-другому.

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