Фильтр для адреса 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 комментария

Попробуйте так:

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: {
		}
	};
});

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

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