Uso de relaciones entre tablas
Habitualmente los usuarios necesitan obtener información cruzada entre campos pertenecientes a tablas diferentes. Operaciones del tipo: “Necesito descargar un CSV de productos y recuperar el source del archivo de dentro de un campo de una tabla de entidades personalizadas”, “Necesito obtener un Excel con todos los productos con un campo que contenga un atributo con los valores concatenados de sus variantes”, “Necesitamos recuperar a nivel de categoría el nombre de los ítems de la tabla de entidades personalizadas titulares” son muy demandadas a nivel de soporte y por lo tanto hacen necesaria esta mención especial.
La resolución de esta tipología de tareas nos deriva a dos tipos de funciones a aplicar en las fórmulas de importación y exportación de datos en función del resultado que queramos obtener:
- REPLACE_FROM_TABLE: nos permite, a partir de un enlace entre dos campos de distintas tablas, la sustitución de los valores de un campo origen por otros de un campo destino. Debe ser utilizada cuando queremos obtener como resultado un campo con los valores de otra tabla relacionando cada registro con su correspondiente sustitución.
Supongamos el caso donde tenemos una tabla en entidades personalizadas para asignar un color en las variantes y no tener traducido cada color en cada variante.

Si realizamos una exportación directa de todas las variantes de producto obtenemos como resultado el identificador del color que relaciona la tabla de variantes con la tabla de entidades personalizadas colour.

¿Cómo podríamos relacionar ambas tablas para que en la exportación saliese el nombre del color en lugar del ID? Utilizando la función REPLACE_FROM_TABLE(field, table, table field related, table field conversion, default value, modifier, separator) con los siguientes parámetros:
- Field:especifica el campo del cual queremos obtener la información a cruzar con la tabla externa. En este caso tenemos dos opciones {THIS} si se aplica directamente sobre el campo que contiene las referencias o {nombre del campo} si el resultado se va a volcar sobre un nuevo campo Excel / CSV. En nuestro ejemplo utilizaremos {THIS} ya que se ejecuta directamente sobre el campo color definido en la tabla variantes de un conector de exportación Excel.

- Table: parámetro donde definimos sobre qué tabla externa tiene que buscar la información del campo a mostrar. En nuestro ejemplo la tabla de entidades personalizadas Colours.
- Table field related: especifica el nombre del campo a enlazar con la tabla externa. En nuestro caso Reference de la tabla de entidades personalizadas Colours.
- Table field conversion: parámetro que especifica el campo cuyos valores van a ser objeto del resultado. Es decir es el campo de salida de la información dentro de la tabla externa. En nuestro caso Name, que contiene dentro de la tabla de entidades personalizadas Colours, el nombre del color traducido.
- Default value: parámetro opcional (por defecto cadena vacía) donde en caso de no encontrar concordancia entre los datos cruzados de las tablas inserta la cadena que se defina. En nuestro ejemplo dejamos el valor por defecto.
- Modifier: parámetro opcional CASE_SENSITIVE (por defecto UNCASE_SENSITIVE)
- Separator:parámetro opcional donde en caso de existir varios valores por elemento, es necesario especificar qué carácter define la separación entre los valores de entrada. En nuestro ejemplo como tenemos varios colores por variante especificamos que los valores de entrada vienen separados por “,” en la exportación. Si no se hiciera de este modo y se ejecuta la fórmula con únicamente los parámetros por defecto “REPLACE_FROM_TABLE({THIS}, "Colours", "Reference", "Name")”obtendremos un resultado erróneo como el que presentamos en la siguiente imagen:

Para evitar este tipo de problemas, entre el uso de los cuatro parámetros obligatorios o los siete, recomendamos siempre utilizar los 7 parámetros de forma completa. Aunque solo se especifique el parámetro separador “,”. La diferencia como se ha podido observar es que la primera solo funcionará bien cuando el campo que contiene la referencia a la tabla de materiales (variantes, productos...) solo contiene un valor. Mientras que si especificamos todos los parámetros incluyendo el separador funcionará siempre de forma óptima teniendo un único valor o una lista de valores en la tabla origen. Habitualmente este caso sucede con campos de listas de referencias, como es el caso que estamos indicando como ejemplo.
Ejecutando la fórmula, ahora sí, tal y como hemos indicado con todos y cada uno de los parámetros anteriores definidos en la siguiente imagen. Obtenemos en la exportación los nombres de los colores de la tabla externa, en lugar de la referencia para todas las variantes, consiguiendo de este modo resolver el problema planteado.


- GET_VARIANTS_VALUES: nos permite a partir de un enlace relacional entre dos campos, obtener un campo multiregistro concatenado. Es decir soluciona los casos en que queremos obtener en un único campo como resultado, todos los registros de otro campo perteneciente a otra tabla. Por defecto y de ahí su nombre la tabla Variants.
Imaginemos que queremos obtener en una exportación excel un listado de los vestidos disponibles (products) con sus tallas (variants) en un único campo sin duplicados. Como podemos observar en la siguiente imagen, para cada referencia de producto tenemos varias variantes enlazadas, cada una con su disponibilidad de talla. Si se realizara la exportación de estos datos se obtendría un Excel con el producto replicado tantas veces como tallas hubiese.

Para evitar esa duplicidad utilizamos la función GET_VARIANTS_VALUES(key field, variant parent field, variant related field, output separator, dependent table, add empty values, unique values)con los siguientes parámetros:
- Key Field: especifica el campo del cual queremos obtener la información a cruzar con la tabla externa. En este caso tenemos dos opciones {THIS} si se aplica directamente sobre el campo que contiene las referencias o {nombre del campo} si el resultado se va a volcar sobre un nuevo campo excel/CSV. En nuestro ejemplo utilizaremos {product reference}sobre un campo Test Sizes definido en la tabla products de un conector de exportación Excel.

- Variant parent field: especifica el nombre del campo a enlazar con la tabla externa. En nuestro caso product_reference de la tabla variants.
- Variant related field: especifica el campo del cual la fórmula va a proceder con la lectura de sus valores para concatenarlo en una única cadena. Se trata del campo resultado a exportar. En el ejemplo: size.
- Output separator: parámetro de uso no obligatorio (por defecto “,”) donde se define qué cadena queremos utilizar como separador de los valores concatenados. En nuestro ejemplo hemos utilizado el separador “|”.
- Dependent table: parámetro de uso no obligatorio (por defecto variants) donde definimos sobre que tabla externa tiene que buscar los campos Variant parent field y Variant related field. En nuestro caso utilizamos el valor por defecto dejando el parámetro en blanco “”
- Add empty values: parámetro de uso no obligatorio (por defecto true) donde se especifica si debe incluir o no los elementos que no tienen correspondencia con la tabla externa. En nuestro ejemplo establecemos que no los muestre añadiendo el parámetro a false.
- Unique values: parámetro de uso no obligatorio (por defecto true) donde se especifica si se repiten en la cadena los elementos duplicados o no. Si nos centramos en nuestro ejemplo puede que existan dos variantes para un mismo producto y una misma talla pero con distinto color. Con el parámetro a true esa misma talla solo la insertaría en el resultado una única vez, mientras que con el parámetro a false la duplicaría dos veces. En nuestro ejemplo utilizamos el parámetro como false.

