Мобильное приложение. Фиьтрация записей в реестрах, справочных полях. Режимы онлайн/оффлайн
Всем доброго времени суток!
Столкнулся с такой проблемой. Есть орг. роли в которых есть поле Область/Штат, заполнено неким значением, в эту роль входит пользователь Иванов. При работе с моб. приложения под этим пользователем необходимо отображать только те контакты у которых на детали есть адрес с полем Область/Штат соответсвующий полю Область/Штат орг. роли.
Реализовал функцию которая считывает роли данного пользователя и заносит в глобальную переменную.
Далее добавил фильтр в реестре:
Terrasoft.sdk.Module.addFilter("Contact", Ext.create("Terrasoft.Filter", { type: Terrasoft.FilterTypes.Group, logicalOperation: Terrasoft.FilterLogicalOperations.Or, subfilters: Terrasoft.WaContactFiltersByRegionInCurrentUserRole() })); Terrasoft.WaContactFiltersByRegionInCurrentUserRole = function () { var subfilters = []; for (var i = 0; i < Terrasoft.WaRoleRegions.length; i++) { subfilters.push({property:"[ContactAddress:Contact:Id].Region", value:Terrasoft.WaRoleRegions[i]}); } return subfilters; };
В оффлайн режиме фильтрует, в онлайн нет, иногда выдает ошибки.
Так вот собственно вопрос, с чем это может быть связанно и как с этим бороться?
Заранее благодарен!
Нравится
Мне кажется, такое вообще лучше делать не программным скрытием, а раздачей прав доступа на чтение на записи в разделе контактов. Логику реализовать на стороне БП на событиях добавления и изменения объектов адреса и роли. В итоге в мобильную версию, хоть онлайн, хоть оффлайн, будет подтягивать только те, что ему положено видеть.
Зверев Александр,
Здравствуйте! Согласен, изначально так и было, но в стандартном реестре записи не отображаются пользователи видят следующее -
http://prntscr.com/o6ypsp. Пользователям не нравится такой вид, поэтому задавал фильтр по ответсвенному - фильтровало, но потом как оказалось не подходит по бизнес логике фильтрации, пришлось придумать такой костыль, вот и выплыло следующее в оффе фильрует в онлайн нет - http://prntscr.com/o6yr3i
Как с таким бороться?
Вообще, это стандартное поведение с 14 версии, отображает сначала пустой список, а потом — последние посещённые 10 записей:
Во всех разделах мобильного приложения реализован механизм работы с недавними записями. При входе в раздел, если для него не установлены другие фильтры, отображаются последние 10 записей, с которыми вы работали. Эти записи доступны независимо от наличия сети.
Зверев Александр,
это понятно. Однако помимо реестра нужно ещё накладывать фильтр в справочных полях Контакт что бы фильтровало какие описано выше))
Разобрался чего не фильтровало, я в фильтр передавал объект - https://prnt.sc/o7a23e
перестроил фильтрацию по Id и все заработало как в оффлайн так и в онлайн режиме