Всем доброго времени суток. Версия 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); чтобы вывести задачи всех сотрудников