OTRS зависимые динамические поля с помощью ACL

Привет! Наконец то я понял как работают ACL в OTRS и сразу же реализовал возможность при закрытии заявки агентом отображать нужные мне значения динамических полей в зависимости от выбранного значения поля типа заявки.

Я хочу, чтобы при закрытии заявки с выбранной проблемой «Доступ к информационно-сетевым ресурсам» , у агента появлялась возможность выбрать из всплывающего списка нужные названия информационных ресурсов, по которым он работал. Этот перечень в нашей организации  строго регламентирован.

Вот так это должно выглядеть после настройки:

  • выбираем проблему
  • И становится доступен перечень ресурсов с возможностью выбрать сразу нескольких (на скриншоте пришлось скрыть название, но я думаю принцип понятен)
  • Вот так выглядит, если выбрана иная проблема при закрытии заявки (на скриншоте выбрана проблема «1С» и в поле «Перечень информационных ресурсов» по умолчанию установлен статус «не используется» и другие значения этого поля не доступны):

Для чего все это нужно:

При разборе «кто виноват и было ли указание на изменение прав по ресурсу» я хочу быстро найти какие заявки были созданы относительно имени ресурса и иметь доказательства.

Искать будем в стандартной форме поиска OTRS по пересечению как минимум двух полей: проблема, под которой закрылась заявка (всегда будет «Доступ к информационно-сетевым ресурсам» и сам перечень ресурсов из выпадающего списка). Вот так будет выглядеть в итоге:

Теперь как это реализовать:

  1. Создаем динамическое поле с перечнем информационных ресурсов. Поле тип должен быть «Multiselect» для возможности выбора нескольких значений, в нем перечисляем сами ресурсы (ключ — значение, я их делал одинаковыми), добавляем в перечень значение «не используется» и делаем его отображение по умолчанию:

2. Создание и настройка ACL.

Идем в пункт «управление ACL» и создаем правило, которое будет скрывать перечень информационных ресурсов по умолчанию, т.е. когда еще не выбрана проблема «Доступ к информационно-сетевым ресурсам»

Обратите внимание, что порядок выполнения правил ACL зависит от их расположения в списке. Поэтому даем имя правилу с наименьшим номером , в моем случае я назвал «01-noIR»:

Правило графически выглядит так:

Вот так при экспорте выглядит:

- ChangeBy: IvanovAA
  ChangeTime: 2020-10-13 13:41:22
  Comment: Не выбрана проблема "Доступ к информационно-сетевым ресурсам"
  ConfigChange:
    Possible:
      Ticket:
        DynamicField_IRmultiselect:
        - Не используется
    PossibleNot:
      Ticket:
        DynamicField_IR: []
  ConfigMatch:
    Properties:
      Ticket:
        Queue:
        - Группа Начальник СИТ
        - Группа "Главный специалист"
        - Группа "Системный Администратор"
        - Группа 1С
        - Группа Nanocad
        - Группа поддержки
  CreateBy: IvanovAA
  CreateTime: 2020-10-13 12:20:38
  Description: Состояние, когда не выбрана проблема "Доступ к информационно-сетевым
    ресурсам"
  ID: '13'
  Name: 01-noIR
  StopAfterMatch: 0
  ValidID: '1'

Теперь второе правило:

В условиях указываем для каких очередей будет применяться. Указываем, что в динамическом поле «Programs» (у меня так называется динамическое поле «Проблема», записывается вот так «DynamicField_Programs» )

должно быть выбрано значения «Доступ к информационно-сетевым ресурсам»

в поле «изменить настройки» указываем, что запрещаем отображать у динамического поля «IRmultiselect» значение «Не используется».

С помощью регулярного значения «Regular expression» выводим все доступные значения динамического поля «IRmultiselect»:

Экспорт выглядит так:

---
- ChangeBy: IvanovAA
  ChangeTime: 2020-10-13 13:59:07
  Comment: Выбор информационного ресурса при выбор заявки по изменению ИР
  ConfigChange:
    PossibleAdd:
      Ticket:
        DynamicField_IRmultiselect:
        - '[RegExp].*'
    PossibleNot:
      Ticket:
        DynamicField_IRmultiselect:
        - Не используется
  ConfigMatch:
    Properties:
      Ticket:
        DynamicField_Programs:
        - Доступ к информационно-сетевым ресурсам
        Queue:
        - Группа Начальник СИТ
        - Группа "Главный специалист"
        - Группа "Системный Администратор"
        - Группа поддержки
  CreateBy: IvanovAA
  CreateTime: 2020-10-13 09:49:11
  Description: ''
  ID: '12'
  Name: 02-IR
  StopAfterMatch: 0
  ValidID: '1'
3. Для того, чтобы динамическое поле отображалось у агента при закрытии заявки его нужно указать в настройках «Конфигурация системы»

В Ticket → Frontend::Agent::Ticket::ViewClose

ищем параметр Ticket::Frontend::AgentTicketClose###DynamicField , в нем прописываем ключ (название динамического поля, в моем случае «IRmultiselect» , в «Содержание» ставим 2 — «показывать и должно быть заполнено»:

Для того, чтобы динамическое поле «Перечень информационных ресурсов» отображалась в поиске

в настройках конфигурации Ticket → Frontend::Agent::Ticket::ViewSearch

ищем параметр  Ticket::Frontend::AgentTicketSearch###DynamicField и прописываем там название динамического поля «IRmultiselect»

Vladimir

Добавить комментарий