[Salesforce] Validation Rules

IamMilo·2024년 4월 26일

Validation Rules란

  • Validation Rules를 사용해서 유저가 입력한 데이터를 저장하기 전에 사전에 정의한 기준에 따라 유효한지 검증할 수 있습니다.
  • 표현식이나 공식을 통해 하나 또는 둘 이상의 필드들의 값을 검증하여 True 혹은 False값을 리턴합니다. True값을 리턴하는 경우 유저가 입력한 값이 유효하지 않음을 뜻합니다.
  • Validation Rules에서 에러 메세지를 지정함으로써 유저가 유효하지 않은 값을 입력한 경우 어떤 기준을 충족하지 않는지 표시할 수 있습니다.
  • Validation Rules를 사용함으로써 데이터 품질을 효과적으로 관리할 수 있습니다. 예를 들어, 모든 연락처 필드가 특정한 포맷을 유지하도록 하거나 특정 제품에 적용되는 할인율이 한도를 초과하지 않도록 할 수 있습니다.

Validation Rules 생성하기

기존에 생성한 커스텀 앱에 다음의 Validation들을 추가해 보도록 하겠습니다.

  • Min Pay cannot be greater than Max Pay
    • 최소 급여는 최대 급여보다 클 수 없다
  • If the Position status is closed, then Close Date is required.
    • 포지션이 마감 되었다면 마감 날짜를 필수로 입력해야 한다
  • Closed Date should always be after Open Date.
    • 마감일자는 오픈일자 이후여야 한다.
  • Max Pay cannot be more than 1M.
    • 최대 급여는 1백만을 넘을 수 없다
  • If the Candidate is US citizen, then Visa Required should be unchecked and Vice versa.
    • 후보자가 US Citizen, Visa Required 두가지 체크박스가 있고 한쪽이 Checked라면 다른 한쪽은 Unchecked 여야 한다.

Min Pay cannot be greater than Max Pay


Object Manager의 왼쪽 하단 Validation Rules에서 New버튼을 눌러 새로운 룰을 생성할 수 있습니다.

  • Rule Name
    • 룰의 이름을 지정할 수 있습니다. 공백을 입력할지 않아야 한다고 합니다.
  • Insert Field
    • 해당 버튼을 통해 기존 Object별 필드를 편리하게 조회하고 입력할 수 있습니다.
  • Insert Operator
    • 해당 버튼을 통해 지원되는 연산자들을 확인하고 편리하게 입력할 수 있습니다.
  • Fucntions
    • 해당 영역에서 지원가능한 SQL 함수들을 조회하고 입력할 수 있습니다. 각 함수가 어떤 기능인지도 힌트를 주어서 편리합니다.
  • Check Syntax
    • 입력한 Formula에 문법상 오류는 없는지 검사할 수 있습니다.
  • Error Message
    • 지정한 Formula에 맞지 않는 값을 입력할 경우 표시할 에러메세지를 입력합니다.
  • Error Location
    • 해당 에러 메세지를 페이지 페이지 상단에 노출하거나 특정 필드를 지정해서 해당 필드에 노출할지 설정할 수 있습니다.


Save를 눌러 저장하고 새로운 Position 레코드를 Min Pay가 Max Pay보다 높도록 설정하고 생성하려고하면 아까 저장한 Validation Formula의 값이 True를 반환하기 때문에 저장되지 않고 Error Message를 띄우는 것을 볼 수 있습니다.

If the Position status is closed, then Close Date is required.

Rule Name과 Description을 적어주고 아래와 같이 Formula를 입력했습니다.

ISBLANK(  Close_By__c  ) && (
ISPICKVAL( Status__c , 'Closed - Filled')||
ISPICKVAL( Status__c , 'Closed - Not Approved')||
ISPICKVAL( Status__c , 'Closed - Canceled')
)

ISPICKVAL(picklist_field, text_literal)
ISPICKVAL은 Picklist 타입의 필드의 값을 텍스트 리터럴로 비교할 수 있는 함수입니다. Picklist 함수의 값이 Closed 상태이면서 Close By 필드가 비어있다면 True를 반환해서 에러 메세지를 보이도록 했습니다.

⚠️주의
다루고자 하는 필드의 데이터타입이 Picklist 이거나 Multi-Select Picklist인 경우에 특정한 함수들만 지원이 가능하다고 합니다. 해당 공식문서를 참조하셔서 지원가능한 함수들을 확인할 수 있습니다.

그리고 이번엔 Error Message를 화면 상단이 아닌 Close By 필드에 표기하도록 설정했습니다.


룰을 저장하고 새로운 레코드를 Status가 Closed이고 Close By필드를 비워둔채로 생성하거나 수정하려고 하면, 진행되지 않고 지정한 Closed By 필드 밑에 에러메세지를 띄우는 것을 볼 수 있습니다.

Closed Date should always be after Open Date.


Max Pay cannot be more than 1M


If the Candidate is US citizen, then Visa Required should be unchecked and Vice versa.

AND( Are_you_a_US_Citizen__c , Do_you_need_Visa__c )

Formula를 다음과 같이 입력해줬습니다. CheckBox 타입은 boolean타입이고 Check된 경우 true를 뜻합니다. 두 가지 필드가 모두 체크되어 true일경우 해당 Formula도 true를 반환하게되고 그로 인해 Validation이 작동하게 됩니다.


룰을 저장하고 두가지 항목을 모두 체크하고 저장을 시도하면 정상적으로 에러 메세지를 띄우는 것을 볼 수 있습니다.

profile
100번 고민보다 1번 실행

0개의 댓글