Когда я создаю новую запись в приложении Service Request (SR) (Maximo 7.6), я хотел бы установить поле требуемой отчетной даты (SR.REPORTDATE) пустым. Перед действием сохранения пользователь вводит данные в это поле. Интересно, как это можно было сделать?
Спасибо за помощь.
Я сразу же вспоминаю сценарий автоматизации. Элемент управления значением по умолчанию или настройка значения по умолчанию в конфигурации базы данных также может работать и рекомендуется перед сценарием, если у вас есть опыт, чтобы подтвердить или опровергнуть эту теорию.
Что касается сценария автоматизации, я думаю, вы можете создать его с точкой запуска объекта на SR по событию «добавить». Сценарий просто установит для этого поля значение null, что также не должно изменить флаг «обязательный», поэтому остальные ваши потребности будут удовлетворены.
mbo.setValueNull("REPORTDATE");
Тем не менее, проверка toBeAdded()
тоже не соответствует стандартам. Вы бы действительно предпочли иметь Object Event Condition (OEC), который предотвращает запуск вашей точки запуска / скрипта, если ему нечего делать, чтобы сэкономить затраты на настройку / демонтаж. Для SR это OEC может быть not exists (select 1 from ticket where ticketuid = :ticketuid)
.
Ага. Этот ответ действительно кажется ошибочным; Я почти уверен, что имел в виду событие «сохранить», но фильтр «добавить» (хотя мой следующий комментарий объясняет больше). Сценарии инициализации раздражают, потому что они запускают так часто, но иногда с автосценариями, которые все, что у вас есть. Инициализация также запускается довольно рано, до некоторой настройки MBO, поэтому не всегда могут быть доступны данные, которые вам нужны (или даже поля, на которые вам нужно ссылаться, инициализированы). Интересно, насколько дешевы эти условия SQL для выполнения каждый раз, но я надеюсь, что на данном этапе я чрезмерно оптимизирован.
В некоторых (всех?) Версиях 7.6.0.x есть специальный триггер автосценария ".NEW", который заставляет скрипт запускаться только при создании записи. Вы должны назвать сценарий после имени объекта и добавить этот суффикс, поэтому имя сценария в этом случае будет «SR.NEW». Это было бы настоящим событием "добавления", которое я хотел, когда писал это год назад. Думаю, я слышал, что они добавили соответствующую поддержку для этого в 7.6.1.x.
Если вы посмотрите в Конфигурации базы данных, чтобы увидеть, имеет ли REPORTDATE значение по умолчанию, я думаю, вы найдете там & SYSDATE &. Если я прав, вы можете удалить это значение по умолчанию, сохранить изменения и применить их. В противном случае вам нужно будет сделать так, как предложил @Dex.
Проблема с этой идеей сценария автоматизации заключается в том, что размещение его в точке запуска добавления происходит, когда пользователь нажимает
Save
, а не когда он нажимаетNew
. Лучше поставить его наInitialize
и делать толькоsetValueNull()
, еслиmbo.toBeAdded()
. Проверка на наличиеtoBeAdded()
необходима, чтобы не пропустить отчетную дату для записей, возвращающихся на вкладку «Список».