Регистрация  |  Вход

Validation Rule Exception

Здравствуйте!

Столкнулся с такой проблемой. Есть объект с несколькими vadation rules, когда делаю insert етого объекта, получаю FIELD_CUSTOM_VALIDATION_EXCEPTION. Теперь мне интересно, можно ли как-то из Apex кода узнать какой именно validation rule сработал(вытянуть например его название) не трогая Error Message?

Здравствуйте!

Столкнулся с такой проблемой. Есть объект с несколькими vadation rules, когда делаю insert етого объекта, получаю FIELD_CUSTOM_VALIDATION_EXCEPTION. Теперь мне интересно, можно ли как-то из Apex кода узнать какой именно validation rule сработал(вытянуть например его название) не трогая  Error Message?

Хороший вопрос! Самому интересно.

Хороший вопрос! Самому интересно.

На первый взгляд такой возможности нет.
да и как-то не совсем понятно зачем это.
Цель Validation Rule проверить какое-то условие и вывести сообщение об ошибке. Зачем в коде узнавать что это за validation rule? Если необходимо найти этот validation rule - то он находится очень легко по самому тексту ошибки и по объекта с которым сейчас работаешь.

На первый взгляд такой возможности нет.
да и как-то не совсем понятно зачем это.
Цель Validation Rule проверить какое-то условие и вывести сообщение об ошибке. Зачем в коде узнавать что это за validation rule? Если необходимо найти этот validation rule - то он находится очень легко по самому тексту ошибки и по объекта с которым сейчас работаешь.

Dmitry Shnyrev
На первый взгляд такой возможности нет.
да и как-то не совсем понятно зачем это.
Цель Validation Rule проверить какое-то условие и вывести сообщение об ошибке. Зачем в коде узнавать что это за validation rule? Если необходимо найти этот validation rule - то он находится очень легко по самому тексту ошибки и по объекта с которым сейчас работаешь.

Я думаю это кажется на первый взгляд получить метаданные можно, то есть брать по сообщение искать имя это валидацион рул
здесь описанно https://github.com/financialforcedev/apex-mdapi

по мне так это лишние,хотя заказчики разные бывают

[quote="Dmitry Shnyrev"]На первый взгляд такой возможности нет.
да и как-то не совсем понятно зачем это.
Цель Validation Rule проверить какое-то условие и вывести сообщение об ошибке. Зачем в коде узнавать что это за validation rule? Если необходимо найти этот validation rule - то он находится очень легко по самому тексту ошибки и по объекта с которым сейчас работаешь.[/quote]
Я думаю это кажется на первый взгляд  :) получить метаданные можно, то есть брать по сообщение искать имя это валидацион рул 
здесь описанно [url]https://github.com/financialforcedev/apex-mdapi[/url]

по мне так это лишние,хотя заказчики разные бывают

Приходилось мне делать VF page заменяющую стандартный лайаут. На объект было повешено штук 15 VR. И по ходу работы мне надо было сделать красивый вывод ошибок от этих VR. Пришлось делать копию VR логики в контроллере. Что вообще не есть гуд(

Приходилось мне делать VF page заменяющую стандартный лайаут. На объект было повешено штук 15 VR. И по ходу работы мне надо было сделать красивый вывод ошибок от этих VR. Пришлось делать копию VR логики в контроллере. Что вообще не есть гуд(

Приходилось мне делать 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 />

[quote]Приходилось мне делать VF page заменяющую стандартный лайаут. На объект было повешено штук 15 VR. И по ходу работы мне надо было сделать красивый вывод ошибок от этих VR. Пришлось делать копию VR логики в контроллере. Что вообще не есть гуд([/quote]

Не вижу проблем. Validation Rule инициирует такую же DML ошибку как и другие. Я везде их просто перехватываю если надо красиво показать и показываю. Вот такая конструкция:

[code]
try {
     insert something;
} catch(Exception e) {
     ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, ''+e));
     return;
}
[/code]

а на странице:
[code]
<apex:pageMessages />
[/code]