scope = this;

                var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

                    rootSchemaName: "PTLimitationsLevelSpecificationSupport"

                });

                esq.addColumn("PtSupportLevel");     

                esq.addColumn("PtProduct");          

                esq.filters.add("supportLevelFilter",esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "PtSupportLevel", scope.get("PtSupportLevel")));


   

 

Здравствуйте! Нужно чтобы выбирался нужный "уровень поддержки" по параметру и продукты либо равный параметру либо где значение не заполнено.          

 

 

 

 

Нравится

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

Использую фильтр IN (createColumnInFilterWithParameters), но не могу к нему добавить проверку на пустое поле. Если ставлю null он берет все значения.

Добрый день!

Если вы хотите проверять поле на null, то необходимо использовать Terrasoft.ComparisonType.IS_NULL.

Рекомендую ознакомиться с данным примером, в нём вы найдете код применения фильтров к запросу esq.

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

Добрый день. 

Есть задача создать единую ленту для нескольких объектов.

Для обработки обращения создаются наряды. В объекте наряда есть поле для ссылки на обращение. По этомуполю связываются обращение и его наряды. 

Необходимо сделать ленту единой для записей, которых объединяет номер обращения. 

В объекте Сообщение/Комментарий есть поле Экземпляр объекта, в него можно было бы прописать ссылку на обращение, но только где это можно сделать?

Нравится

1 комментарий

Наталья, добрый день!

Данный кейс можно решить с помощью бизнес-процесса. 





Если по Вашим условиям обращение связывается с нарядами и в обратную сторону - наряды связываются с обращением, то процесс достаточно простой.



В своем примере я использовал привязку контакта и обращения.



1. Стартовый сигнал завязывается на создание записи в объекте "Сообщение/комментарий", с условием, что Схема = uid обращения ИЛИ Uid контакта.



2. Далее идет вычитка этого сообщения и два условных потока. Если Схема = Наряд, мы идем по ветке, где создаем запись в карточке обращения. И наоборот, если схема = обращение, создаем запись в карточке наряда.



 

 

3. Вычитываем запись, где было добавлено сообщение.

 



 

4. Добавляем запись в объект "Сообщение/комментарий". Все колонки берем из оригинальной записи, кроме колонки "Схема", "Экземпляр объекта" и "Родительское сообщение".

 



 

Схему заполняем Uid схемы, в которую добавляем запись.

Экземпляр объекта указываем id записи, куда добавить сообщение, его мы берем на пункте 3.

Родительское сообщение оставляем пустым





Его можно усовершенствовать, добавив выходы из процесса, если нет нужной нам связи у записи. Единственный нюанс этого процесса - не перенесутся комментарии к сообщению. То есть нужно каждый раз писать новое сообщение в ленте. 



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

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

Мне нужен фильтр в C# коде

Что-то вроде:

var activity = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Activity"); //Активность
 
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Equal, "Type",  "id типа")); // тип активности - email
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Recepient",  "my_email@gmail.com")); // кому-мне
 
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_dad_email@gmail.com")); // от отца
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_mum_email@gmail.com")); // от матери
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_sister_email@gmail.com")); // от сестры
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_brother_email@gmail.com")); // от брата



нужен такой фильтр:

тип активности-email && кому-мне && (от отца || от матери || от сестры || от брата)



Как добавить логические операторы чтобы получить такой фильтр?

Или может быть надо по другому?

Нравится

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

 Что то типо такого?

activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  new string[] { "my_dad_email@gmail.com", "my_mum_email@gmail.com", "my_sister_email@gmail.com", "my_brother_email@gmail.com"}));

Колногоров Роман Андреевич,

выдает ошибку 

Условие типа "Contain" не может содержать более одного выражения в правой части

обойтись без Contain не получиться

Попробуйте через createColumnInFilterWithParameters

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

Как кодом пишется фильтр "содержит"? Такой как на скриншотеИзображение удалено.

Чаше всего используется фильтр 

var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Country.Name", "Испания");

а как написать "содержит"?

если можно, то с примером на той же Испании и на JS и на C#

Спасибо

Нравится

7 комментариев
Лучший ответ

Terrasoft.ComparisonType.CONTAIN - содержит

Terrasoft.ComparisonType.START_WITH - начинается на

Terrasoft.ComparisonType.CONTAIN - содержит

Terrasoft.ComparisonType.START_WITH - начинается на

Трефилов Павел Сергеевич,

Благодарю

Карабаева Марина,

Добрый день.

Уточните, что Вы имеете в виду? Этот фильтр применяется для EntitySchemaQuery при формировании запроса. Более детально по ссылке.

Mykhailo Storozhuk,

Мне важно найти область кода, в которой я бы смогла сделать его замену чтоб в итоге фильтр функционировал именно в таком формате, как "содержит", а не "начинается с".

Mykhailo Storozhuk, Михаил, могли бы помочь мне в данном вопросе?

Карабаева Марина,

Вам необходимо изменить значение по умолчанию системной настройки 

StringColumnSearchComparisonType на 1. Если я Вас правильно понял, то эта сис настройка должна для всех быстрых фильтров в системе применять логику поиска "Содержит".

Mykhailo Storozhuk,

спасибо за помощь!

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