Всем доброго времени суток.
Версия 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;
},
То справочник вообще не открывается, а в консоль вываливается ошибка (см. скрин).
Возможно ли реализовать такой фильтр, и если да - то как правильно это сделать?
Нравится
Попробуйте так:
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: { } }; });