Diseñador de fórmulas en los informes electrónicos (ER)

Importante

Dynamics 365 for Finance and Operations is now being licensed as Dynamics 365 Finance and Dynamics 365 Supply Chain Management. For more information about these licensing changes, see Dynamics 365 Licensing Update.

Este tema explica cómo usar el diseñador de fórmula en Informes electrónicos (ER). Cuando diseña un formato para un documento electrónico específico en ER, puede usar fórmulas para transformar datos de modo que cumplan los requisitos para el cumplimiento y el formato de ese documento. Estas fórmulas se asemejan a fórmulas en Microsoft Excel. Se admiten diversos tipos de funciones en las fórmulas: texto, fecha y hora, lógica matemática, información, conversión de tipo de datos y otras (funciones específicas de dominio empresarial).

Visión general del diseñador de fórmulas

Los ER admiten el diseñador de fórmulas. Por tanto, en el momento del diseño, puede configurar las expresiones que se pueden usar para las siguientes tareas en tiempo de ejecución:

  • Transforme los datos que se recibe de una base de datos de una aplicación, y que se debe introducir en un modelo de datos de ER que se designa para ser un origen de datos para el ER da formato. (Por ejemplo, estas transformaciones pueden incluir el filtrado, la agrupación y la conversión de tipos de datos.)
  • Formatee los datos que deben enviarse a un documento electrónico de generación de acuerdo con el diseño y las condiciones de un formato de ER específico. (Por ejemplo, el formato puede realizarse de acuerdo con el idioma o la cultura solicitada, o la codificación).
  • Controle el proceso de creación de documentos electrónicos. (Por ejemplo, las expresiones pueden habilitar o deshabilitar la salida de elementos específicos del formato, en función de datos de procesamiento. También pueden interrumpir el proceso de creación del documento o enviar mensajes a los usuarios.)

Puede abrir la página Diseñador de fómulas cuando realice cualquiera de las siguientes acciones:

  • Enlazar artículos del origen de datos a los componentes del modelo de datos.
  • Enlazar artículos del origen de datos a componentes de formato.
  • Completar el mantenimiento de campos calculados que forman parte de orígenes de datos.
  • Definir las condiciones de visibilidad para los parámetros de entrada del usuario.
  • Diseñar las transformaciones de un formato.
  • Definir las condiciones de habilitación para los componentes del formato.
  • Definir los nombres de archivo para los componentes de ARCHIVO de formato.
  • Definir las condiciones para las validaciones de control de proceso.
  • Definir el texto de mensaje para las validaciones de control de proceso.

Diseño de las fórmulas de ER

Vinculación de datos

El diseñador de fórmula de ER se puede usar para definir una expresión que transforma datos que se reciben de orígenes de datos, para que se puedan introducir los datos en el consumidor de datos en tiempo de ejecución:

  • Desde los orígenes de datos de la aplicación y los parámetros de tiempo de ejecución a un modelo de datos de ER
  • Desde un modelo de datos de ER a un formato de ER
  • Desde los orígenes de datos de la aplicación y los parámetros de tiempo de ejecución a un modelo de datos de formato ER

En la ilustración siguiente se muestra el diseño de una expresión de este tipo. En este ejemplo, la expresión redondea el valor del campo Intrastat.AmountMST de la tabla Intrastat hasta dos posiciones decimales y luego devuelve el valor redondeado.

Vinculación de datos

En la ilustración siguiente se muestra cómo usar una expresión de este tipo. En este ejemplo, el resultado de la expresión diseñada se introduce en el componente Transaction.InvoicedAmount del modelo de datos Modelo de notificación tributaria.

Vinculación de datos empleada

En el tiempo de ejecución, la fórmula diseñada, ROUND (Intrastat.AmountMST, 2), redondea el valor del campo AmountMST para cada registro de la tabla Intrastat con dos posiciones decimales. A continuación, especifique el valor redondeado en el componente Transaction.InvoicedAmount del modelo de datos Informe de impuestos .

Formato de datos

El diseñador de fórmula de ER se puede usar para definir una expresión que formatea datos que se reciben de orígenes de datos, para que se puedan enviar como parte de la generación de un documento electrónico. Es posible que tenga un formato que debe aplicarse como regla típica que se debe volver a usar para un formato. En este caso, puede introducir ese formato una vez en la configuración del formato, como una transformación nombrada que tiene una expresión del formato. Esta transformación nombrada se puede vincular a continuación a varios componentes de formato si el resultado debe formatearse de acuerdo con la expresión que creó.

En la ilustración siguiente se muestra el diseño de una transformación de este tipo. En este ejemplo, la transformación TrimmedString trunca datos entrantes del tipo de datos Secuencia eliminando espacios principales y finales. A continuación, devuelve el valor de cadena truncado.

Transformación

En la ilustración siguiente se muestra cómo usar una transformación de este tipo. En este ejemplo, varios componentes de formato envían texto como salida al documento electrónico de generación en el tiempo de ejecución. Todos estos componentes de formato hacen referencia a la transformación TrimmedString por nombre.

Transformación que se usa

Cuando los componentes del formato, como el componente partyName en la ilustración anterior, hacen referencia a la transformación TrimmedString, la transformación envía texto como salida al documento electrónico de generación. Este texto no incluye espacios principales y finales.

Si tiene un formato que se debe aplicar de forma individual, puede introducir ese formato como una expresión individual de una vinculación de un componente de formato concreto. En la ilustración siguiente se muestra una expresión de este tipo. En este ejemplo, el componente del formato partyType se vincula al origen de datos mediante una expresión que convierte los datos entrantes del campo Model.Company.RegistrationType del origen de datos en texto en mayúsculas. A continuación, la expresión envía ese texto como salida al documento electrónico de generación.

Aplicar formato a un componente individual

Control de flujo de proceso

El diseñador de fórmulas de ER se puede usar para definir las expresiones que controlan el flujo de proceso de documentos electrónicos de generación. Se pueden llevar a cabo las siguientes tareas:

  • Definir las condiciones que determinan cuándo un proceso de creación de documento se debe detener.
  • Especifique expresiones que creen mensajes para el usuario acerca de los procesos detenidos o lancen mensajes de registro de ejecución acerca de continuar con el proceso de la generación del informe.
  • Especifique los nombres de archivo de los documentos electrónicos de generación y las condiciones de control de su creación.

Cada regla de control de flujo de proceso está diseñada como validación individual. En la ilustración siguiente se muestra una validación de este tipo. Esta es una explicación de la configuración de este ejemplo:

  • La validación se evalúa cuando se crea el nodo INSTAT durante la generación del archivo XML.
  • Si la lista de transacciones está vacía, la validación detiene el proceso de ejecución y devuelve FALSE.
  • La validación devuelve un mensaje de error que incluye el texto de la etiqueta SYS70894 en el idioma preferido del usuario.

Validación

El diseñador de fórmulas de ER también se puede usar para generar un nombre de archivo para un documento electrónico de generación y para controlar el proceso de creación del archivo. En la ilustración siguiente se muestra el diseño de un control de flujo de proceso de este tipo. Esta es una explicación de la configuración de este ejemplo:

  • La lista de registros de origen de datos model.intrastat se divide en lotes. Cada lote contiene hasta 1000 registros.
  • La salida crea un archivo zip que contiene un archivo en formato XML para cada lote que se ha creado.
  • Una expresión devuelve un nombre de archivo para documentos electrónicos de generación concatenando el nombre de archivo y la extensión del nombre de archivo. Para el segundo lote y todos los lotes posteriores, el nombre de archivo contiene el id. de lote como sufijo.
  • Una expresión habilita (devolviendo TRUE) el proceso de creación de archivos para lotes que contengan al menos un registro.

Control del archivo

Controlar el contenido de los documentos

El diseñador de fórmulas de ER se puede usar para configurar expresiones que controlan qué datos se colocarán en los documentos electrónicos generados en el tiempo de ejecución. Las expresiones pueden habilitar o deshabilitar la salida de elementos específicos del formato, en función de datos de procesamiento y la lógica configurada. Esta expresión se puede especificar para un único elemento de formato en el campo Habilitado en la pestaña Asignación en la página Diseñador de operaciones como condición lógica que devuelve el valor Booleano:

  • Cuando se devuelve True, se ejecuta el elemento de formato actual.
  • Cuando se devuelve False, se omite el elemento de formato actual.

La ilustración siguiente muestra expresiones de este tipo (versión 11.12.11 de la configuración de formato de Transferencia de crédito ISO20022 (NO) que Microsoft es un ejemplo). El componente de formato XMLHeader se configura para describir la estructura del mensaje de transferencia de crédito, siguiendo los estándares de mensaje ISO 20022. El componente de formato XMLHeader/Document/CstmrCdtTrfInitn/PmtInf/CdtTrfTxInf/RmtInf/Ustrd se configura para agregarse al mensaje generado, el elemento XML Ustrd y colocar la información del remitente en un formato sin estructura como texto de los siguientes elementos XML:

  • El componente PaymentNotes se usa para generar el texto de notas de pago.
  • El componente DelimitedSequence genera números de factura separados por coma que se utilizan para liquidar la transferencia de crédito actual.

Diseñador de operaciones

Nota

Los componentes PaymentNotes y DelimitedSequence se etiquetan con un signo de interrogación. Esto significa que el uso de los componentes es condicional, en función de los criterios siguientes:

  • Definida para el componente PaymentNote, la expresión @.PaymentsNotes<>"" habilita (cuando devuelve TRUE) la capacidad de rellenar el elemento XML Ustrd, el texto de las notas de pago cuando este texto para la transferencia de crédito actual no está vacía.

Diseñador de operaciones

  • Definida para el componente DelimitedSequence, la expresión @.PaymentsNotes="" habilita (cuando devuelve TRUE) la capacidad de rellenar el elemento XML Ustrd, números de factura separados por coma que se utilizan para liquidar la transferencia de crédito actual cuando el texto de las notas de pago para esta transferencia de crédito está vacía.

Diseñador de operaciones

En base a este valor, el mensaje generado para cada pago del deudor, elemento XML Ustrd, contendrá el texto de las notas de pago o, cuando este texto está vacío, números de factura separados por comas que se usan para liquidar este pago.

Sintaxis básica

Las expresiones de ER pueden contener todo los elementos siguientes o cualquiera de ellos:

  • Constantes
  • Operadores
  • Referencias
  • Rutas
  • Funciones

Constantes

Cuando diseñe expresiones, puede usar constantes de texto y numéricas (es decir, valores que no se calculan). Por ejemplo, la expresión VALUE ("100") + 20 usa la constante numérica 20 y la constante de cadena "100" y devuelve el valor numérico 120. El diseñador de fórmulas de ER admite secuencias de escape. Por lo tanto, puede especificar una cadena de expresión que debe gestionarse de forma diferente. Por ejemplo, la expresión "Leo Tolstoy ""Guerra y paz"" Volumen 1" devuelve la cadena de texto Leo Tolstoy "Guerra y paz" Volumen 1.

Operadores

La tabla siguiente muestra los operadores aritméticos que puede usar para realizar operaciones matemáticas básicas, como suma, resta, multiplicación y división.

Operador Significado Ejemplo
+ Adición 1+2
- Resta, negación 5-2, -1
* Multiplicación 7*8
/ División 9/3

La tabla siguiente muestra los operadores de comparación que se admiten. Puede utilizar estos operadores para comparar dos valores.

Operador Significado Ejemplo
= Igual X=Y
> Mayor que X>Y
< Menor que X<Y
>= Superior a o igual a X>=Y
<= Inferior a o igual a X<=Y
<> No igual que X<>Y

Además, puede usar un signo (&) como operador de concatenación de texto. De esta manera, puede unir, o concatenar, una o más cadenas de texto en una única pieza de texto.

Operador Significado Ejemplo
& Concatenar "No hay nada que imprimir" & ": " & "no se encuentran registros"
Prevalencia del operador

El orden en el que se evalúan las partes de una expresión compuesta es importante. Por ejemplo, el resultado de la expresión 1 + 4/2 varía en función de si la operación de adición o la operación la división se realiza primero. Puede usar paréntesis para definir explícitamente la manera en que se evalúa una expresión. Por ejemplo, para indicar que la operación de adición debe realizarse primero, puede cambiar la expresión precedente a (1 + 4) / 2. Si no indica explícitamente el orden de las operaciones en una expresión, el orden se basa en la prioridad predeterminada que se asigna a los operadores admitidos. En la siguiente tabla se muestra la prioridad que se asigna a cada operador. Los operadores que tienen una mayor prioridad (por ejemplo, 7) se evalúan antes que los operadores que tienen una prioridad más baja (por ejemplo, 1).

Precedencia Operadores Sintaxis
7 Agrupación ( … )
6 Acceso a miembros … . …
5 Llamada de función … ( … )
4 Multiplicativa … * …
… / …
3 Aditivo … + …
… - …
2 Comparación … < …
… <= …
… => …
… > …
… = …
… <> …
1 Separación … , …

Si una expresión incluye múltiples operadores consecutivos que tienen la misma prioridad, dichas operaciones se evalúan de izquierda a derecha. Por ejemplo, la expresión 1 + 6 / 2 * 3 > 5 devuelve true. Se recomienda usar paréntesis para indicar explícitamente el orden deseado de operaciones en las expresiones, de manera que las expresiones resulten más sencills de leer y mantener.

Referencias

Todos los orígenes de datos del componente del ER actual que están disponibles durante el diseño de una expresión se pueden usar como referencias con nombre. (El componente actual de ER puede ser un modelo o un formato). Por ejemplo, el modelo de datos actual de ER contiene el origen de datos ReportingDate, y este origen de datos devuelve un valor del tipo de datos DATETIME. Para dar formato correctamente a ese valor en el documento que lo genera, puede hacer referencia el origen de datos en la expresión DATETIMEFORMAT (ReportingDate, "dd-MM-yyyy").

Todos los caracteres en el nombre de un origen de datos de referencia que no representan una letra del alfabeto deben venir precedidos de una comilla simple ('). Si el nombre de un origen de datos de referencia incluye al menos un símbolo que no representa una letra del alfabeto, el nombre debe estar entre comillas simples. (Por ejemplo, estos símbolos no alfabéticos pueden ser signos de puntuación u otros símbolos escritos.) A continuación se muestran algunos ejemplos:

  • Se debe hacer referencia al origen de datos Hora y día hoy en una expresión de ER de la siguiente manera: 'Hora y día hoy'.
  • Debe hacerse referencia al método name() del origen de datos Clientes en una expresión de ER de la siguiente manera: Customers.'name()'.

Si los métodos de orígenes de datos de la aplicación tienen parámetros, la siguiente sintaxis se utiliza para asignar un nombre a dichos métodos:

  • Si el método isLanguageRTL del origen de datos Sistema tiene un parámetro EN-US del tipo de datos Cadena, este método debe hacer referencia a una expresió de ER como System.'isLanguageRTL'("EN-US").
  • Las comillas no son necesarias cuando un nombre del método solo contiene símbolos alfanuméricos. Sin embargo, se requieren para un método de una tabla si el nombre incluye corchetes.

Cuando se agrega el origen de datos Sistema a la asignación de ER que hace referencia a la clase de aplicación Global, la expresión devuelve el valor booleano FALSE. La expresión modificada System.' isLanguageRTL'("AR") devuelve el valor booleano TRUE.

Puede limitar la forma en que los valores se pasan a los parámetros de este tipo de método:

  • Únicamente las constantes se pueden pasar a los métodos de este tipo. Los valores de las constantes se definen en el tiempo de diseño.
  • Solo se admiten tipos de datos primitivos (básicos) para los parámetros de este tipo. (Los tipos de datos primitivos son entero, real, booleano, cadena, etc.)

Rutas

Cuando una expresión hace referencia a un origen de datos estructurado, puede usar la definición de ruta para seleccionar un elemento primitivo específico de ese origen de datos. Un carácter de punto (.) se usa para separar elementos individuales de un origen de datos estructurado. Por ejemplo, el modelo de datos actual de ER contiene el origen de datos InvoiceTransactions, y este origen de datos devuelve una lista de registros. La estructura de registros InvoiceTransactions contiene los campos AmountDebit y AmountCredit, y estos campos devuelven valores numéricos. Por tanto, puede diseñar la siguiente expresión para calcular el importe facturado: InvoiceTransactions.AmountDebit - InvoiceTransactions.AmountCredit.

Funciones

La sección siguiente describe las funciones que se pueden usar en expresiones de ER. Todos los orígenes de datos del contexto de la expresión (el modelo de datos de ER o formato actual de ER) pueden usarse como parámetros de funciones de llamada de acuerdo con la lista de argumentos de las funciones de llamada. Las constantes también se pueden usar como parámetros de las funciones de llamada. Por ejemplo, el modelo de datos actual de ER contiene el origen de datos InvoiceTransactions, y este origen de datos devuelve una lista de registros. La estructura de registros InvoiceTransactions contiene los campos AmountDebit y AmountCredit, y estos campos devuelven valores numéricos. Por tanto, para calcular el importe facturado, puede diseñar la siguiente expresión que usa la función de redondeo incorporada de ER: ROUND (InvoiceTransactions.AmountDebit - InvoiceTransactions.AmountCredit, 2).

Funciones no permitidas.

Las siguientes tablas describen las funciones de manipulación de datos que puede usar para diseñar modelos de datos de ER e informes de ER. La lista de funciones no es fija. Los desarrolladores pueden ampliarlo. Para ver la lista de funciones que puede usar, abra el panel de funciones del diseñador de fórmulas de ER.

Funciones de fecha y de tiempo

Función Descripción Ejemplo
ADDDAYS (fecha y hora, días) Agregar el número específico de días al valor especificado de fecha/hora. ADDDAYS (NOW(), 7) devuelve la fecha y la hora siete días en el futuro.
DATETODATETIME (fecha) Convertir el valor de la fecha especificada en un valor de fecha/hora. DATETODATETIME (CompInfo. 'getCurrentDate()') devuelve la fecha de la sesión actual de Finance and Operations, 24 de diciembre de 2015, como 12/24/2015 12:00:00 AM. En este ejemplo, CompInfo es un origen de datos de ER del tipo Finance and Operations/Tabla y hace referencia a la tabla CompanyInfo.
NOW () Devolver la fecha y hora actuales del servidor de aplicaciones como un valor de fecha y hora.
TODAY () Devolver la fecha y hora actuales del servidor de aplicaciones como un valor de fecha.
NULLDATE () Devolver un valor de fecha nulo.
NULLDATETIME () Devuelve un valor de fecha/hora nulo.
DATETIMEFORMAT (fecha y hora, formato) Convertir el valor de fecha/hora especificado a una cadena en el formato especificado. (Para obtener información acerca de los formatos admitidos, vea estándar y personalizado.) DATETIMEFORMAT (NOW(), "dd-MM-yyyy”) devuelve la fecha del servidor actual, 24 de diciembre de 2015, como “24-12-2015”, basado en el formato personalizado especificado.
DATETIMEFORMAT (fecha y hora, formato, cultura) Convertir el valor de fecha/hora especificado a una cadena en el formato y cultura especificados. (Para obtener información acerca de los formatos admitidos, vea estándar y personalizado.) DATETIMEFORMAT (AHORA(), "d", "de") devuelve la fecha actual del servidor de aplicaciones, 24 de diciembre de 2015, como “24.12.2015", basada en la cultura alemana seleccionada.
SESSIONTODAY () Devolver la fecha y hora actuales de la sesión de aplicaciones como un valor de fecha.
SESSIONNOW () Devolver la fecha y hora actuales de la sesión de aplicaciones como un valor de fecha y hora.
DATEFORMAT (fecha, formato) Devuelve una representación de cadena de la fecha especificada en el formato especificado. DATEFORMAT (SESSIONTODAY (), "dd-MM-yyyy”) devuelve la fecha de sesión actual de la aplicación, 24 de diciembre de 2015, como “24-12-2015”, basado en el formato personalizado especificado.
DATEFORMAT (fecha, formato, cultura) Convertir el valor de fecha especificado en una cadena en el formato y cultura especificados. (Para obtener información acerca de los formatos admitidos, vea estándar y personalizado.) DATETIMEFORMAT (SESSIONNOW (), "d", "de") devuelve la fecha de sesión actual de la aplicación, 24 de diciembre de 2015, como “24.12.2015", basada en la cultura alemana seleccionada.
DAYOFYEAR (fecha) Devuelve una representación de número entero de los días entre el 1 de enero y la fecha especificada. DAYOFYEAR (DATEVALUE ("01-03-2016", "dd-MM-aaaa")) devuelve 61. DAYOFYEAR (DATEVALUE ("01-01-2016", "dd-MM-aaaa")) devuelve 1.
DAYS (date 1, date 2) Devuelve el número de días entre la primera fecha especificada y la segunda fecha especificada. Devuelve un valor positivo cuando la primera fecha es posterior a la segunda fecha, devuelve 0 (cero) cuando la primera fecha es igual a la segunda fecha, o devuelve un valor negativo cuando la primera fecha es anterior a la segunda fecha. DAYS (TODAY (), DATEVALUE( DATETIMEFORMAT( ADDDAYS(NOW(), 1), "yyyyMMdd"), "yyyyMMdd")) devuelve -1.

Funciones de conversión de datos

Función Descripción Ejemplo
DATETODATETIME (fecha) Convertir el valor de la fecha especificada en un valor de fecha/hora. DATETODATETIME (CompInfo. 'getCurrentDate()') devuelve la fecha de la sesión actual de Finance and Operations, 24 de diciembre de 2015, como 12/24/2015 12:00:00 AM. En este ejemplo, CompInfo es un origen de datos de ER del tipo Finance and Operations/Tabla y hace referencia a la tabla CompanyInfo.
DATEVALUE (cadena, formato) Devuelve una representación de fecha de la cadena especificada en el formato especificado. DATEVALUE ("21-Dic-2016", "dd-MMM-yyyy") devuelve la fecha 21 de diciembre de 2016 basada en un formato especificado y la cultura predeterminada EN-US de la aplicación.
DATEVALUE (cadena, formato, cultura) Devuelve una representación de la fecha de la cadena especificada en el formato y la cultura personalizados y especificados. DATEVALUE ("21-Gen-2016", "dd-MMM-yyyy", "IT") devuelve la fecha 21 de enero de 2016 basada en el formato y la cultura personalizados Sin embargo, DATEVALUE ("21-Gen-2016", "dd-MMM-yyyy", "EN-US") lanza una excepción para informar al usuario de que la cadena especificada no se reconoce como fecha válida.
DATETIMEVALUE (cadena, formato) Devuelve una representación de fecha/hora de la cadena especificada en el formato especificado. DATETIMEVALUE ("21-Dec-2016 02:55:00", "dd-MMM-yyyy hh:mm:ss") devuelve las 2:55:00 a.m. del 21 de diciembre de 2016, según el formato personalizado y especificado y la cultura predeterminada EN-US de la aplicación.
DATETIMEVALUE (cadena, formato, cultura) Devuelve una representación de la fecha/hora de la cadena especificada en el formato y la cultura especificados. DATETIMEVALUE ("21-Gen-2016 02:55:00", "dd-MMM-yyyy hh:mm:ss", "IT") devuelve las 2:55:00 a.m. del 21 de diciembre de 2016, según el formato y la cultura personalizados y especificados. Sin embargo, DATETIMEVALUE ("21-Gen-2016 02:55:00", "dd-MMM-yyyy hh:mm:ss", "EN-US") lanza una excepción para informar al usuario de que la cadena especificada no se reconoce como fecha/hora válida.

Funciones de lista

Función Descripción Ejemplo
SPLIT (entrada, longitud) Dividir la cadena de entrada especificada en subcadenas y cada una de las cuales tiene la duración especificada. Devolver el resultado como nueva lista. SPLIT ("abcd", 3) devuelve una nueva lista que consta de dos registros que tienen un campo STRING. El campo del primer registro contiene el texto "abc" y el campo del segundo registro contiene el texto "d".
SPLIT (entrada, delimitador) Dividir la cadena de entrada especificada en subcadenas, basadas en el delimitador especificado. SPLIT ("XAb aBy", "aB") devuelve una nueva lista que consta de tres registros que tienen un campo STRING. El campo del primer registro contiene texto "X", el campo del segundo registro contiene texto " ", y el campo del tercer registro contiene el texto "y". Si el delimitador está vacío, se devuelve una nueva lista que consiste en un registro que tiene un campo STRING que contiene el texto de entrada. Si la entrada está vacía, se devuelve una nueva lista vacía. Si la entrada o el delimitador están sin especificar (null), se emite una excepción de la aplicación.
SPLITLIST (lista, número) Dividir la lista especificada en lotes que contenga cada uno el número de registros especificado. Devolver el resultado como nueva lista de lotes que contenga los elementos siguientes:
  • Lotes como listas regulares (componente Valor)
  • El número de lote actual (componente BatchNumber)
En la siguiente ilustración, se crea un origen de datos Líneas como una lista de registro de tres registros. Esta lista se divide en lotes, cada uno contiene hasta dos registros.

Data source that is divided into batches

La siguiente ilustración muestra el diseño del formato. En este diseño de formato, se crean enlaces al origen de datos Líneas para generar una salida en formato XML. Esta salida presenta nodos individuales para cada lote y los registros en él.

Format layout that has bindings to a data source

La siguiente ilustración muestra el resultado cuando se ejecuta el formato diseñado.

Result of running the format
LIST (registro 1 [, registro 2, …]) Devolver una nueva lista creada a partir de argumentos especificados. LIST (model.MainData, model.OtherData) devuelve un registro vacío, en el que la lista de campos contiene todos los campos de las listas de registros MainData y OtherData.
LISTJOIN (lista 1, lista 2, …]) Devolver una nueva lista combinada que se crea a partir de argumentos especificados. LISTJOIN (SPLIT ("abc", 1), SPLIT ("def", 1)) devuelve una lista de seis registros, donde un campo del tipo de datos STRING contiene letras individuales.
ISEMPTY (lista) Devuelve TRUE si la lista especificada no contiene elementos. En caso contrario, devuelva FALSE.
EMPTYLIST (lista) Devolver una lista vacía mediante la lista especificada como origen para la estructura de la lista. EMPTYLIST (SPLIT ("abc", 1)) devuelve una nueva lista vacía que tiene la misma estructura que la lista que se devuelve por la función SPLIT.
FIRST (lista) Devolver el primer registro de la lista especificada, si dicho registro no está vacío. En caso contrario, genera una excepción.
FIRSTORNULL (lista) Devolver el primer registro de la lista especificada, si dicho registro no está vacío. En caso contrario, devuelve un registro nulo.
LISTOFFIRSTITEM (lista) Devuelve una lista que contiene solo el primer elemento de la lista especificada.
ALLITEMS (ruta) Esta función se ejecuta como una selección en memoria. Devuelve una lista nueva aplanada que representa todos los elementos correspondientes a la ruta de acceso especificada. La ruta se debe definir como ruta válida de un origen de datos a un elemento de origen de datos del tipo de datos de la lista de registro. Elementos de datos como la cadena de ruta y la fecha deberían activar un error en el tiempo de diseño del generador de expresiones de ER. Si especifica SPLIT("abcdef" , 2) como origen de datos (DS), COUNT( ALLITEMS (DS.Value)) devuelve 3.
ALLITEMSQUERY (ruta) Esta función se ejecuta como consulta SQL combinada. Devuelve una lista nueva aplanada que representa todos los elementos correspondientes a la ruta de acceso especificada. La ruta especificada se debe definir como ruta válida de un origen de datos a un elemento de origen de datos del tipo de datos de la lista de registro, y debe contener al menos una relación. Elementos de datos como la cadena de ruta y la fecha deberían activar un error en el tiempo de diseño del generador de expresiones de ER. Defina los siguientes orígenes de datos en la asignación de su modelo:
  • CustInv (Tipo de registros de tabla), que hace referencia a la tabla CustInvoiceTable
  • FilteredInv (Tipo de campo calculado), que contiene la expresión FILTER (CustInv, CustInv.InvoiceAccount = "US-001")
  • JourLines (Tipo de campo calculado), que contiene la expresión ALLITEMSQUERY (FilteredInv. '<Relations'.CustInvoiceJour. '<Relations'.CustInvoiceTrans)

Cuando ejecute la asignación de su modelo para llamar al origen de datos JourLines, se ejecuta la siguiente instrucción SQL:

SELECCIONAR… DE LA COMBINACIÓN CRUZADA T1 CUSTINVOICETABLE COMBINACIÓN CRUZADA T2 CUSTINVOICEJOUR COMBINACIÓN CRUZADA T3 CUSTINVOICETRANS DONDE...
ORDERBY (lista [, expresión 1, expresión 2, …]) Devuelve la lista especificada después de que se haya clasificado de acuerdo con los argumentos especificados. Estos argumentos se pueden definir como expresiones. Si Proveedor se configura como un origen de datos de ER que hace referencia a la tabla VendTable, ORDERBY (Vendors, Vendors.'name()') devuelve una lista de proveedores que se clasifica por nombre en orden ascendente.
REVERSE (lista) Devolver la lista especificada en orden de clasificación invertido. Cuando Proveedor se configura como origen de datos de ER que hace referencia a la tabla VendTable, REVERSE (ORDERBY (Vendors, Vendors.'name()')) ) devuelva la lista de proveedores que se clasifica por nombre en orden descendente.
WHERE (lista, condición) Devuelve la lista especificada después de que se haya filtrado de acuerdo con la condición especificada. La condición especificada se aplica a la lista en memoria. De esta manera, la función DONDE se diferencia de la función FILTRO. Si Proveedor se configura como origen de datos de ER que hace referencia a la tabla VendTable, WHERE(Vendors, Vendors.VendGroup = "40") devuelve una lista solo de proveedores que pertenece al grupo de proveedores 40.
ENUMERATE (lista) Devolver una nueva lista que consta de los registros enumerados de la lista especificada y que expone los siguientes elementos:
  • Registros especificados como listas regulares (componente Valor)
  • El índice de registros actual (componente Número)
En la ilustración siguiente, un origen de datos Enumerado se crea como una lista enumerada de registros de proveedor desde el origen de los datos Proveedores que hace referencia a la tabla VendTable.

Enumerated data source

La siguiente ilustración muestra el formato. En este formato, se crean vínculos de datos para generar una salida en formato XML. Esta salida presenta proveedores individuales como nodos enumerados.

Format that has data bindings

La siguiente ilustración muestra el resultado cuando se ejecuta el formato diseñado.

Result of running the format
COUNT (lista) Devolver el número de registros de la lista especificada, si la lista no está vacía. En caso contrario, devuelva 0 (cero). COUNT (SPLIT("abcd" , 3)) devuelve 2, porque la función SPLIT crea una lista que consta de dos registros.
LISTOFFIELDS (ruta) Devuelve una lista de registros que se crea a partir de un argumento de uno de los siguientes tipos:
  • Enumeración de modelo
  • Enumeración de formato
  • Contenedor

La lista que se crea consta de registros con los siguientes campos:

  • Nombre
  • Etiqueta
  • Descripción
En el tiempo de ejecución, los campos de Etiqueta y Descripción devuelve valores que se basan en la configuración de idioma del formato.
En la siguiente ilustración, se introduce una enumeración en un modelo de datos.

Enumeration in a model

La siguiente ilustración muestra estos detalles:

  • La enumeración del modelo se inserta en un informe como origen de datos.
  • Una expresión del ER utiliza la enumeración de modelo como un parámetro de la función LISTOFFIELDS.
  • Un origen de datos del tipo lista de registro se inserta en un informe mediante la expresión de ER que se crea.

Format

El siguiente ejemplo muestra los elementos del formato de ER que están enlazados al origen de datos del tipo lista de registro creado mediante la función de LISTOFFIELDS.

Format design

La siguiente ilustración muestra el resultado cuando se ejecuta el formato diseñado.

Format output

[!NOTE] Basado en la configuración de idioma de los elementos del formato del ARCHIVO principal y de la CARPETA, el texto traducido para las etiquetas y las descripciones se introduce en la salida del formato de ER.
LISTOFFIELDS (ruta, idioma) Devuelve una lista de registros que se crea desde un argumento, como una enumeración de modelo, una enumeración de formato o un contenedor. La lista que se crea consta de registros con los siguientes campos:
  • Nombre
  • Etiqueta
  • Descripción
  • Traducido
En el tiempo de ejecución, los campos de Etiqueta y Descripción devuelve valores que se basan en la configuración de idioma del formato y el idioma especificado. El campo Traducido indica que el campo Etiqueta se ha traducido al idioma especificado.
Por ejemplo, utiliza el tipo de origen de datos Campo calculado para configurar los orígenes de datos enumType_de y enumType_deCH para la enumeración del modelo de datos enumType.
  • enumType_de = LISTOFFIELDS (enumType, "de")
  • enumType_deCH = LISTOFFIELDS (enumType, "de-CH")

En este caso, puede usar la siguienteexpresión para obtener la etiqueta del valor de enumeración en alemán suizo, si esta traducción está disponible. Si la traducción alemana suiza no está disponible, la etiqueta se encuentra en alemán.

IF (NOT (enumType_deCH.IsTranslated), enumType_de.Label, enumType_deCH.Label)
STRINGJOIN (lista, nombre de campo, delimitador) Devuelve una cadena que consta de valores concatenados del campo especificado de la lista especificada. Los valores están separados por el delimitador especificado. Si introduce SPLIT("abc" , 1) como un origen de datos (DS), STRINGJOIN (DS, DS.Value, "-") devuelve "a-b-c".
SPLITLISTBYLIMIT (lista, valor límite, origen del límite) Divide la lista especificada en una nueva lista de sublistas y devuelve el resultado en contenido de la lista del registro. El parámetro de valor límite define el valor del límite para dividir la lista original. El parámetro de origen del límite define el paso en que la suma total aumenta. El límite no se aplica a un único artículo de la lista original si el origen del límite supera el límite definido. La siguiente ilustración muestra un formato.

Format

La siguiente ilustración muestra los orígenes de datos que se usan para el formato.

Data sources

La siguiente ilustración muestra el resultado cuando se ejecuta el formato. En este caso, la salida es una lista plana de artículos de mercancía.

Output

En las siguientes ilustraciones, se ha ajustado el mismo formato para que presente la lista de artículos de mercancías en lotes cuando un único lote debe incluir mercancías y el peso total no debe superar el límite de 9.

Adjusted format

Data sources for the adjusted format

La siguiente ilustración muestra el resultado cuando se ejecuta el formato ajustado.

Output of the adjusted format

[!NOTE] El límite no se aplica al último artículo de la lista original ya que el valor (11) del origen de su límite (peso) supera el límite definido (9). Use la función DONDE o la expresión Habilitado del elemento de formato correspondiente para omitir (saltar) las sublistas durante la generación de informes, si es necesario.
FILTRAR (lista, condición) Devuelve la lista especificada después de que se haya modificado la consulta para filtrar por la condición especificada. Esta función difiere de la función DONDE, ya que la condición especificada se aplica a cualquier origen de datos de ER del tipo Registros de la tabla a nivel de la base de datos. La lista y la condición se pueden definir mediante tablas y relaciones. Si Proveedor se configura como origen de datos de ER que hace referencia a la tabla VendTable, FILTER (Vendors, Vendors.VendGroup = "40") devuelve una lista solo de proveedores que pertenece al grupo de proveedores 40. Si Proveedor se configura como origen de datos de ER que hace referencia a la tabla VendTable, y si parmVendorBankGroup que está configurado como un origen de datos de ER que devuelve un valor del tipo de datos Cadena, FILTER (Vendor.'<Relations'.VendBankAccount, Vendor.'<Relations'.VendBankAccount.BankGroupID = parmVendorBankGroup) devuelve una lista solo de cuentas de proveedores que pertenecen a un grupo bancario específico.
INDEX (lista, índice) Esta función devuelve un registro que se selecciona mediante un índice numérico específico en la lista. Se produce una excepción si el índice está fuera del intervalo de los registros de la lista. Si especifica el origen de datos DS para el tipo Campo calculado y este contiene la expresión SPLIT ("A|B|C", “|”), 2, la expresión DS.Value devuelve el valor de texto, “B”. La expresión INDEX (SPLIT ("A|B|C", “|”), 2).Value también devuelve el valor de texto ”B”.

Funciones lógicas

Función Descripción Ejemplo
CASE (expression, option 1, result 1 [, option 2, result 2] … [, default result]) Evaluar el valor de la expresión especificado con las opciones alternativas especificadas. Devolver el resultado de la opción que es igual al valor de la expresión. De lo contrario, devuelve el resultado predeterminado opcional, si se especifica un resultado predeterminado. (El resultado predeterminado es el último parámetro al que no le antecede una opción.) CASE( DATETIMEFORMAT( NOW(), "MM"), "10", "INVIERNO", "11", "INVIERNO", "12", "INVIERNO", "") devuelve la cadena "INVIERNO" cuando la fecha de la sesión de la aplicación actual se encuentra entre octubre y diciembre. En caso contrario, devuelve una cadena en blanco.
SI (condición, valor 1, valor 2) Devuelve el primer valor especificado cuando se cumple la condición especificada. De lo contrario, devuelva el segundo valor especificado. Si el valor 1 y el valor 2 son registros o listas de registro, el resultado tiene solo los campos que existan en ambas listas. IF (1=2, "se cumple la condición", "no se cumple la condición") devuelve la cadena "no se cumple la condición".
NOT (condición) Devuelve el valor lógico invertido de la condición determinada. NOT (TRUE) devuelve FALSE.
AND (condición 1[, condición 2, …]) Devolver TRUE si todas las condiciones especificadas son verdaderas. En caso contrario, devuelva FALSE. AND (1=1, "a"="a") devuelve TRUE. AND (1=2, "a"="a") devuelve FALSE.
OR (condición 1[, condición 2, …]) Devolver FALSE si todas las condiciones especificadas son falsa. Devolver TRUE si cualquier condición especificada es verdadera. OR (1=2, "a"="a") devuelve TRUE.
VALUEIN (entrada, lista, expresión del elemento de lista) Determine si la entrada especificada coincide con algún valor de un elemento de la lista especificada. Devuelve TRUE si la entrada especificada coincide con el resultado de la ejecución de la expresión especificada para un registro como mínimo. En caso contrario, devuelva FALSE. El parámetro input representa la ruta de un elemento de origen de datos. El valor de este artículo se conciliará. El parámetro list representa la ruta de un elemento de origen de datos de tipo lista de registro como lista de registros que contiene una expresión. El valor de este elemento se comparará con la entrada especificada. El argumento expresión del elemento de lista representa una expresión que señala o contiene un único campo de la lista especificada que se debe usar para la asignación. Para ver ejemplos, consulte la sección Ejemplos: VALUEIN (entrada, lista, expresión del elemento de lista) que se incluye a continuación.

Ejemplos: VALUEIN (entrada, lista, expresión del elemento de lista)

En general, la función VALUEIN se convierte a un conjunto de condiciones O :

(entrada = list.item1.value) O (entrada = list.item2.value) O…

Ejemplo 1

Defina el origen de datos siguiente en su asignación de modelo: Lista (tipo Campo calculado). Este origen de datos contiene la expresión SPLIT ("a,b,c", ",").

Cuando se llama a un origen de datos que está configurado con la expresión VALUEIN ("B", List, List.Value), devuelve TRUE. En este caso, la función VALUEIN se convierte en el conjunto de condiciones siguiente:

(("B" = "a") o ("B" = "b") or ("B" = "c")), donde ("B" = "b") es igual a TRUE

Cuando se llama a un origen de datos que está configurado con la expresión VALUEIN ("B", List, LEFT(List.Value, 0)), devuelve FALSE. En este caso, la función VALUEIN se convierte en la condición siguiente:

("B" = ""), que no es igual a TRUE

Observe que el límite superior del número de caracteres en el texto de esta condición es 32.768 caracteres. Por lo tanto, no es necesario crear orígenes de datos que puedan superar este límite en el tiempo de ejecución. Si se supera el límite, la aplicación dejará de ejecutarse, y se generará una excepción. Por ejemplo, esta situación puede producirse si el origen de datos se configura como WHERE (List1, VALUEIN (List1.ID, List2, List2.ID), y las listas List1 y List2 contienen un gran número de registros.

En algunos casos, la función VALUEIN se convierte en una instrucción de una base de datos mediante el operador EXISTS JOIN. Este comportamiento aparece cuando se utiliza la función FILTER y se cumplen las siguientes condiciones:

  • La opción PEDIR CONSULTA se desactiva para el origen de datos de la función VALUEIN que se refiere a la lista de registros. (No se aplicarán condiciones adicionales a este origen de datos en el tiempo de ejecución.)
  • No se configuran expresiones anidadas para el origen de datos de la función VALUEIN que se refiere a la lista de registros.
  • Un elemento de lista de la función VALUEIN hace referencia a un campo (no una expresión o un método) del origen de datos especificado.

Considere usar esta opción en lugar de la función WHERE tal como se describe anteriormente en este ejemplo.

Ejemplo 2

Defina los siguientes orígenes de datos en la asignación de su modelo:

  • In (Tipo de registros de tabla), que hace referencia a la tabla Instrastat
  • Port (Tipo de registros de tabla), que hace referencia a la tabla IntrastatPort

Cuando se llama a un origen de datos que está configurado como la expresión FILTER (In, VALUEIN(In.Port, Port, Port.PortId), la instrucción SQL siguiente se genera para devolver registros filtrados de la tabla Intrastat:

select … from Intrastat
exists join TableId from IntrastatPort
where IntrastatPort.PortId = Intrastat.Port

Para los campos dataAreaId , la instrucción SQL final se genera usando el operador IN.

Ejemplo 3

Defina los siguientes orígenes de datos en la asignación de su modelo:

  • Le (Tipo de Campo calculado ), que contiene la expresión SPLIT ("DEMF,GBSI,USMF", ",")
  • In (Tipo de Registros de tabla), que hace referencia a la tabla Intrastat y para el que está activado la opción Entre empresas

Cuando se llama a un origen de datos que está configurado como la expresión FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value), la instrucción SQL final contiene la siguiente condición:

Intrastat.dataAreaId IN ('DEMF', 'GBSI', 'USMF')

Funciones matemáticas

Función Descripción Ejemplo
ABS (número) Devuelve el valor absoluto del número especificado. (Es decir, devuelva el número sin su signo). ABS (-1) devuelve 1.
POWER (número, potencia) Devolver el resultado de elevar el número positivo especificado a la potencia especificada. POWER (10, 2) devuelve 100.
NUMBERVALUE (cadena, separador decimal, separador de agrupación de dígitos) Convertir la cadena especificada en un número. El separador decimal especificado se utiliza entre el número entero y las partes fraccionarias de un número decimal. El separador de agrupación de dígitos especificado se utiliza como separador de millares. NUMBERVALUE("1 234,56", ",", " ") devuelve el valor 1234,56.
VALUE (cadena) Convertir la cadena especificada en un número. Las comas y los caracteres de punto (.) se consideran separadores decimales y los guiones iniciales (-) se usan como signo negativo. Genere una excepción si la cadena especificada contiene otros caracteres no numéricos. VALUE ("1 234,56") genera una excepción.
ROUND (número, decimales) Devuelve el número especificado después de que se haya redondeado al número especificado de posiciones decimales:
  • Si el valor de los parámetros decimales es superior a 0 (cero), el número especificado se redondea a ese número de decimales.
  • Si el valor de los parámetros decimales es 0 (cero), el número especificado se redondea al número entero más cercano.
  • Si el valor de los parámetros decimales es inferior a 0 (cero), el número especificado se redondea a la izquierda de la coma decimal.
ROUND (1200,767, 2) redondea a dos lugares decimales y devuelve 1200,77. ROUND (1200.767, -3) redondea al múltiplo más cercano de 1.000 y devuelve 1000.
ROUNDDOWN (número, decimales) Devolve el número especificado después de que se haya redondeado hacia abajo al número especificado de posiciones decimales.
[!NOTE] Esta función se comporta como ROUND, pero siempre redondea hacia abajo del número especificado (hacia cero).
ROUNDDOWN (1200,767, 2) redondea hacia abajo a dos lugares decimales y devuelve 1200,76. ROUNDDOWN (1700.767, -3) redondea hacia abajo al múltiplo más cercano de 1.000 y devuelve 1000.
ROUNDUP (número, decimales) Devuelve el número especificado después de que se haya redondeado hacia arriba al número especificado de posiciones decimales.
[!NOTE] Esta función se comporta como ROUND, pero siempre redondea hacia arriba el número especificado (lejos de cero).
ROUNDUP (1200,763, 2) redondea hacia arriba a dos lugares decimales y devuelve 1200,77. ROUNDUP (1200.767, -3) redondea hacia arriba al múltiplo más cercano de 1.000 y devuelve 2000.

Funciones de conversión de datos

Función Descripción Ejemplo
VALUE (cadena) Convertir la cadena especificada en un número. Las comas y los caracteres de punto (.) se consideran separadores decimales y los guiones iniciales (-) se usan como signo negativo. Genere una excepción si la cadena especificada contiene otros caracteres no numéricos. VALUE ("1 234,56") genera una excepción.
NUMBERVALUE (cadena, separador decimal, separador de agrupación de dígitos) Convertir la cadena especificada en un número. El separador decimal especificado se utiliza entre el número entero y las partes fraccionarias de un número decimal. El separador de agrupación de dígitos especificado se utiliza como separador de millares. NUMBERVALUE("1 234,56", ",", " ") devuelve 1234.56.
INTVALUE (cadena) Devuelve una representación de un entero de la cadena especificada. Se trunca cualquier posición decimal. INTVALUE ("100.77") devuelve 100.
INTVALUE (número) Devuelve una representación de un entero del número especificado. Se trunca cualquier posición decimal. INTVALUE (-100,77) devuelve 100.
INT64VALUE (cadena) Devuelve una representación int64 de la cadena especificada. Se trunca cualquier posición decimal. INT64VALUE ("22565422744") devuelve 22565422744.
INT64VALUE (número) Devuelve una representación int64 del número especificado. Se trunca cualquier posición decimal. INT64VALUE (22565422744.00) devuelve 22565422744.

Funciones de registro

Función Descripción Ejemplo
NULLCONTAINER (lista) Devolver un registro nulo con la misma estructura que el registro o la lista de registros especificada.
[!NOTE] Esta función es obsoleta. Use EMPTYRECORD en su lugar.
NULLCONTAINER (SPLIT ("abc", 1)) devuelve un nuevo registro vacía que tiene la misma estructura que la lista que se devuelve por la función SPLIT.
EMPTYRECORD (registro) Devolver un registro nulo con la misma estructura que el registro o la lista de registros especificada.
[!NOTE] Un registro nulo es un registro donde todos los campos tienen un valor vacío. Un valor vacío es 0 (cero) para números, una cadena vacía para las cadenas, y así sucesivamente.
EMPTYRECORD (SPLIT ("abc", 1)) devuelve un nuevo registro vacía que tiene la misma estructura que la lista que se devuelve por la función SPLIT.

Funciones de texto

Función Descripción Ejemplo
UPPER (cadena) Devuelve la cadena especificada después de que se haya convertido en letras mayúsculas. UPPER ("Muestra") devuelve "MUESTRA".
LOWER (cadena) Devuelve la cadena especificada después de que se haya convertido en letras minúsculas. LOWER ("Muestra") devuelve "muestra".
LEFT (cadena, número de caracteres) Devuelve el número especificado de caracteres desde el inicio de la cadena especificada. LEFT ("Muestra", 3) devuelve "Sam".
RIGHT (cadena, número de caracteres) Devuelve el número especificado de caracteres desde el final de la cadena especificada. RIGHT ("Muestra", 3) devuelve "ple".
MID (cadena, posición inicial, número de caracteres) Devuelve el número especificado de caracteres desde la cadena especificada, empezando por la posición especificada. MID ("Muestra", 2, 3) devuelve "amp".
LEN (cadena) Devuelve el número de caracteres de la cadena especificada. LEN ("Muestra") devuelve 6.
CHAR (número) Devuelve la cadena de caracteres a la que hace referencia el número Unicode especificado. CHAR (255) devuelve "ÿ".
[!NOTE] La cadena que esta función devuelve depende de la codificación seleccionada en el elemento de formato del ARCHIVO principal. Para la lista de codificaciones admitidas, consulte Clase de codificación.
CONCATENATE (cadena 1 [, cadena 2, …]) Devolve todas las cadenas de texto especificadas después de que hayan unido en una cadena. CONCATENATE ("abc", "def") devuelve "abcdef".
[!NOTE] La expresión "abc" & "def" también devuelve "abcdef".
TRANSLATE (cadena, patrón, sustitución) Devuelve la cadena especificada después de que todas las apariciones de los caracteres de la cadena de patrones especificados se hayan sustituido por los caracteres del puesto correspondiente en la cadena de sustitución especificada. TRANSLATE ("abcdef", "cd", "GH") reemplaza el patrón "cd" por la cadena "GH" y devuelve "abGHef".
REPLACE (cadena, patrón, sustitución, indicador de expresión regular) Cuando el parámetro indicador de expresión regular especificado es verdadero, devuelve la cadena especificada después de que se haya modificado aplicando la expresión normal que se especifica como argumento de patrón para esta función. Esta expresión se usa para buscar los caracteres que se deben sustituir. Los caracteres del argumento de sustitución especificado se usan para reemplazar los caracteres que se encuentran. Cuando el parámetro indicador de la expresión regular especificada es falso, esta función se comporta como TRANSLATE. REPLACE ("+1 923 456 4971", "[^0-9]", "", true) aplica una expresión regular que quita todos los símbolos no numéricos y devuelve "19234564971". REPLACE ("abcdef", "cd", "GH", false) reemplaza el patrón "cd" por la cadena "GH" y devuelve "abGHef".
TEXT (entrada) Devuelve la entrada especificada después de que se haya convertido en una cadena de texto que se formatea según la configuración regional del servidor de la instancia actual de la aplicación. Para los valores del tipo real, la conversión de la cadena se limita a dos decimales. Si se define la configuración regional del servidor de instancias de Finance and Operations como EN-US, TEXT (NOW ()) devuelve la fecha de la sesión actual de la aplicación, el 17 de diciembre de 2015, como la cadena de texto "12/17/2015 07:59:23 AM". TEXT (1/3) devuelve "0,33".
FORMAT (cadena 1, cadena 2 [, cadena 3, …]) Devuelve la cadena especificada después de que se haya formateado sustituyendo cualquier aparición de %N con el argumento nésimo. Los argumentos son cadenas. Si no se proporciona un argumento para un parámetro, el parámetro se devuelve como "%N" en la cadena. Para los valores del tipo real, la conversión de la cadena se limita a dos decimales. En la siguiente ilustración, el origen de datos PaymentModel devuelve la lista de registros de clientes mediante el componente Cliente y el valor de la fecha de procesamiento mediante el campo ProcessingDate.

PaymentModel data source

En el formato ER diseñado para generar un archivo electrónico para los clientes seleccionados, PaymentModel se selecciona como origen de datos y controla el flujo de proceso. Se genera una excepción para informar al usuario cuando se detiene un cliente seleccionado para la fecha en la que se procesa el informe. La fórmula que está diseñada para este tipo de control de proceso puede usar los recursos siguientes:

  • Etiqueta SYS70894, que tiene el siguiente texto:
    • Para el idioma EN-US: "Nothing to print"
    • Para el idioma DE: "Nichts zu drucken"
  • Etiqueta SYS18389, que tiene el siguiente texto:
    • Para el idioma EN-US: "El cliente %1 se ha bloqueado para %2."
    • Para el idioma DE: "Debitor %1' wird für %2 gesperrt."

Esta es la fórmula que se puede diseñar:

FORMAT (CONCATENATE (@"SYS70894", ". ", @"SYS18389"), model.Customer.Name, DATETIMEFORMAT (model.ProcessingDate, "d"))

Si se procesa un informe para el cliente Litware Retail el 17 de diciembre de 2015, en la cultura EN-US y el idioma EN-US, esta fórmula devuelve el siguiente texto, que puede presentarse al usuario como mensaje de excepción:

"Nothing to print. Customer Litware Retail is stopped for 12/17/2015."

Si el mismo informe se procesa para el cliente Litware Retail el 17 de diciembre de 2015, en la cultura DE y el idioma DE, la fórmula devuelve el siguiente texto, que usa un formato de fecha diferente:

"Nichts zu drucken. Debitor 'Litware Retail' wird für 17.12.2015 gesperrt."

[!NOTE] La sintaxis siguiente se aplica en las fórmulas de ER para las etiquetas:
  • Para las etiquetas de los recursos de aplicaciones de Finance and Operations: @"X", donde la X es el identificador de la etiqueta en el Árbol de objetos de aplicación (AOT)
  • Para las etiquetas que se encuentran en las configuraciones de ER: @"GER_LABEL:X", donde X es el id. de etiqueta de la configuración de ER
NUMBERFORMAT (número, formato) Devuelve una representación de la cadena del número especificado en el formato especificado. (Para obtener información sobre los formatos admitidos, consulte estándar y personalizado). El contexto en el que se ejecuta esta función determina la cultura que se usa para el formato de los números. Para la referencia cultural EN-US, NUMBERFORMAT (0,45, "p") devuelve "45,00 %". NUMBERFORMAT (10.45, "#") devuelve "10".
NUMBERFORMAT (número, formato, cultura) Devuelve una representación de cadena del número especificado en el formato especificado y en una cultura determinada. (Para obtener información acerca de los formatos admitidos, vea estándar y personalizado.). NUMBERFORMAT (10/3, "F2", "de") devuelve 3,33 mientras que NUMBERFORMAT (10/3, "F2", "en-us") devuelve 3,33.
NUMERALSTOTEXT (número, idioma, divisa, indicador del nombre de la divisa de impresión, separadores decimales) Devuelve el número específico después de que se haya explicado (convertido a cadenas de texto) en el idioma especificado. El código de idioma es opcional. Cuando se define como una cadena vacía, se utiliza el código de idioma para el contexto en ejecución. (El código de idioma para el contexto en ejecución se define para una carpeta o un archivo que genera.) El código de divisa también es opcional. Cuando se define como una cadena vacía, se utiliza la divisa de la empresa.
[!NOTE] Los parámetros de indicador del nombre de la divisa de impresión y de puntos decimales se analizan solo para los códigos de idioma siguientes: CS, ET, HU, LT, LV, PL y RU. Asimismo, el parámetro de indicador del nombre de la divisa de impresión se analiza solo para las empresas en el que el contexto del país o la región admite la declinación de nombres de divisa.
NUMERALSTOTEXT (1234.56, "EN", "", false, 2) devuelve "Mil doscientos treinta y cuatro con 56". NUMERALSTOTEXT (120, "PL", "", false, 0) devuelve "Sto dwadzieścia". NUMERALSTOTEXT (120.21, "RU", "EUR", true, 2) devuelve "Сто двадцать евро 21 евроцент".
PADLEFT (cadena, longitud, caracteres de relleno) Devuelve una cadena de la longitud especificada en la que el inicio de la cadena especificada se rellena con los caracteres especificados. PADLEFT ("1234", 10, " ") devuelve la cadena de texto "      1234".
TRIM (cadena) Devuelve la cadena de texto especificada después de haber truncado los espacios principales y finales, y después de haber quitado múltiples espacios entre palabras. TRIM ("     Sample     text     ") devuelve "Texto de ejemplo".
GETENUMVALUEBYNAME (ruta del origen de datos de enumeración, texto de etiqueta del valor de enumeración) Devuelve un valor del origen de datos de enumeración especificado por el texto especificado basado en el texto especificado de la etiqueta de enumeración. En la siguiente ilustración, la enumeración ReportDirection se introduce en un modelo de datos. Tenga en cuenta que las etiquetas se definen por valores de enumeración.

Available values for data model enumeration

La siguiente ilustración muestra estos detalles:

  • La enumeración del modelo ReportDirection se inserta en un informe como un origen de datos, $Direction.
  • Una expresión del ER, $IsArrivals, está diseñada para usar la enumeración de modelo como un parámetro de esta función. El valor de esta expresión es TRUE.
Example of data model enumeration
GUIDVALUE (entrada) Convierta la entrada especificada del tipo de datos Cadena a un elemento de datos del tipo de datos GUID.
[!NOTE] Para hacer una conversión en la dirección opuesta (es decir, convertir la entrada especificada del tipo de datos GUID en un elemento de datos del tipo Cadena), puede utilizar la función TEXT().
Defina los siguientes orígenes de datos en la asignación de su modelo:
  • myID (Tipo de campo calculado), que contiene la expresión (GUIDVALUE"AF5CCDAC-F728-4609-8C8B- A4B30B0C0AA0")
  • Usuarios (Tipo de registros de tabla), que hace referencia a la tabla UserInfo
Cuando se definen estos orígenes de datos, puede usar una expresión como FILTER (Users, Users.objectId = myID) para filtrar la tabla UserInfo por el campo objectId del tipo de datos GUID.
JSONVALUE (id, path) Analice los datos en formato JavaScript Object Notation (JSON) a los que se accede por la ruta especificada para extraer un valor scalar que se basa en el Id. especificado. El origen de datos $JsonField contiene los siguientes datos en formato JSON: {"BuildNumber":"7.3.1234.1", "KeyThumbprint":"7366E"}. Para este origen de datos, JSONVALUE ( "BuildNumber", $JsonField) devuelve el valor 7.3.1234.1 del tipo de datos de la cadena.

Funciones de conversión de datos

Función Descripción Ejemplo
TEXT (entrada) Devuelve la entrada especificada después de que se haya convertido en una cadena de texto que se formatea según la configuración regional del servidor de la instancia actual de la aplicación. Para los valores del tipo real, la conversión de la cadena se limita a dos decimales. Si se define la configuración regional del servidor de instancias de Finance and Operations como EN-US, TEXT (NOW ()) devuelve la fecha de la sesión de Finance and Operations actual, el 17 de diciembre de 2015, como la cadena de texto "12/17/2015 07:59:23 AM". TEXT (1/3) devuelve "0,33".
QRCODE (cadena) Devuelve una imagen de código de respuesta rápida (código QR) en formato binario base64 para la cadena especificada. QRCODE ("Texto de muestra") devuelve U2FtcGxlIHRleHQ=.

Funciones de recopilación de datos

Función Descripción Ejemplo
FORMATELEMENTNAME () Devuelve el nombre del elemento de formato actual. Devuelve una cadena vacía cuando el indicador Recopilar de los detalles de salida de los archivos actuales está desactivado. Para obtener más información sobre cómo usar esta función, consulte la guía de tareas de los datos de uso de ER del formato generados para contar y calcular, que forma parte del proceso empresarial de Adquirir/desarrollar los componentes de servicio/solución de IT.
SUMIFS (cadena clave para sumar, cadena de criterio range1, cadena de criterio value1 [ cadena de criterio range2, cadena de criterio value2, …]) Devuelve la suma de los valores que se recopilaron para nodos XML (donde el nombre se define como una clave) cuando se ejecutó el formato y que cumple con las condiciones especificadas (pares de rangos y de valores). Devuelve un valor 0 (cero) cuando el indicador Recopilar detalles de salida de los archivos actuales está desactivado.
SUMIF (cadena clave para sumar, cadena de criterio de rango, cadena de criterio de valor) Devuelve la suma de los valores que se recopilaron para nodos XML (donde el nombre se define como una clave) cuando se ejecutó el formato y que cumple la condición especificada (un rango y valor). Devuelve un valor 0 (cero) cuando el indicador Recopilar detalles de salida de los archivos actuales está desactivado.
COUNTIFS (cadena de criterio range1, cadena de criterio value1 [, cadena de criterio range2, cadena de criterio value2, …]) Devuelve el número de nodos XML que se recopiló cuando se ejecutó el formato y que cumple con las condiciones especificadas (pares de rangos y de valores). Devuelve un valor 0 (cero) cuando el indicador Recopilar detalles de salida de los archivos actuales está desactivado.
COUNTIF (cadena de criterios de rango, cadena de criterios de valor) Devuelve el número de nodos XML que se recopiló cuando se ejecutó el formato y que cumple la condición especificada (un rango y valor). Devuelve un valor 0 (cero) cuando el indicador Recopilar detalles de salida de los archivos actuales está desactivado.
COLLECTEDLIST (cadena de criterio range1, cadena de criterio value1 [, cadena de criterio range2, cadena de criterio value2, …]) Devuelve la lista de valores que se recopiló para nodos XML cuando se ejecutó el formato y que cumple con las condiciones especificadas (un rango y un valor). Devuelve una lista vacía cuando el indicador Recopilar detalles de salida de los archivos actuales está desactivado.

Otras funciones (específicas de dominio empresarial)

Función Descripción Ejemplo
CONVERTCURRENCY (importe, divisa de origen, divisa de destino, fecha, empresa) Convertir el importe monetario especificado de la divisa de origen indicada a la divisa de destino con la configuración de la empresa de Dynamics AX especificada en la fecha especificada. CONVERTCURRENCY (1, "EUR", "USD", TODAY(), "DEMF") devuelve el equivalente de un euro en dólares estadounidenses en la fecha de la sesión actual, en función de la configuración para la empresa de DEMF.
ROUNDAMOUNT (número, decimales, regla de redondeo) Redondee el importe especificado para el número de posiciones decimales especificadas de acuerdo con la regla de redondeo especificada.
[!NOTE] La regla de redondeo se debe especificar como un valor de la enumeración RoundOffType.
Si el parámetro model.RoundOff se establece en Hacia abajo, ROUNDAMOUNT (1000.787, 2, model.RoundOff) devuelve el valor 1000,78. Si el parámetro model.RoundOff se establece en Normal o Redondeo por arriba, ROUNDAMOUNT (1000.787, 2, model.RoundOff) devuelve el valor 1000,79.
CURCredRef (dígitos) Devuelve una referencia de acreedor basada en los dígitos del número de factura especificado. CURCredRef (“VEND-200002”) devuelve “2200002".
MOD_97 (dígitos) Devuelve una referencia de acreedor como expresión MOD97, basada en los dígitos del número de factura especificado. MOD_97 ("VEND-200002") devuelve "20000285".
ISOCredRef (dígitos) Devuelve una referencia de acreedor de la Organización Internacional de Normalización (ISO), basada en los dígitos y los símbolos alfabéticos del número de factura especificado.
[!NOTE] Para anular símbolos de los alfabetos que no son compatibles con ISO, el parámetro de entrada se debe traducir antes de que se pase a esta función.
ISOCredRef (“VEND-200002”) devuelve “RF23VEND-200002".
CN_GBT_AdditionalDimensionID (cadena, número) Obtener el identificador de dimensión financiera adicional especificado. En el parámetro de la cadena, las dimensiones se representan como identificadores separados por comas. El parámetro de número define el código de la secuencia de la dimensión solicitada en la cadena. CN_GBT_AdditionalDimensionID ("AA,BB,CC,DD,EE,FF,GG,HH",3) devuelve "CC".
GetCurrentCompany () Devuelve la representación de texto del código para la entidad jurídica (empresa) con la que el usuario está registrado actualmente. GETCURRENTCOMPANY () devuelve USMF para un usuario que está registrado en la empresa Contoso Entertainment System USA.
CH_BANK_MOD_10 (dígitos) Devuelve una referencia de acreedor como una expresión MOD10, basada en los dígitos del número de factura especificado. CH_BANK_MOD_10 ("VEND-200002") devuelve 3.
FA_SUM (código de activo fijo, código del modelo de valor, fecha inicial, fecha final) Devuelve el contenedor de datos preparado del importe de activos fijos para un período especificado. FA_SUM ("COMP-000001", "Actual", Date1, Date2) devuelve el contenedor de datos preparado del activo fijo "COMP-000001" que tiene el modelo de valor "Actual" para un período desde Date1 a Date2.
FA_BALANCE (código de activo fijo, código del modelo de valor, año de notificación, fecha de notificación) Devuelve el contenedor de datos preparado del saldo de activos fijos. El año de notificación debe especificarse como valor de Dynamics 365 for Operations AssetYear. FA_SUM ("COMP-000001", "Actual", AxEnumAssetYear.ThisYear, SESSIONTODAY ()) devuelve el contenedor preparado de los datos de los saldos del activo fijo "COMP-000001" que tiene el modelo de valor "Actual" en la fecha de la sesión actual de la aplicación.
TABLENAME2ID (cadena) Devuelve la representación en entero del Id. de una tabla para el nombre de tabla especificado. TABLENAME2ID ("Intrastat") devuelve 1510.
ISVALIDCHARACTERISO7064 (cadena) Devuelve el valor booleano TRUE cuando la cadena especificada representa un número internacional de cuenta bancaria válido (IBAN). De lo contrario, devuelva el valor booleano FALSE. ISVALIDCHARACTERISO7064 ("AT61 1904 3002 3457 3201") devuelve TRUE. ISVALIDCHARACTERISO7064 ("AT61") devuelve FALSE.
NUMSEQVALUE (código de secuencia numérica, ámbito, identificador de ámbito) Devuelva el nuevo valor generado a partir de una secuencia numérica, en función del código de secuencia numérica especificada, el ámbito, y el identificador de ámbito. El ámbito se debe especificar como valor de la enumeración ERExpressionNumberSequenceScopeType (Compartido, Entidad jurídica, o Empresa). Para el ámbito Compartido, especifique una cadena vacía como el identificador de ámbito. Para los ámbitos Empresa y Entidad jurídica, especifique el código de empresa como el identificador de ámbito. Para los ámbitos Empresa y Entidad jurídica, si especifica una cadena vacía como el identificador de ámbito, se usa el código de la empresa actual. Defina los siguientes orígenes de datos en la asignación de su modelo:
  • enumScope (tipo enumeración deDynamics 365 for Operations), que hace referencia a la enumeración ERExpressionNumberSequenceScopeType
  • NumSeq (tipo Campo calculado) que contiene la expresión NUMSEQVALUE (“Gene_1", enumScope.Company, "")
Cuando se llama al origen de datos NumSeq, devuelve el nuevo valor generado a partir de la secuencia numérica Gene_1 que se ha configurado para la empresa que proporciona el contexto donde se ejecuta el formato de ER.
NUMSEQVALUE (código de secuencia numérica) Devuelva el nuevo valor generado de una secuencia numérica, en función de la secuencia numérica especificada, el ámbito Empresa y (como el identificador de ámbito) el código de la empresa que proporciona el contexto en el que se ejecuta el formato de ER. Defina el origen de datos siguiente en su asignación de modelo: NumSeq (tipo Campo calculado). Este origen de datos contiene la expresión NUMSEQVALUE ("Gene_1"). Cuando se llama al origen de datos NumSeq, devuelve el nuevo valor generado a partir de la secuencia numérica Gene_1 que se ha configurado para la empresa que proporciona el contexto donde se ejecuta el formato de ER.
NUMSEQVALUE (identificador de registro de secuencia numérica) Devuelve el nuevo valor generado a partir de una secuencia numérica, en función del identificador de registro de secuencia numérica especificado. Defina los siguientes orígenes de datos en la asignación de su modelo:
  • LedgerParms (Tipo de tabla), que hace referencia a la tabla LedgerParameters
  • NumSeq (tipo Campo calculado) que contiene la expresión NUMSEQVALUE (LedgerParameters.'numRefJournalNum()'.NumberSequenceId)
Cuando se llama al origen de datos NumSeq, devuelve el nuevo valor generado a partir de la secuencia numérica que se ha configurado en los parámetros de contabilidad general para la empresa que proporciona el contexto donde se ejecuta el formato de ER. Esta secuencia numérica identifica de forma exclusiva los diarios y actúa como número de lote que vincula las transacciones.

Extensión de la lista de funciones

ER le permite ampliar la lista de funciones que se usan en las expresiones de ER. Son necesarios algunos esfuerzos de ingeniería. Para obtener información detallada, vea Ampliar la lista de funciones de informes electrónicos.

Recursos adicionales