Технические вопросы
7.x

Фильтр для адреса E-mail

Всем доброго времени суток.

Версия 7.9 sales.

Задача следующая: на странице E-mail есть справочник выбора адреса "Кому". Также на странице есть колонка, связывающая с некоторым контрагентом. В общем случае требуется, чтобы при выборе адреса email были доступны только адреса контактов установленного контрагента.

Как я понимаю, фильтр устанавливается в методе getLookupConfig в схеме EmailPageV2, а точнее, в return:

return {
        config: {
                entitySchemaName: "VwRecepientEmail",
                columnName: columnName,
                columns: ["ContactId"],
                filters: Terrasoft.createColumnIsNotNullFilter("ContactId"),
                multiSelect: true
        },
        callback: callback
};

Вытащить список контактов можно запросом. Далее следует сформировать массив id, и по идее скормить его параметру filters в конфиге..

Но если я задаю например вместо Terrasoft.createColumnIsNotNullFilter("ContactId") задаю функцию с filterGroup таким образом (нашёл на форуме), для примера подставил пока хардкодные idшники:

filters: function() {
         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;
},

То справочник вообще не открывается, а в консоль вываливается ошибка (см. скрин).

Возможно ли реализовать такой фильтр, и если да - то как правильно это сделать?

Нравится

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

Попробуйте так:
[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]

Максим, спасибо, помогло.

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