BPMonline 7.7.0.2326
Создала новое поле справочник UsrAgent (выбор из контактов). Возможно ли настроить фильтрацию этого поля в мобильном приложении, чтобы выбирались только контакты нашей компании с типом агент?
И в какой схеме это реализовывать?
Нравится
Здравствуте, Виктория!
Для решения данной задачи можно использовать бизнес правило фильтрации для мобильного приложения.
Пример правила фильтрации, в котором поле "Контакт" фильтруется по колонке "Контрагент" в разделе "Счета".
Terrasoft.sdk.Model.addBusinessRule("Invoice", { ruleType: Terrasoft.RuleTypes.Filtration, events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged], triggeredByColumns: ["Account"], filteredColumn: "Contact", filters: Ext.create("Terrasoft.Filter", { property: "Account" }) });
Здравствуте, Виктория!
Для решения данной задачи можно использовать бизнес правило фильтрации для мобильного приложения.
Пример правила фильтрации, в котором поле "Контакт" фильтруется по колонке "Контрагент" в разделе "Счета".
Terrasoft.sdk.Model.addBusinessRule("Invoice", { ruleType: Terrasoft.RuleTypes.Filtration, events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged], triggeredByColumns: ["Account"], filteredColumn: "Contact", filters: Ext.create("Terrasoft.Filter", { property: "Account" }) });
Здравствуйте!
Не поняла, где именно это реализовывать.
Я создала через мастер мобильного приложения свое рабочее место "Агенты" и поместила туда раздел Лиды.
В Лиде есть новое поле справочник UsrAgent (выбор из контактов). Хотела бы его отфильтровать, чтобы при выборе из справочника были только контакты нашей компании с типом агент, наподобие ответственного в любых карточка BPMonline.
Но обратила внимания, что поле ответственный, например, в документе в мобильном приложении не фильтруется (хотела посмотреть пример реализации).
Скажите, возможно ли фильтровать поле в мобильном приложении?
и в какой именно схеме нужно делать изменения?
Начала разбираться в мобильном приложении, заметила, что обязательность и фильтрация полей написаны для раздела активности в MobileActivityModelConfig (я так поняла, что это модуль)
Мне нужно сделать фильтрация для полей раздела Лид. Нашла MobileLeadModelConfig (но написана она, как исходный код).
Заместить я ее не могу, так как нет в списке замещения и новую создать точно такую же не могу, потому что пользовательские схемы должны начинаться с Usr.
И как мне быть? Получается, что это ошибка системы? Как выйти из этой ситуации?
Добрый день, Виктория
Для решения Вашей задачи необходимо:
- Желательно создать отдельную схему с типом «Модуль»
И назвать ее так «UsrMobileLeadModelConfig» (чтоб она соответствовала базовым стилям именования файлов). - Внутри нее поместить такой код:
Terrasoft.sdk.Model.addBusinessRule("Lead", { name: "UsrMobileLeadUsrAgentFilter", ruleType: Terrasoft.RuleTypes.Filtration, events: [Terrasoft.BusinessRuleEvents.Load], triggeredByColumns: ["UsrAgent"], filters: Ext.create("Terrasoft.Filter", { name: "filterName", type: Terrasoft.FilterTypes.Group, logicalOperation: Terrasoft.FilterLogicalOperations.And, subfilters: [ { property: "Account", value: 'айдишникнашейкомпании' }, { property: "Type", value: 'айдишниктипаконтактаагент' } ] }) });
- Затем эту схему необходимо подключить в манифесте:
- Создаем/Открываем схему UsrMobileApplicationManifestDefaultWorkplace
- Добавляем в блок Models такой код:"Models": { "Lead": { "PagesExtensions": ["UsrMobileLeadModelConfig"] } }
- Сохраняем
- Синхронизируемся на девайсе
Здравствуйте!
Весь день пробую код, который вы написали.
Заметила, что если в блоке "Models" добавить в "PageExtensions", то при синхронизации возникает ошибка, поэтому (по примеру в коде) добавила в "ModelExtensions" и проверила на обязательности этого поля, все срабатывает.
Terrasoft.sdk.Model.addBusinessRule('Lead', {
ruleType: Terrasoft.RuleTypes.Requirement,
triggeredByColumns: ['UsrAgent']
});
Но фильтрация не работает, пустой список, пробовала и просто по Account и по двум, пустой список и все.
Почему не работает фильтрация?
Почему пустой список хотя в sql с этими id есть 2 записи и в приложении на компе тоже 2 записи, а в мобильном приложении пусто?
Значение name: "filterName" должно быть любым или определенным? Или в чем-то другом причина?
Получилось настроить фильтрацию по текстовому полю:
Terrasoft.sdk.Model.addBusinessRule("Lead", {
ruleType: Terrasoft.RuleTypes.Filtration,
triggeredByColumns: ["UsrAgent"],
filters: Ext.create("Terrasoft.Filter", {
compareType: Terrasoft.ComparisonTypes.Equal,
property: "Name",
value: "Агент 1",
name: "test123"
})
});
Возможно, чтобы настроить фильтрацию по компании (это же справочник) нужно указать дополнительные свойства?
1)
"Чуплыгина Виктория Викторовна" написал:"PageExtensions", то при синхронизации возникает ошибка
Для этого параметра значение должно быть массивом, возможно Вы пропустили квадратные скобки.
2) Проверьте, что значения Id-шников указаны в нижнем регистре
{ property: "Account", value: "e308b781-3c5b-4ecb-89ef-5c1ed4da488e" },
Здравствуйте!
1) Если получилось настроить обязательность и фильтрацию по текстовому полю, то, мне кажется, подключила я все верно.
Квадратные скобки я поставила.
2) да, в нижнем регистре.
Может, все-таки для фильтрации по справочнику нужно указать что-то еще?
Никак не могу понять, что именно.
Terrasoft.sdk.Model.addBusinessRule("Activity", {
ruleType: Terrasoft.RuleTypes.Filtration,
events: [Terrasoft.BusinessRuleEvents.Load],
triggeredByColumns: ["Owner"],
filters: Ext.create("Terrasoft.Filter", {
property: "Active",
modelName: "SysAdminUnit",
assocProperty: "Contact",
operation: Terrasoft.FilterOperations.Any,
name: "ActivityContact_SysAdminUnit_Filtration",
value: true
})
});
Фильтрация поля ответственный в разделе активности?
что означают свойства modelName и assocProperty?
modelName, наверно, там, где искать property?
Да, это она.
modelName - имя связанной таблицы.
assocProperty - имя колонки по которой связанная таблица ссылается на фильтруемую таблицу.
Это не обычный фильтр, а фильтр по обратным связям.
Он означает следующее: Берем всех контактов для которых существует запись в таблице SysAdminUnit которая ссылается на контакта через свое поле SysAdminUnit.Contact
Значение name: "filterName" может быть любым
Указанный пример должен работать.
Попробуйте еще такой пример:
Сначала с NotEqual
Terrasoft.sdk.Model.addBusinessRule("Lead", { ruleType: Terrasoft.RuleTypes.Filtration, triggeredByColumns: ["UsrAgent"], filters: Ext.create("Terrasoft.Filter", { compareType: Terrasoft.ComparisonTypes.NotEqual, property: "Id", value: "81d05412-d90c-440a-831a-03fc52489fa5", name: "name1" }) });
а затем с Equal
Похоже что данные по колонке Тип не забираются для таблицы "Контакт"
Добавьте в манифест колонку тип, примерно так:
"ModelDataImportConfig": [ { "Name": "Contact", "SyncColumns": [ "Name", "Account", "Department", "JobTitle", "Photo", "Type" ] } ]
После чего лучше очистить кеш и пересинхронизироваться
Спасибо Вам большое!!!!!
Действительно данные по колонкам не забирались для таблицы контакт!