netsuite
Explotando columnas de fórmulas en búsquedas guardadas
Buscar..
Introducción
Sentencia Oracle SQL CASE en una fórmula Netsuite
Usando una declaración CASE, muestre condicionalmente una expresión en la columna basada en los valores encontrados en otra columna, también conocida como "mi reino para un OR". En el ejemplo, el resultado se obtiene cuando el estado de la transacción es Pending Fulfillment
o Partially Fulfilled
:
CASE DECODE( {status}, 'Pending Fulfillment', 1, 'Partially Fulfilled', 1, 0 )
WHEN 1 THEN
expresión-1
END
Analizar un nombre de registro jerárquico usando una expresión regular
Usando una expresión regular, analice un nombre de registro que pueda ser jerárquico. La expresión busca los dos puntos finales en el nombre. Devuelve lo que sigue a los dos puntos, o el nombre completo si no hay ninguno:
regexp_substr( {name} , '[^:]*$' )
Construye una cadena compleja concatenando múltiples campos
El ejemplo crea una cadena a partir del nombre del registro principal, el nombre de este registro y la nota de este registro.
{createdfrom} || ' ' || {name} || ' ' || {memo}
Personalice el CSS (hoja de estilo) para una columna insertando un elemento DIV
'<div style="font-size:11pt">' ||
expresión || '</div>'
Proteger fórmulas de cadena de corrupción y ataques de inyección
En un campo de fórmula de cadena, considere que algunos valores pueden contener subcadenas que se parecen al navegador como HTML. A menos que esto sea intencional, es importante proteger los valores de la corrupción. Esto es útil para evitar ataques de inyección: evita que alguien ingrese HTML en un campo de comentarios en un pedido web que luego se interpreta en el escritorio del representante de servicio al cliente.
htf.escape_sc(
expresión )
Proteger los valores de campo contra la corrupción al pasar a través de una URL
utl_url.escape(
expresión )
Probar el valor de `mainline` en una sentencia CASE de SQL
En una fórmula de búsqueda guardada, los posibles valores de la mainline
están diseñados para ser útiles en un contexto HTML. Cuando mainline
es verdadero, el valor de {mainline}
es la cadena de 1 carácter *
(asterisco). Cuando mainline
es false, el valor de {mainline}
es la cadena de 6 caracteres
(espacio de no ruptura, HTML codificado como una referencia de entidad de carácter). Estos valores de cadena se pueden comparar con literales de cadena en un contexto SQL.
CASE
WHEN {mainline} = '*' THEN
expresión-when-true
WHEN {mainline} = ' ' THEN
expresión-cuando-falso
END
Ejemplo complejo, del mundo real
El siguiente ejemplo combina varias de las técnicas cubiertas aquí. Coloca un hipervínculo en una columna con formato personalizado que, al hacer clic, abre el registro de pedido de ventas asociado a una fila. El hipervínculo está diseñado para abrir el registro en una nueva ventana o pestaña al hacer clic, y para mostrar una información sobre herramientas cuando se desplaza. El campo internalid
usado en la URL está protegido de la codificación de la URL. El nombre del cliente, cuando esté disponible, se muestra en la misma columna, protegido de la codificación 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>'
Contar registros con y sin un valor proporcionado en un campo (contar valores perdidos y no perdidos)
Usando la función NVL2()
Oracle SQL, puede crear una columna de visualización que contenga un valor si un campo contiene datos y otro valor si un campo no contiene datos. Por ejemplo, en una búsqueda de Entidad, convierta la presencia de una dirección de correo electrónico principal en una columna de visualización de texto:
NVL2( {email} , 'YES' , 'NO' )
Esto le permite contar los registros subtotalizados por la presencia o ausencia de una dirección de correo electrónico:
Field: Internal ID
Summary Type: Count
Field: Formula (Text)
Summary Type: Group
Formula: NVL2( {email} , 'YES' , 'NO' )