Cómo dar formato/color a los campos de una página en NAV2013 y superior

FeaturedCon la introducción del cliente adaptado a roles (RTC) hace ya unos años, ganamos muchas cosas y nuevas características fueron introducidas. El cliente RTC tiene como ventaja que independientemente de la pantalla donde se esté mostrando, se adaptará acordemente para presentar una interfaz usable, entre otras.

Sin embargo, con los cambios que trajo, se tuvieron que sacrificar ciertas cosas. Entre ellas la capacidad de definir los colores, tamaños, posiciones, etc de los distintos elementos que conforman un form/page.

En la actualidad, las versiones de NAV disponibles tienen las distintas opciones de colores.

  • Standard
  • StandardAccent
  • Strong
  • StrongAccent
  • Attention
  • AttentionAccent
  • Favorable
  • Unfavorable
  • Ambiguous
  • Subordinate

(Hacer click en la imagen para ampliarla)

Formatos1

En la imagen podemos apreciar como todas las celdas tienen un formato concreto, y que algunas de ellas no se ven afectadas por el estilo elegido para esa columna (las que tienen como valor “ESTA NO”).

¿Cómo lo hacemos?

Pues bien, existen dos propiedades con las que trabajaremos para conseguir esto. Estas se encuentran en los controles de los campos en la página en cuestión.

Son Style y StyleExpr.

Formatos2

Formatos3

Style: es una propiedad que puede tomar unos valores predefinidos. Estos son los que hemos comentado anteriormente (Standard, StandardAccent, etc).

StyleExpr: es una propiedad que acepta un valor booleano ya sea fijo (TRUE/FALSE) o bien una variable del mismo tipo (IsStrong).

Dicho esto, llegan las malas noticias. Dynamics NAV no permite que una celda tome distintos formatos o estilos según una condición dinámica. Es decir, a una columna o celda se le puede asignar un estilo (uno de los dichos anteriormente) y dinámicamente se puede activar o desactivar, pero no se puede cambiar a otro tipo de estilo.

Como ejemplo: podríamos hacer que en un listado una columna estuviera roja si hubiera alguna desviación calculada por nosotros, y que estuviera normal si no se diera el caso. No podríamos hacer que esa misma columna se pusiera de color verde si estuviera dentro de lo planificado.

Ejemplo práctico – Lista clientes (page 22)

    1. Queremos que el código de cliente se ponga de color amarillo/anaranjado cuando el saldo del cliente supere su crédito y siempre que el crédito configurado sea mayor a 0.
    2. Para ello iremos al object designer y editaremos la página 22 – Customer List.
    3. Creamos una nueva variable global llamada StatusAmbiguous de tipo Boolean y le marcamos la propiedad IncludeInDataset = Yes.
    4. Nos dirigimos a las propiedades del control que muestra el campo “No.”, poner Style = Ambiguous y poner la propiedad StyleExpr = StatusAmbiguous (nuestra variable).
    5. Dentro de esta iremos al trigger OnAfterGetRecord e introduciremos el siguiente código:

OnAfterGetRecord

CALCFIELDS("Balance (LCY)");

StatusAmbiguous := (("Balance (LCY)">"Credit Limit (LCY)") AND ("Credit Limit (LCY)"<>0));

Una vez hecho esto, el resultado debería ser parecido al de la siguiente imagen:

ClientesColores

Así que con eso y un bizcocho, hemos aprendido algo nuevo :)









This entry was posted in NAV2009, NAV2013, NAV2013R2, NAV2015, Navision, Tips&Tricks and tagged , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*