Задача: есть группы (assignment_group), которые уже не актуальны, но которые нужны для аналитики. Нужно сделать так, чтобы они были не видны и не доступны для выбора в поле assignment_group. И одновременно, нужно оставить предустановленный динамический определитель ссылок, который показывает только группы, где есть пользователи из поля assigned_user.
Есть идея дополнить динамический фильтр условием, что если в группе нет пользователя, то на не видна и не доступна для выбора, но не знаю, что именно изменить в скрипте:
/* Example of return values:
return ‘156956878014585856’;
or
return [‘156956878014585856’, ‘156956851511250859’];
or
return ‘(emailISNOTEMPTY^display_name=SimpleAdmin)’; // dynamic operators are not supported for use in condition string for filter scripts
*/
(function executeDynamicScript(current = null /null for scripts used in filters/ ) {
if (current.getValue(‘assigned_user’)) {
const listOfGrop = ;
const userHasGroup = new SimpleRecord(‘sys_user_group’);
userHasGroup.addQuery(‘user_id’, current.getValue(‘assigned_user’));
userHasGroup.query();
while (userHasGroup.next()) {
listOfGrop.push(userHasGroup.getValue(‘group_id’))
}
return listOfGrop;
}
return ‘()’;
})(current)
Привет!
Тяжеловасто будет проверять каждую существующую группу на наличие (наверное, активных (active=true) членов) в динамическом фильтре. Я бы в эту сторону не смотрел.
Наша задача скорее про признак (поле) в таблице sys_group, которое будет нам говорить, можно ли ее выбирать или нет.
Допустим, мы создали true/false поле “c_assignment_possible” с default значением true и проставили у старых групп это поле в значение false или написали Scheduled Script, который выставляет в группе “c_assignment_possible” = false, если в ней нет членов или… дальше пошел полет фантазии… если все члены группы деактивированы и т.п.
Тогда нам из динамичесго фильтра никуда не нужно лезть.
(function executeDynamicScript(current = null /*null for scripts used in filters*/) {
const assignedUserId = current.getValue('assigned_user');
if (assignedUserId) {
const groupIdsArr = [];
const userHasGroup = new SimpleRecord('sys_user_group');
userHasGroup.addQuery('user_id', assignedUserId);
userHasGroup.addQuery('group_id.c_assignment_possible', true); // Фильтруем те, что доступны для назначения и в которых есть наш пользователь
userHasGroup.selectAttributes('group_id'); //Ускоряемся с запросом, нам нужен только group_id
userHasGroup.query();
while (userHasGroup.next()) {
groupIdsArr.push(userHasGroup.getValue('group_id'));
}
return groupIdsArr; //Вот они, группы нашего Assigned User, причем только разрешенные для назначения
}
return '(c_assignment_possible=1)'; //Вот они, разрешенные для назначения группы. Все.
})(current)
С уважением, Никита
p.s. Советую дождаться выхода следующей версии платформы, там кое-что на эту тему будет.