Interfaz de Usuario

FactBoxes

Dificultad: 4/10

Los FactBoxes son paneles informativos especiales que se ubican en el riel lateral derecho de las pantallas de Business Central. Muestran información adicional y contextual del registro seleccionado sin necesidad de abrir otra ventana.

Sintaxis básica

Un FactBox se declara en el area(FactBoxes) de la page padre apuntando a una page de tipo CardPart o ListPart:

AL
layout
{
    area(Content)
    {
        // ... campos principales
    }
    area(FactBoxes)
    {
        part(NombreLocal; "NombreDeLaPagePart")
        {
            SubPageLink = "CampoFiltro" = field("CampoOrigen");
        }
    }
}

¿Qué son los paneles laterales?

Imagina que estás navegando una lista infinita de clientes que solo tiene tres columnas (Teléfono, Ciudad, Nombre) y quisieras saber "¿Cuánto me debe este?". Tendrías que salirte o hacer doble clic para abrir una Card completa, interrumpiendo abruptamente tu flujo de búsqueda.

Los desarrolladores de ERP resolvieron eso habilitando el Área de FactBox. Cuando el usuario mueve las flechas por las distintas filas de la lista, el FactBox de la derecha reacciona instantáneamente actualizando en vivo resúmenes y valores de FlowFields del registro seleccionado.

Por debajo, un FactBox es simplemente una page de tipo CardPart o ListPart insertada en el bloque area(FactBoxes), que se engarza dinámicamente con la entidad en pantalla a través de SubPageLink.

¿Cómo mejoran la navegación?

Los FactBoxes no solo aportan contexto pasivo. Sus numeritos en verde brillante son clicables (DrillDowns), permitiéndote navegar directamente al origen del dato sin cambiar ni ensuciar tu vista principal.

Ejemplo: FactBox de préstamos en la ficha de un libro

AL
// En la page "Libro Card":
page 50302 "Libro Card"
{
    PageType        = Card;
    ApplicationArea = All;
    SourceTable     = "Libro";

    layout
    {
        area(Content)
        {
            group(General)
            {
                field("No.";    Rec."No.")    { Importance = Promoted; }
                field(Titulo;  Rec.Titulo)  { Importance = Promoted; }
                field(Autor;   Rec.Autor)   { }
                field(ISBN;    Rec.ISBN)    { }
            }
        }
        area(FactBoxes)
        {
            // Cada vez que el usuario cambia de libro, el panel se actualiza
            // mostrando solo los préstamos de ESE libro
            part(PrestamosLibro; "Prestamo ListPart")
            {
                SubPageLink = "No. Libro" = field("No.");
            }
            // Segundo FactBox: resumen estadístico del libro
            part(EstadisticasLibro; "Libro Stats FactBox")
            {
                SubPageLink = "No." = field("No.");
            }
        }
    }
}

FactBoxes también en páginas List

Los FactBoxes no son exclusivos de las Cards. También funcionan en páginas de tipo List: al seleccionar una fila, el panel lateral se actualiza mostrando información del registro resaltado.

AL
page 50300 "Socio List"
{
    PageType   = List;
    SourceTable = "Socio";
    CardPageId  = "Socio Card";

    layout
    {
        area(Content)
        {
            repeater(GroupName)
            {
                field("No.";   Rec."No.")   { }
                field(Nombre; Rec.Nombre) { }
            }
        }
        area(FactBoxes)
        {
            // El panel se actualiza al mover el cursor por las filas
            part(HistorialPrestamos; "Prestamo ListPart")
            {
                SubPageLink = "No. Socio" = field("No.");
            }
        }
    }
}

💡 Tips

  • Un FactBox es siempre una page de tipo CardPart (un registro) o ListPart (varios registros).
  • SubPageLink es obligatorio para que el FactBox filtre por el registro seleccionado. Sin él, mostraría todos los datos de la tabla.
  • Puedes tener múltiples FactBoxes en el mismo area(FactBoxes), apilados verticalmente.
  • Los valores de FlowFields mostrados en un FactBox son clicables (DrillDown) si la propiedad DrillDownPageId está configurada en la tabla.
  • Los FactBoxes funcionan tanto en pages de tipo List como de tipo Card.
← Volver a Teoría