수색…


소개

저장된 검색의 수식 열은 Oracle SQL 및 HTML의 많은 기능을 활용할 수 있습니다. 예제에서는 이러한 기능을 사용하는 방법과 피할 수있는 함정을 보여줍니다.

Netsuite 수식의 Oracle SQL CASE 문

CASE 문을 사용하면 조건부로 열의 표현식을 다른 열 ( "OR에 대한 나의 왕국")에있는 값을 기반으로 표시 할 수 있습니다. 이 예에서 트랜잭션의 상태가 Pending Fulfillment 또는 Partially Fulfilled 경우 결과가 얻어집니다.

CASE DECODE( {status}, 'Pending Fulfillment', 1, 'Partially Fulfilled', 1, 0 )
WHEN 1 THEN 식 -1
END

정규식을 사용하여 계층 적 레코드 이름 구문 분석

정규식을 사용하여 계층적일 수있는 레코드 이름을 구문 분석하십시오. 이 표현식은 이름에서 마지막 콜론을 찾습니다. 콜론 다음에 오는 것을 반환하거나없는 경우에는 전체 이름을 반환합니다.

regexp_substr( {name} , '[^:]*$' )

여러 필드를 연결하여 복잡한 문자열 만들기

이 예제는 상위 레코드의 이름,이 레코드의 이름 및이 레코드의 메모에서 문자열을 작성합니다.

{createdfrom} || ' ' || {name} || ' ' || {memo}

DIV 요소를 삽입하여 열에 대한 CSS (스타일 시트)를 사용자 정의하십시오.

'<div style="font-size:11pt">' || 표현 || '</div>'

부패 및 주입 공격으로부터 문자열 공식 보호

문자열 수식 필드에서 HTML과 같이 브라우저에 표시되는 하위 문자열이 일부 값에 포함될 수 있습니다. 이것이 의도적 인 경우가 아니면 부패로부터 가치를 보호하는 것이 중요합니다. 이는 분사 공격을 피하는 데 유용합니다. 누군가가 웹 주문서의 코멘트 필드에 HTML을 입력하는 것을 막습니다. 나중에 웹 서비스 담당자의 책상에서 해석됩니다.

htf.escape_sc( 표현식 )

URL을 통과 할 때 손상으로부터 필드 값 보호

utl_url.escape( 표현식 )

SQL CASE 문에서`mainline`의 값을 테스트하십시오.

저장된 검색 공식에서 mainline 의 가능한 값은 HTML 컨텍스트에서 유용하도록 설계되었습니다. mainline 이 참일 때, {mainline} 의 값은 1 문자 스트링 * (별표)입니다. mainline 이 false 인 경우 {mainline} 의 값은 6 자 문자열입니다 &nbsp; (비 분리 공간, 문자 엔티티 참조로 인코딩 된 HTML). 이러한 문자열 값은 SQL 컨텍스트의 문자열 리터럴과 비교할 수 있습니다.

CASE
WHEN {mainline} = '*' THEN expression-when-true
WHEN {mainline} = '&nbsp;' THEN 표현식 - 거짓 일 때
END

복잡하고 현실감있는 예제

다음 예제는 여기에서 다루는 몇 가지 기술을 결합한 것입니다. 사용자 정의 형식의 열에 하이퍼 링크를 넣습니다.이 열은 클릭 할 때 행과 연관된 판매 주문 레코드를 엽니 다. 하이퍼 링크는 클릭 할 때 새 창이나 탭에서 레코드를 열고, 마우스를 올리면 툴팁을 표시합니다. URL에 사용 된 internalid 필드는 URL 인코딩으로부터 보호됩니다. 고객 이름은 사용 가능한 경우 HTML 인코딩으로부터 보호되는 동일한 열에 표시됩니다.

'<div style="font-size:11pt">'
 ||
CASE {mainline}
WHEN '*' THEN '<br>' || htf.escape_sc( regexp_substr( {name} , '[^:]*$' ) ) || '<br>'
END
 ||
'<a alt="" title="Open the order associated with this line." '
 ||
'href="javascript:void(0);" onClick="window.open('''
 ||
'https://system.na1.netsuite.com/app/accounting/transactions/transaction.nl?id='
 ||
utl_url.escape( {internalid} )
 ||
''' , ''_blank'' )">'
 ||
{number}
 ||
'</a>'
 ||
'</div>'

필드에 제공된 값의 유무에 관계없이 레코드 수 계산 (누락 값 및 누락 값 계산)

Oracle SQL의 NVL2() 함수를 사용하면 필드에 데이터가 있으면 값 하나를, 필드에 데이터가 없으면 다른 값을 포함하는 표시 열을 만들 수 있습니다. 예를 들어, 엔티티 검색에서 기본 전자 메일 주소의 존재를 텍스트 표시 열로 바꿉니다.

NVL2( {email} , 'YES' , 'NO' )

이렇게하면 이메일 주소의 유무에 따라 소계로 기록을 계산할 수 있습니다.

Field: Internal ID
Summary Type: Count

Field: Formula (Text)
Summary Type: Group
Formula: NVL2( {email} , 'YES' , 'NO' )


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow