Добрый день!
Появилась следующая задача: фильтровать список ответственных, когда выбирается группа ответственных. Также подставлять группу, при выборе ответственного. Вроде как такая логика заложена в базовую конфигурацию onPrepareOwner, но не получается разобраться в ней.
Нравится
Алла Савельева,
Было в сервисе в CasePage (Case)
а вы код метода смотрели? Просто сделайте по аналогии там вроде есть все что вам нужно.
Сергей,
Есть 2 вопроса:
1. Что такое группа ответственных - это группа пользователей? Объясните на примере.
2. В какой схеме реализована эта логика (onPrepareOwner) и какие именно вопросы есть по её реализации?
Алла Савельева,
Было в сервисе в CasePage (Case)
а вы код метода смотрели? Просто сделайте по аналогии там вроде есть все что вам нужно.
Алла Савельева,
Группа ответственных - это группа пользователей (подразделение в оргструктуре). В ней находятся пользователи и они становятся ответственными.
Григорий Чех,
Да, метод смотрел, но я так понимаю там не он один нужен. Ну и сама суть - метод же именно то что мне нужно, но при копировании его просто так - чуда не происходит
Фильтрация может настраиваться как пользовательскими средствами, через бизнес-правила, так и кодом. Подробнее описано тут.
Быстров Сергей,
Есть ли в консоли какие-то ошибки при попытке проверить эту функциональность?
И приведите, пожалуйста, пример своего кода.
Алла Савельева,
Пытаюсь действовать по примеру:
"attributes": { // Колонка модели представления. "Owner": { // Тип данных атрибута. "dataValueType": Terrasoft.DataValueType.LOOKUP, // Конфигурационный объект атрибута типа LOOKUP. "lookupListConfig": { // Массив фильтров, применяемых к запросу для формирования данных поля-справочника. "filters": [ function() { var group = this.get("Group"); var filterGroup = Ext.create("Terrasoft.FilterGroup"); // Добавление фильтра "IsUser" в результирующую коллекцию фильтров. // Выбирает все записи из корневой схемы Contact, к которой присоединена // колонка Id из схемы SysAdminUnit, для которых Id не равен null. filterGroup.add("IsUser", Terrasoft.createColumnIsNotNullFilter("[SysAdminUnit:Contact].Id")); // Добавление фильтра "InGroup" в результирующую коллекцию фильтров. // Выбирает все записи из корневой схемы Contact, к которой присоединена // колонка из схемы SysAdminUnitRole. filterGroup.add("InGroup", Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "[SysAdminUnitInRole:SysAdminUnit:Contact].SysAdminUnitRoleID", group)); return filterGroup; } ] } }
Я уверен на 99% что так делать нельзя, но уже не представляю как связать SysAdminUnit между собой, чтобы происходила фильтрация. Неужели никто с такой задачей не сталкивался?
Для начала можно написать обычный SQL-запрос, который получает интересующие значения. А потом думать, как его перевести на язык ESQ с фильтрами или бизнес-правил.
"Owner": { "dataValueType": Terrasoft.DataValueType.LOOKUP, // Конфигурационный объект атрибута типа LOOKUP. "lookupListConfig": { // Данный фильтр отображает ответственных из группы "filters": [ function() { var filterGroup = Ext.create("Terrasoft.FilterGroup"); if (this.get("Group") != null) { filterGroup.add("IsActive", Terrasoft.createColumnFilterWithParameter(3, "[SysAdminUnit:Contact].[SysUserInRole:SysUser].SysRole.Id", this.get("Group").value)); return filterGroup; } } ] } }
Вышло такое. Оно работает. Может кому понадобится. Спасибо https://community.terrasoft.ru/questions/filtr-pola-kontakt-po-funkcion…;