Всем доброго времени суток.
Версия 7.9 sales.
Задача следующая: на странице E-mail есть справочник выбора адреса "Кому". Также на странице есть колонка, связывающая с некоторым контрагентом. В общем случае требуется, чтобы при выборе адреса email были доступны только адреса контактов установленного контрагента.
Как я понимаю, фильтр устанавливается в методе getLookupConfig в схеме EmailPageV2, а точнее, в return:
config: {
entitySchemaName: "VwRecepientEmail",
columnName: columnName,
columns: ["ContactId"],
filters: Terrasoft.createColumnIsNotNullFilter("ContactId"),
multiSelect: true
},
callback: callback
};
Вытащить список контактов можно запросом. Далее следует сформировать массив id, и по идее скормить его параметру filters в конфиге..
Но если я задаю например вместо Terrasoft.createColumnIsNotNullFilter("ContactId") задаю функцию с filterGroup таким образом (нашёл на форуме), для примера подставил пока хардкодные idшники:
var idList = ["171fbe60-eafc-4713-85eb-7ad92aa2e9e2","8ec32762-286f-477c-a599-2c4184bab8d9"];
var filterGroup = new Terrasoft.createFilterGroup();
var filterById = Terrasoft.createColumnInFilterWithParameters("ContactId", idList);
filterById.comparisonType = Terrasoft.ComparisonType.EQUAL;
filterGroup.add("filterById", filterById);
return filterGroup;
},
То справочник вообще не открывается, а в консоль вываливается ошибка (см. скрин).
Возможно ли реализовать такой фильтр, и если да - то как правильно это сделать?
Нравится
Попробуйте так:
[javascript]
define("EmailPageV2", ["BusinessRuleModule"],
function(BusinessRuleModule) {
return {
entitySchemaName: "Activity",
methods: {
getLookupConfig: function(columnName) {
var scope = this;
var callback = function(args) {
scope.onLookupSelected(args);
};
return {
config: {
entitySchemaName: "VwRecepientEmail",
columnName: columnName,
columns: ["ContactId"],
filters: this.returnNewFilter(),
multiSelect: true
},
callback: callback
};
},
returnNewFilter: function() {
var idList = ["410006e1-ca4e-4502-a9ec-e54d922d2c00", "e7d525fb-88ee-4947-94cc-d013e85d2f79"];
var filterGroup = new Terrasoft.createFilterGroup();
var filterById = Terrasoft.createColumnInFilterWithParameters("ContactId", idList);
filterById.comparisonType = Terrasoft.ComparisonType.EQUAL;
filterGroup.add("filterById", filterById);
return filterGroup;
}
},
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[],/**SCHEMA_DIFF*/
rules: {
}
};
});
[/javascript]