ABD Consultora Informática

Mostrar Notas de una tabla en Microsoft Dynamics 365

En el blog de hoy, vamos a explicar un desarrollo que hemos realizado para un cliente que me ha parecido curioso e involucra algunas cosas raras. Las típicas cosas que son tan extrañas que no encuentras ninguna buena documentación en internet sobre cómo funcionan.

En este caso, cuando esto sucede, tomo nota  e intento escribir una entrada en el blog. En parte por el bien de todos los demás, para que puedan aprender de lo que hice y replicarlo si es necesario. Pero sobre todo, escribo la entrada del blog para mí, de modo que si me vuelvo a encontrar con la misma problemática, ya tengo por escrito cómo lo hice y así no tener que descifrar las mismas cosas dos veces. Esta es una de esas entradas de blog. Espero que os sirva de ayuda y puedan beneficiarse de mi documentación egoísta.

Hace unos días, tuvimos una solicitud de un cliente algo peculiar. Querían mostrar las notas de un pedido de venta al consultar cada pedido, algo que como ya sabréis se encuentran en el factbox del pedido de Venta, pero que no le servía, pues la información no se veía a simple vista sino que había que buscarla en la página. Después de trabajarlo y modificar el código varias veces lo hice realidad, y fue lo suficientemente inusual como para documentarlo en nuestro blog.

Si el cliente hubiera solicitado los comentarios del pedido, habría sido fácil, realmente fácil, en realidad. Pero no fueron los comentarios; en cambio, eran las notas del pedido. Los comentarios de los pedidos se almacenan en la tabla Línea de comentarios y ya hay una página BC para mostrarlos. Pero las notas son diferentes. Las notas se almacenan en la tabla Record Link. Y la tabla Record Link no es una tabla BC típica, así que tuve que hacer algunas cosas especiales para que las notas se mostraran. Para empezar, no hay una página BC predeterminada que pueda usar para mostrar los enlaces de registro relacionados con cualquier tabla. Tampoco hay una función BC para una tabla a la que pueda llamar para mostrar las Notas relacionadas o los Enlaces de registros, la visualización de esos se maneja a través de objetos especiales del sistema que no se pueden modificar. Por lo tanto, tuve que hacer mi propia página para mostrar las notas y mi propia función para mostrarlas.

Empecé usando el asistente de página para crear una página simple con todos los campos de la tabla Vínculos de registros. Esta página se modificó mucho para obtener el resultado final, que podéis ver en el código de debajo.

En la pagina de pedidos de venta, agregué una nueva función llamada «ShowNotes» que llamaría a la página de ABDNotas.

El código sería así:

procedure ShowNotes()
    var
        RecordLink: Record «Record Link»;
    BEGIN
        Clear(RecordLink);
        RecordLink.SetRange(«Record ID», Rec.RecordId());
        RecordLink.SetRange(Type, RecordLink.Type::Note);
        if RecordLink.FindSet() then begin
            COMMIT;
            page.Runmodal(50102, RecordLink);
        end;
    end;

page 50102 ABDNotas

{
    Caption = ‘ABDNotas’;
    PageType = StandardDialog;
    SourceTable = «record link»;
    Editable = false;
    layout
    {
        area(Content)
        {
            repeater(control1)
            {
                field(Notas; TypeHelper.ReadNote(Rec))
                {
                    ApplicationArea = all;
                }
                field(«User ID»; «User ID»)
                {
                    ApplicationArea = all;
                }
                field(Created; Created)
                {
                    ApplicationArea = all;
                }
            }
        }
    }
    trigger OnAfterGetRecord()
    begin
        rec.CalcFields(Note);
    end;
    var
        TypeHelper: Codeunit «Record Link Management»;
}
De esta forma, cuando se muestra nuestra pagina, aparece de la siguiente forma para el usuario:

Espero que os sirva de ayuda.  ?

Conchi Beltrán Reyes

Programación Dynamics
ABD Consultoría y Soluciones Informáticas

Tabla de contenidos

Compartir articulo
LinkedIn
Suscribete a la Newsletter




    Etiquetas