Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mdemyanov/bb247524e390740aa9b04a9d51492d72 to your computer and use it in GitHub Desktop.
Save mdemyanov/bb247524e390740aa9b04a9d51492d72 to your computer and use it in GitHub Desktop.
/*! 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