Удобный виджет выбора даты и времени тут не поможет, тем более в айтопе уже и так есть аналогичный виджет (хотя и не такой красивый).
Задача делится на две:
- показать поле Дата решения (я так понял, его хотите заполнять руками) на форме перевода в Решенный;
- отключить автоматическое заполнение поля датой фактического перевода в Решен.
Для решения потребуется минимальная доработка XML-модели (разумеется, в собственном отдельном модуле, а не в исходном datamodel-файле).
Первый пункт решается переопределением (_delta="redefine"
) флагов для атрибута resolution_date
в статусе resolved
. Изначально там только read_only
, нужно добавить must_prompt
и mandatory
. Путь до переопределяемого узла: itop_design>classes>class#UserRequest>lifecycle>states>state#resolved>flags>attribute#resolution_date
.
<attribute id="resolution_date" _delta="redefine">
<mandatory/>
<must_prompt/>
<read_only/>
</attribute>
Для решения второго пункта нужно удалить из списка действий перехода ev_resolve
статуса assigned
действие SetCurrentDate
.
Но у узлов
action
не заданы id, поэтому удалить (_delta="delete"
) конкретный узел нельзя. Придется переопределять весь узел actions
, оставив там только нужные action
. Путь до переопределяемого узла: itop_design>classes>class#UserRequest>lifecycle>states>state#assigned>transitions>transition#ev_resolve>actions
.
Поле resolution_date
продолжит заполняться текущей датой при автоматическом решении тикета (ev_autoresolve
), которое срабатывает для дочерних при решении родительского. Подумайте, может имеет смысл добавить отдельное поле для указания нужный даты, оставив заполнение resolution_date
автоматическим.
Добрый!
Первая часть задачи успешно решена, при переводе тикета в статус Решен, появилась возможность выбора даты и времени. Но в БД все равно записывается реальное время.
Вот ХМЛ из папки расширений
Еще я пробовал использовать функцию SetIfNull вместо SetCurrentDate. Тот же результат
Копипаста до добра не доведёт) Что такое _created_in
и _altered_in
?
<attribute id="resolution_date">
переопределён, а вот <actions>
– нет.
https://www.itophub.io/wiki/page?id=2_7_0%3Acustomization%3Axml_reference#alter_node_contents
СПАСИБО!!! Я из описания просто понял что переопределять можно только аттрибуты, оказывается и переходы.
Владимир, из под моей (админской учетки) все работает. У агента возможность выбора даты/времени есть, но в БД попадает реальное время. На пробу дал права админа - тоже все ОК. Ткните, плз, носом что читать. В документации линк Access rights, выдает ошибку
Переопределять, удалять, добавлять можно любой узел (node) XML-структуры. Главное – айтоп должен однозначно этот узел идентифицировать. У <attribute>
есть id
, а у <action>
его нет, поэтому мы не можем сказать айтопу, какой <action>
хотим удалить, и переопределяем весь родительский узел <actions>
целиком. Внутри <transition>
может быть только один узел <actions>
(по схеме), так что в этом случае у айтопа не возникает проблем с идентификацией.
Так не бывает. Код один, и в этом месте от профиля пользователя он не зависит.