2017-10-03 1 views
0

Google은 Salesforce 계정과 기회를 QuickBooks (QB)에 동기화하지만 QB는 입력란에 글자 수 제한이 있습니다. 거리 선은 한 줄당 41 자 제한을 가지고 있으며 정규식 제어를 제한하려고 시도하지만 주소 입력란 유형에서는 작동하지 않습니다. 비 LINEBREAK 문자와 일치하고 42 자 이상이라면, 유효성 검사를 트리거계정 주소 필드의 정규식 유효성 검사

REGEX(BillingStreet, '.{42,}') 

: 나는 매우 간단한 조건식을 사용하고 있습니다. 문제는이 규칙을 무시한다는 것입니다. 이 수식이 다른 텍스트 필드에 적용하면 어떻게 작동하는지 알기 때문에이 수식이 작동한다는 것을 알고 있습니다. 작동 원리에 대한 예가 있습니다 : https://www.regexpal.com/99217. 어디서나 일치하는 것이 있으면 유효성 검사 오류가 발생합니다.

아이디어가 있으십니까?

+0

'^ $'앵커로 시도 했습니까? – ctwheels

+0

캐리지 리턴 또는 라인 피드가 BillingStreet에 몰래 들어가서 정규식을 만들지 못하나요? . does not match \ n – sniperd

+0

예를 들어 링크 한 줄에 표시하고 싶습니다. 예는 정확하지만 입력란에 같은 텍스트를 넣어도 유효성 검사가 실행되지 않습니다. Salesforce의 필드는 텍스트 영역이지만 QuickBooks와 동기화되면 각 행을 구분하여 각 행의 문자 길이가 41자인 5 개의 주소 블록 행 중 하나에 배치합니다. 나는^^ 앵커를 시도 할 것이다. – icebird76

답변

0

Regex를 사용하지 않는 이유는 제대로 작동하지 않기 때문입니다. 대신 수식을 사용하여 유효성 검사를 수행하는지 확인했습니다. 우리는 두 줄의 한계가 있기 때문에 이것을 먼 길로하는 것은 그리 나쁘지 않았습니다.

AND(
IF( 
    //Look for a line break. If there is one, split and compare lengths separately. 
    FIND(MID($Setup.Global__c.CLRF__c ,3,1), BillingStreet) > 0 
, 
    IF(
    //If the first line is over the limit, return true to trigger validation. 
    LEN(LEFT(BillingStreet, FIND(MID($Setup.Global__c.CLRF__c ,3,1), BillingStreet)-2))>41 
    , 
    TRUE 
    , 
    //If first line is fine, check second line and since this is a condition, it will return true/false automatically. 
    LEN(MID(BillingStreet, FIND(MID($Setup.Global__c.CLRF__c ,3,1), BillingStreet)+1,LEN(BillingStreet))) > 41 
) 
, 
    //If there is no line break (one line) check the total length. 
    LEN(BillingStreet) > 41 
) 
, 
//There is a validation for having more than 2 lines. Without this, it will combine lines 2 and above and check that length and will be confusing to users when it's > 41. 
NOT(REGEX(BillingStreet , '(.*\r?\n.*){2,}')) 
, 
//Ignore this rule if the user has this flag active. Useful for bulk updating and don't have to worry about import errors. 
$User.Bypass_Validation__c = False 
) 

이 조각 MID($Setup.Global__c.CLRF__c ,3,1)은 Salesforce의 줄 바꿈을 나타냅니다. 그것이 작동하는 방법을 발견했다 find line break in formula field. 나는 Regex를 사용하는 것을 좋아했을 것이다. 그러나 당신이 나에게 묻는다면 그것은 작동하지 않는다. 위의 코드 에서처럼 2 개 이상의 행을 검사하는 경우를 제외하고.