Вопрос

Фильтрация в атрибутах

Всем доброго времени суток! Подскажите как отфильтровать значения в атрибуте, атрибут типа справочник
 В ActionDashBoard есть поле - http://prntscr.com/j49u8q
Реализовано оно следующим способом - http://prntscr.com/j49v2d, задал на данный атрибут фильтрацию, но она не срабатывает. Подскажите как реализовать фильтрацию данного атрибута?
пробовал через правила так же не работает.

Что делаю не так?
 

Заранее спасибо.

У меня такой же вопрос

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

var countryId = this.get("Country") - Вы здесь получаете не айдишник, а объект. попробуйте в самом фильтре дописать - countryId.value

Alex Zaslavsky,

Данный атрибут у меня текст я заполняю его следующим образом:
"Country": {
                        "dataValueType": Terrasoft.DataValueType.TEXT,
                        "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                        "value": ""
                    }
getCurrentContactCountry: function () {
                        var currentContactId = Terrasoft.SysValue.CURRENT_USER_CONTACT.value;
                        var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
                            rootSchemaName: "Contact"
                        });
                        esq.addColumn("Country", "CountryId");
                        esq.getEntity(currentContactId, function(result) {
                            if (!result.success) {
                                this.showInformationDialog(Resources.localizableStrings.AbCurrentUserCountryError);
                                return;
                            }
                            var country = result.entity.get("CountryId");
                            if(country!== null || country!== undefined) {
                                this.set("Country", country.value);
                            }
                        },this)
                    }
У меня проблема в другом в функцию фильтрации даже и не заходит

Я не силен в этом, но попробуйте вместо - 

"filters": [

function()

написать - 

filter: function()

я, к примеру, у себя в лиде вот таким образом фильтрую поле "Партнер"

Alex Zaslavsky,​​​​​​

Благодарю. Подскажите, а UsrSourcePartner определен у Вас в лиде? Мой атрибут не определен в моем объекте. Я ссылаюсь на другой объект. Данное поле грубо говоря у меня одноразовое, достал id и передал на сервис. Может не срабатывать фильтрация если нет связи основного объекта с атрибутом?

Нигрескул Алексей,

Да, это определенное поле "Партнер" (справочник Контрагенты).

По второму вопросу не подскажу, не сталкивался.

Коллеги нужна помощь, не работает фильтрация в атрибутах. Дополнительная информация клиентский модуль в котором реализую данный функционал, наследуется от BaseMessagePublisherPage ( MessagePublisher ), Может из-за этого не работать фильтрация?

Нигрескул Алексей пишет:
Коллеги нужна помощь, не работает фильтрация в атрибутах

Спрашивали - помогаю.
TLDR: террасофт факапнулся. В очередной раз. Убирите ContentType.ENUM. 

Теперь подробно (тестил на CallMessagePublisherPage. У вас я так понимаю аналог, ну да не важно):
1. Сделал фильтр, запустил, контакты отфильтровались

2. Раскомментировал contentType. ВНЕЗАПНО сортировка перестала работать.

3. Нет. Тот факт, что колонка виртуальная никак не влияет. тестил.

В итоге: я бы посоветовал посмотреть что творится в функции loadLookupData или др. функции которую, возможно, запускает enum. Честно говоря, устал воевать с ветряными мельницами. Сначала редактируемый реестр испоганили, теперь вот это...

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

Благодарю! Проверим.

Нигрескул Алексей пишет:
Благодарю! Проверим.

Я тут вспомнил, что уже сталкивался с таким поведением) BaseMessagePublisherPage не наследуется от BasePageV2, и из BasePageV2 не вызывается getLookupQuery. Чтобы исправить поведение ENUM-ов придётся ручками перекопировать функцию (и все вложеные в неё) на вашу страницу.

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

Благодарю! Все получилось! Так же сделал при добавлении нового элемента в маркетинговой кампании  - 

http://prntscr.com/j5wl4q
Работает - УРА!))

 

Войдите или зарегистрируйтесь, чтобы комментировать