netsuite
Использование столбцов формулы в сохраненных результатах поиска
Поиск…
Вступление
Оператор Oracle SQL CASE в формуле Netsuite
Используя оператор 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}
Настройте CSS (таблицу стилей) для столбца, вставив элемент DIV
'<div style="font-size:11pt">' ||
выражение || '</div>'
Защита строковых формул от коррупции и инъекций
В поле формулы строчки учтите, что некоторые значения могут содержать подстроки, которые выглядят в браузере подобно HTML. Если это не преднамеренно, важно защитить ценности от коррупции. Это полезно, чтобы избежать атак инъекций: он не позволяет кому-то вводить HTML в поле комментариев в веб-заказе, который позже интерпретируется на столе представителя службы поддержки клиентов.
htf.escape_sc(
выражение )
Защищать значения полей от коррупции при прохождении через URL-адрес
utl_url.escape(
выражение )
Проверьте значение `mainline` в выражении SQL CASE
В сохраненной формуле поиска возможные значения mainline
предназначены для использования в контексте HTML. Когда mainline
истинно, значением {mainline}
является 1-символьная строка *
(звездочка). Когда mainline
false, значение {mainline}
- это 6-символьная строка
(неразрывное пространство, HTML кодируется как ссылка на символ). Эти строковые значения можно сравнить со строковыми литералами в контексте SQL.
CASE
WHEN {mainline} = '*' THEN
выражение-когда-true
WHEN {mainline} = ' ' THEN
выражение-когда-false
END
Комплексный, похожий на реальный пример
Следующий пример объединяет несколько методов, рассмотренных здесь. Он помещает гиперссылку в пользовательский форматированный столбец, который при щелчке открывает запись заказа клиента, связанную со строкой. Гиперссылка предназначена для открытия записи в новом окне или вкладке при нажатии и отображения всплывающей подсказки при зависании. Поле internalid
используемое в URL-адресе, защищено от кодирования 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>'
Записывайте записи с помощью и без значения, указанного в поле (количество отсчетов отсутствует и не пропущенные значения)
Используя функцию NVL2()
Oracle SQL, вы можете создать столбец отображения, который содержит одно значение, если поле содержит данные и другое значение, если поле не содержит данных. Например, в поиске Entity переведите присутствие первичного адреса электронной почты в столбец отображения текста:
NVL2( {email} , 'YES' , 'NO' )
Это позволяет подсчитывать записи, подсчитанные по наличию или отсутствию адреса электронной почты:
Field: Internal ID
Summary Type: Count
Field: Formula (Text)
Summary Type: Group
Formula: NVL2( {email} , 'YES' , 'NO' )