Отслеживание времени при изменении статуса
У меня есть вопрос об определенной функциональности в Siebel, касающейся запросов на обслуживание.
Есть ли способ отследить время, когда определенный запрос на обслуживание находится в заданном статусе / подстатусе, например, "Ожидание клиента"? Когда запрос на обслуживание снова меняется на другой статус, который больше не "ждать кого-то", я вынужден прекратить считать время.
1 ответ
Я не знаю ни одного готового решения, отвечающего вашим потребностям, однако есть много способов добиться этого с небольшой настройкой. Например:
- Создайте два новых поля,
Waiting Time
(с предустановленным значением: 0) иWaiting Date
, - Создайте следующие пользовательские свойства BC:
On Field Update Set x
знак равно"Status", "Waiting Time", "IIF([Waiting Date] IS NULL, [Waiting Time], [Waiting Time] + (Timestamp() - [Waiting Date]))
On Field Update Set y
знак равно"Status", "Waiting Date", "IIF([Status]='Waiting on Customer',Timestamp(),NULL)"
Ваш Waiting Date
поле будет хранить время последнего изменения запроса на обслуживание: "Ожидание от клиента" или NULL, если он находится в другом статусе. Затем, Waiting Time
будет накапливать общее время, в течение которого запрос находился в этом состоянии.
Я не тестировал решение, может потребоваться дополнительная работа, например, возможно, что Siebel не позволяет использовать выражение [Waiting Time] + (Timestamp() - [Waiting Date])
напрямую, и вам придется разложить его, используя вспомогательные вычисляемые поля.
Также обратите внимание, что пользовательское свойство "Набор обновлений на месте" изменило свой синтаксис с Siebel 7.7-7.8 на Siebel 8.x.
Если вы знакомы с серверными сценариями, вы можете легко реализовать нечто подобное на BusComp_PreSetFieldValue
событие. Если изменяемое поле имеет статус, проверьте, вводите ли вы или нет (или нет) статус "Ожидание клиента", и соответствующим образом обновите два поля.