Вопрос

Фильтр справочного поля(несколько условий)?

Добрый день, подскажите как вывести в список значения удовлетворяющие условиям.

Т.е нужно вывести всего две записи из списка

 //Создаем фильтр
var contactFiler = Terrasoft.createFilterGroup();
contactFiler.name = "contactFiler";
contactFiler.logicalComparisonTypes = Terrasoft.LogicalOperatorType.OR;
 
var filter1 = Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Name","Контрагент уже в системе");
var filter2 = Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Name","Некорректные данные");
                                                                 
                                                         
contactFiler.addItem(filter1);
contactFiler.addItem(filter2);

По отладчику видно , что в коллекцию добавляется два элемента, но список пуст

Нравится

7 комментариев

Роман, а вы этот фильтр (contactFiler) где и как используете?

contactFiler.logicalComparisonTypes = Terrasoft.LogicalOperatorType.OR;

"Неправильно ты, дядя Фёдор, бутерброд ешь"...

Попробуйте 

contactFilter.setLogicalOperation(1);

 

Варфоломеев Данила,

После вставки этого метода,пишет contactFilter  - undefined

Толмачев Дмитрий Юрьевич,

 

var config = {
              entitySchemaName: "UsrLooseReason",
              multiSelect: false,
              columns: ["Name","Description"],
              hideActions: false,//Скрываем кнопку "Добавить"
              filters: contactFiler
             };
 this.openLookup(config, function (arg) {}, this);

 

Последовский Роман пишет:

После вставки этого метода,пишет contactFilter  - undefined

 Потому что у вас не contactFilter, а contactFiler. Исправляюсь:

contactFiler.setLogicalOperation(1);

 

Варфоломеев Данила,

Огромное спасибо!!! Все заработало

Роман, здравствуйте!

Согласно Вашему коду у Вас используется параметр logicalComparisonTypes.

Он сравнивает строковые значения («Контрагент уже в системе» = «Некорректные данные»). В результате фильтр возвращает 0.

Нужно вместо logicalComparisonTypes использовать logicalOperation, чтобы использовать условие И/ИЛИ.

 

Параметр logicalOperation описан на SDK - https://academy.terrasoft.ru/documents/technic-sdk/7-11/rabota-s-filtrami-entityschemaquery,

Также на https://academy.terrasoft.ru/documents/technic-sdk/7-11/primenenie-filtracii-k-spravochnym-polyam можете увидеть, что "По умолчанию фильтры в коллекции объединяются с использованием логической операции AND. Если необходимо применить операцию OR, ее нужно указать явно в свойстве logicalOperation объекта Terrasoft.FilterGroup.".

 

Параметр logicalComparisonTypes на SDK не описан.

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