Попробуйте создать профиль для утверждающих Request Approver и переписать SELECT для approver_id в классе UserRequest.
Тогда в списке утверждающих будут только те люди, которые имеют профиль Request Approver.
Текст datadomel примерно такой:
Попробуйте создать профиль для утверждающих Request Approver и переписать SELECT для approver_id в классе UserRequest.
Тогда в списке утверждающих будут только те люди, которые имеют профиль Request Approver.
Текст datadomel примерно такой:
Извините. Вот текст:
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<constants>
</constants>
<classes>
<class id="UserRequest" _delta="must_exist">
<fields>
<field id="approver_id" xsi:type="AttributeExternalKey" _delta="redefine">
<filter><![CDATA[SELECT Person AS pe JOIN User AS u1 ON u1.contactid=pe.id JOIN URP_UserProfile AS u2 ON u2.userid=u1.id WHERE u2.profile='Request Approver']]></filter>
<sql>approver_id</sql>
<target_class>Person</target_class>
<is_null_allowed>true</is_null_allowed>
<on_target_delete>DEL_MANUAL</on_target_delete>
<allow_target_creation>false</allow_target_creation>
</field>
</fields>
</classes>
<menus>
</menus>
<user_rights>
<groups>
</groups>
<profiles>
<profile id="50" _delta="define">
<name>Request Approver</name>
<description>Request Approver</description>
<groups>
<group id="UserRequest">
<actions>
<action id="ev_approve" xsi:type="stimulus">allow</action>
<action id="ev_reject" xsi:type="stimulus">allow</action>
<action id="stimulus:ev_reopen">allow</action>
<action id="action:write">allow</action>
<action xsi:type="read">allow</action>
<action xsi:type="bulk read">allow</action>
</actions>
</group>
</groups>
</profile>
</profiles>
</user_rights>
</itop_design>
Вариантов много. Один из них подсказал @iilitv. Но профиль делать не обязательно, можно просто поиграться с селектом в approver_id
.
Если у вас структура простая и нет строгих ограничений, то можно просто выбрать всех Персон:
SELECT Person
Если структура такая:
То можно из Отдела в службе 1 можно выбрать Персон ветки Компании 1 так:
SELECT Person AS p
JOIN Organization AS node1 ON p.org_id = node1.id
JOIN Organization AS node2 ON node1.parent_id BELOW node2.id
JOIN Organization AS node3 ON node2.parent_id ABOVE node3.id
WHERE node3.id = :this->org_id
Именно так и хотелось сделать.
Спасибо! попробуем сделать!
Профиль сделан для того, что-бы не давать утверждающим никаких других прав в Админ. окне itop кроме как утвердить или отклонить. Иначе, для этого действия, придется давать рабочий профиль. И что они там натворят неизвестно.
Всем добрый день.
Была поставлена задача автоматически подачи Запроса на утверждение.
Добавил в подкат. услуг флаг автоутверждения и утверждающего.
В OnUpdate прописал
$oStatus = $this->Get(‘status’);
switch ($oStatus)
{
case ‘new’:
$oApprover1 = $this->Get(‘approver_id_1_service’);
if (!empty($oApprover1))
{
$this->Set(‘approver_id’, $oApprover1);
$this->Set(‘status’,‘waiting_for_approval’);
$this->ApplyStimulus(‘ev_wait_for_approval’);
$this->DBUpdate();
}
Статус меняется, но триггер не срабатывает и уведомление не отправляется.
Пробовал на начало состояния waiting_for_approval, на конец состояния new - ни один не срабатывает.
Подскажите пожалуйста - как заставить триггера работать.