Здравствуйте!
Столкнулся с такой проблемой. Есть объект с несколькими vadation rules, когда делаю insert етого объекта, получаю FIELD_CUSTOM_VALIDATION_EXCEPTION. Теперь мне интересно, можно ли как-то из Apex кода узнать какой именно validation rule сработал(вытянуть например его название) не трогая Error Message?
Хороший вопрос! Самому интересно.
На первый взгляд такой возможности нет.
да и как-то не совсем понятно зачем это.
Цель Validation Rule проверить какое-то условие и вывести сообщение об ошибке. Зачем в коде узнавать что это за validation rule? Если необходимо найти этот validation rule - то он находится очень легко по самому тексту ошибки и по объекта с которым сейчас работаешь.
по мне так это лишние,хотя заказчики разные бывают
Приходилось мне делать VF page заменяющую стандартный лайаут. На объект было повешено штук 15 VR. И по ходу работы мне надо было сделать красивый вывод ошибок от этих VR. Пришлось делать копию VR логики в контроллере. Что вообще не есть гуд(
Не вижу проблем. Validation Rule инициирует такую же DML ошибку как и другие. Я везде их просто перехватываю если надо красиво показать и показываю. Вот такая конструкция:
try {
insert something;
} catch(Exception e) {
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, ''+e));
return;
}а на странице:
<apex:pageMessages />