Last active
August 30, 2017 11:10
-
-
Save mdemyanov/bb247524e390740aa9b04a9d51492d72 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*! UTF8 */ | |
//Автор: mdemyanov | |
//Дата создания: 30.08.17 | |
//Код: SCRIPTSD4001681 | |
//Назначение: | |
/** | |
* Пример сценария для фильтрации значений, например, статей базы знаний. | |
* Ниже идет перечень констант, используемых к текущем скрипте, как правило, | |
* с помощью таких констант автор приводит перечень параметров, которые | |
* напрямую влияют на логику исполнения сценария и могут быть изменены технологом | |
* без полного переписывания скрипта. Чаще всего это коды атрибутов: | |
* @param SERVICE код атрибута заявки ссылающийся на услугу | |
* @param ARTICLES код атриубта услуги, по которому находятся связанные статьи базу знаний | |
* @return сценарий возвращает коллекцию идентификаторов статей по услуге, либо отключает фильтрацию | |
*/ | |
//Версия: 4.6 | |
//Категория: фильтрация | |
//Параметры------------------------------------------------------ | |
def SERVICE = 'service' | |
def ARTICLES = 'articlesKB' | |
/* | |
Коллекция кодов параметров для получения с формы | |
(когда пользователь создает или редактирует объект). | |
В нашем случае, во время поиска статей БЗ мы можем изменить саму услугу, | |
поэтому попросим систему обновлять значение этого параметра с формы | |
(в противном случае, subject[SERVICE] - вернет значение услуги, сохраненнное в объекте, | |
на форме добавление этот параметр будет пуст, а на форме смены привязки может быть не актуален). | |
*/ | |
ATTRS_FOR_UPDATE_ON_FORMS = [SERVICE] | |
//Функции-------------------------------------------------------- | |
//Основной блок ------------------------------------------------- | |
if (null == subject) { | |
return ATTRS_FOR_UPDATE_ON_FORMS | |
} | |
def result = [] | |
def service = subject[SERVICE] | |
if (service) { | |
// Если услуга указана, получаем список всех связанных статей | |
result += service[ARTICLES]?.UUID | |
/* Иногда мы можем получить в коллеции значение вида [null], которе вызывает ошибку | |
на этапе исполнения сценария. Чтобы предотвратить такую ситуацию, удалим из коллекции все | |
ссылки на NULL | |
* */ | |
result.removeAll([null]) | |
} else { | |
//Если услуга не указана, разрешаем пользоателю получить доступы к любым статьям базы знаний | |
result = api.filtration.disableFiltration() | |
} | |
return result |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment