Всем доброго времени суток. Версия 7.10.
На странице активностей есть маленький фильтр поиска по участникам Активности.
Я хочу его немного переделать, чтобы в появляющемся по клику на него окне справочника были доступны только контакты, указанные как сотрудники в колонке тип, вместо того Terrasoft.createColumnIsNotNullFilter('[SysAdminUnit:Contact].Id'), который там сейчас стоит. Насколько я понимаю, свойства этого блока указываются внутри функции initFixedFiltersConfig в схеме ActivitySectionV2. Переопределил схему, и заменил функцию, где указал вот такое свойство:
{ name: "Owner", caption: this.get("Resources.Strings.OwnerFilterCaption"), addOwnerCaption: this.get("Resources.Strings.AddEmployeeFilterCaption"), hint: this.get("Resources.Strings.SelectEmployeeFilterHint"), columnName: "Owner", defValue: this.Terrasoft.SysValue.CURRENT_USER_CONTACT, // dataValueType: this.Terrasoft.DataValueType.LOOKUP, filters: [ function() { var filterGroup = Ext.create("Terrasoft.FilterGroup"); filterGroup.add("OnlyCustomers", this.Terrasoft.createColumnFilterWithParameter( this.Terrasoft.ComparisonType.EQUAL, "Type", "60733efc-f36b-1410-a883-16d83cab0980")); return filterGroup; } ], appendFilter: function(filterInfo) { /.../ } }
Но теперь в фильтре показываются все контакты, без ограничений. Как правильно задать условие?
Нравится
Здравствуйте Денис,
Да, изменения нужно было вносить в initFixedFiltersConfig метод, но замещать у фильтра свойство "filter", проставив в него кстомный метод, который возвращает фильтр нужного вида.
Изменения отличные от оригинального initFixedFiltersConfig:
результат:
Вся замещающая схема:
define("ActivitySectionV2", ["terrasoft", "ConfigurationConstants"], function(Terrasoft, ConfigurationConstants) { return { entitySchemaName: "Activity", messages: { }, mixins: { }, attributes: { }, methods: { initFixedFiltersConfig: function() { var filterGroup = Ext.create("Terrasoft.FilterGroup"); filterGroup.add("OnlyCustomers", this.Terrasoft.createColumnFilterWithParameter( this.Terrasoft.ComparisonType.EQUAL, "Type", "60733efc-f36b-1410-a883-16d83cab0980")); var myOwnerFilter = function OwnerFilter() { return filterGroup; }; var fixedFilterConfig = { entitySchema: this.entitySchema, filters: [ { name: "PeriodFilter", caption: this.get("Resources.Strings.PeriodFilterCaption"), dataValueType: this.Terrasoft.DataValueType.DATE, startDate: { columnName: "StartDate", defValue: this.Terrasoft.startOfWeek(new Date()) }, dueDate: { columnName: "DueDate", defValue: this.Terrasoft.endOfWeek(new Date()) } }, { name: "Owner", caption: this.get("Resources.Strings.OwnerFilterCaption"), addOwnerCaption: this.get("Resources.Strings.AddEmployeeFilterCaption"), hint: this.get("Resources.Strings.SelectEmployeeFilterHint"), columnName: "Owner", defValue: this.Terrasoft.SysValue.CURRENT_USER_CONTACT, dataValueType: this.Terrasoft.DataValueType.LOOKUP, filter: myOwnerFilter, appendFilter: function(filterInfo) { var confirmedFilter; if (filterInfo.value && filterInfo.value.length > 0) { var inviteResponse = ConfigurationConstants.Activity.ParticipantInviteResponse; confirmedFilter = new Terrasoft.createFilterGroup(); confirmedFilter.add("InviteResponseFilter", Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.NOT_EQUAL, "[ActivityParticipant:Activity].InviteResponse", inviteResponse.Declined, Terrasoft.DataValueType.GUID)); confirmedFilter.add("ActivityParticipantFilter", Terrasoft.createColumnInFilterWithParameters( "[ActivityParticipant:Activity].Participant", filterInfo.value)); } return confirmedFilter; } } ] }; this.set("FixedFilterConfig", fixedFilterConfig); } }, diff: /**SCHEMA_DIFF*/[ ]/**SCHEMA_DIFF*/ }; } );
Илья, здравствуйте! Спасибо за решение, помогло.
Задам тут же ещё один вопрос: если мне нужен фильтр уже для выбранных активностей, то я могу изменения вносить уже в confirmedFilter? К примеру, в лукапе вывести не список контактов, а список типов, после чего задать: confirmedFilter.add("ActivityParticipantFilter", Terrasoft.createColumnInFilterWithParameters("Owner.Type", filterInfo.value); чтобы вывести задачи всех сотрудников