Upgradre 2009-2018

Este debate contiene 1 respuesta, tiene 2 mensajes y lo actualizó  Laura Nicolàs hace 11 meses, 1 semana.

Viendo 2 publicaciones - del 1 al 2 (de un total de 2)
  • Autor
    Publicaciones
  • #5695

    Buenos días,

    estoy migrando una 2009 R2 a la version NAV2018. Ya esta convertida la base a 2018 y estoy en el paso data upgrade process, es decir, ejecutando las codeunit de upgrade.

    El problema viene que lleva 19 horas ejecutandose, lo hice en modo paralelo ya que para cuando hay varias empresas es el mejor metodo. En este caso particular, 6 empresas ya han terminado porque en cuanto a movimientos no tiene mucha cantidad.

    Pero en la empresa que queda esta en la parte de UpdateItem y desde hace 19 horas que sigue ejecutandose, me parece muchisimo tiempo y visto el código que tiene la parte de Item aun mas, porque vale que actualiza historico de documentos y de movimientos en la parte de UpgradeProductGroup

    dentro de esa parte se recorre cada grupo de producto y crea categorias de productos.

    LOCAL UpgradeProductGroup()
    IF NOT ProductGroup.FINDSET THEN
    EXIT;

    REPEAT
    CreateItemCategory(ProductGroup);
    SaveWarehouseClassCode(ProductGroup);
    UNTIL ProductGroup.NEXT = 0;

    Dentro de esa funcion esta la de crear categorias de producto, por cada creacion se actualiza historico de documentos y movimientos.

    LOCAL CreateItemCategory(ProductGroup : Record “Product Group”)
    NewItemCategoryCode := GetUniqueItemCategoryCode(ProductGroup);

    ItemCategory.INIT;
    ItemCategory.Code := NewItemCategoryCode;
    ItemCategory.”Parent Category” := ProductGroup.”Item Category Code”;
    ItemCategory.Description := ProductGroup.Description;
    ItemCategory.INSERT;

    UPGItem.SETRANGE(“Item Category Code”,ProductGroup.”Item Category Code”);
    UPGItem.SETRANGE(“Product Group Code”,ProductGroup.Code);
    IF UPGItem.FINDSET THEN
    REPEAT
    Item.GET(UPGItem.”No.”);
    Item.”Item Category Code” := NewItemCategoryCode;
    Item.MODIFY(TRUE);
    UpdateItemCategoryCodeOnLinesRecords(UPGItem,ItemCategory);
    UNTIL UPGItem.NEXT = 0;

    LOCAL UpdateItemCategoryCodeOnLinesRecords(VAR UPGItem : Record “UPG Item”;VAR ItemCategory : Record “Item Category”)

    SalesShipmentLine.SETCURRENTKEY(Type,”No.”,”Unit of Measure Code”);
    SalesShipmentLine.SETRANGE(Type,SalesShipmentLine.Type::Item);
    SalesShipmentLine.SETRANGE(“No.”,UPGItem.”No.”);
    SalesShipmentLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    SalesInvoiceLine.SETCURRENTKEY(“Document No.”,Type,”No.”);
    SalesInvoiceLine.SETRANGE(Type,SalesInvoiceLine.Type::Item);
    SalesInvoiceLine.SETRANGE(“No.”,UPGItem.”No.”);
    SalesInvoiceLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    SalesCrMemoLine.SETCURRENTKEY(“Document No.”,Type,”No.”);
    SalesCrMemoLine.SETRANGE(Type,SalesCrMemoLine.Type::Item);
    SalesCrMemoLine.SETRANGE(“No.”,UPGItem.”No.”);
    SalesCrMemoLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    PurchRcptLine.SETRANGE(Type,PurchRcptLine.Type::Item);
    PurchRcptLine.SETRANGE(“No.”,UPGItem.”No.”);
    PurchRcptLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    PurchInvLine.SETCURRENTKEY(Type,”No.”,”Variant Code”);
    PurchInvLine.SETRANGE(Type,PurchInvLine.Type::Item);
    PurchInvLine.SETRANGE(“No.”,UPGItem.”No.”);
    PurchInvLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    RequisitionLine.SETCURRENTKEY(Type,”No.”,”Variant Code”,”Location Code”,”Sales Order No.”,”Planning Line Origin”,”Due Date”);
    RequisitionLine.SETRANGE(Type,RequisitionLine.Type::Item);
    RequisitionLine.SETRANGE(“No.”,UPGItem.”No.”);
    RequisitionLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    ItemLedgerEntry.SETCURRENTKEY(“Item No.”,Positive,”Location Code”,”Variant Code”);
    ItemLedgerEntry.SETRANGE(“Item No.”,UPGItem.”No.”);
    ItemLedgerEntry.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    SalesLine.SETCURRENTKEY(“Document Type”,Type,”No.”,”Variant Code”,”Drop Shipment”,”Location Code”,”Shipment Date”);
    SalesLine.SETRANGE(Type,SalesLine.Type::Item);
    SalesLine.SETRANGE(“No.”,UPGItem.”No.”);
    SalesLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    PurchaseLine.SETCURRENTKEY(“Document Type”,Type,”No.”,”Variant Code”,”Drop Shipment”,”Location Code”,”Expected Receipt Date”);
    PurchaseLine.SETRANGE(Type,PurchaseLine.Type::Item);
    PurchaseLine.SETRANGE(“No.”,UPGItem.”No.”);
    PurchaseLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    SalesLineArchive.SETCURRENTKEY(Type,”No.”);
    SalesLineArchive.SETRANGE(Type,SalesLineArchive.Type::Item);
    SalesLineArchive.SETRANGE(“No.”,UPGItem.”No.”);
    SalesLineArchive.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    PurchaseLineArchive.SETRANGE(Type,PurchaseLineArchive.Type::Item);
    PurchaseLineArchive.SETRANGE(“No.”,UPGItem.”No.”);
    PurchaseLineArchive.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    TransferLine.SETCURRENTKEY(“Item No.”,”Variant Code”);
    TransferLine.SETRANGE(“Item No.”,UPGItem.”No.”);
    TransferLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    TransferShipmentLine.SETCURRENTKEY(“Transfer Order No.”,”Item No.”,”Shipment Date”);
    TransferShipmentLine.SETRANGE(“Item No.”,UPGItem.”No.”);
    TransferShipmentLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    TransferReceiptLine.SETCURRENTKEY(“Transfer Order No.”,”Item No.”,”Receipt Date”);
    TransferReceiptLine.SETRANGE(“Item No.”,UPGItem.”No.”);
    TransferReceiptLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    ServiceLine.SETCURRENTKEY(Type,”No.”,”Order Date”);
    ServiceLine.SETRANGE(Type,ServiceLine.Type::Item);
    ServiceLine.SETRANGE(“No.”,UPGItem.”No.”);
    ServiceLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    ServiceShipmentLine.SETRANGE(Type,ServiceShipmentLine.Type::Item);
    ServiceShipmentLine.SETRANGE(“No.”,UPGItem.”No.”);
    ServiceShipmentLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    ServiceInvoiceLine.SETCURRENTKEY(Type,”No.”);
    ServiceInvoiceLine.SETRANGE(Type,ServiceInvoiceLine.Type::Item);
    ServiceInvoiceLine.SETRANGE(“No.”,UPGItem.”No.”);
    ServiceInvoiceLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    ServiceCrMemoLine.SETCURRENTKEY(Type,”No.”);
    ServiceCrMemoLine.SETRANGE(Type,ServiceCrMemoLine.Type::Item);
    ServiceCrMemoLine.SETRANGE(“No.”,UPGItem.”No.”);
    ServiceCrMemoLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    ReturnShipmentLine.SETRANGE(Type,ReturnShipmentLine.Type::Item);
    ReturnShipmentLine.SETRANGE(“No.”,UPGItem.”No.”);
    ReturnShipmentLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    ReturnReceiptLine.SETRANGE(Type,ReturnReceiptLine.Type::Item);
    ReturnReceiptLine.SETRANGE(“No.”,UPGItem.”No.”);
    ReturnReceiptLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    StandardItemJournalLine.SETRANGE(“Item No.”,UPGItem.”No.”);
    StandardItemJournalLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    ItemJournalLine.SETCURRENTKEY(“Item No.”,”Posting Date”);
    ItemJournalLine.SETRANGE(“Item No.”,UPGItem.”No.”);
    ItemJournalLine.MODIFYALL(“Item Category Code”,ItemCategory.Code);

    Yo he cambiado que le he puesto una clave de ordenacion pensando que tardaria menos pero como le digo lleva 19 horas en este proceso.

    En esta empresa hay 7022 productos y donde mas registros hay es en los historicos de ventas y las tablas referentes a las ventas, ya que tambien archiva las ventas. Entiendo que la tabla movimiento de producto tambien tiene muchos registros, pero como digo me parece una exageracion 19 horas.

    Se por donde va porque como no pone progreso veo que sentencias se ejecutan en SQL, como le digo lleva 19 horas de ejecucion.

    Por saber de que manera mejorarlo o que hacer para que haga ese paso en el menor tiempo posible.

    Muchas gracias.

    Un saludo

    #5696

    Laura Nicolàs
    Jefe de claves

    hace 19 horas que sigue ejecutandose, me parece muchisimo tiempo

    Es demasiado tiempo…

    En los upgrades que me ha tocado hacer las empresas no usaban Categorías de productos. Creo que es este proceso el que me daba errores, y en ocasiones me lo he saltado.

    Si necesitas ejecutarlo yo miraría de ejecutar el código desde SQL, que suele ser más rápido.

    Salut!
    Laura Nicolàs

    Curso presencial. Conviértete en un Experto en Business Central. Para futuros consultores y futuros programadores. Empezamos de cero.

    Curso organizado como un máster.
    Inicio del curso: 26 de Abril
    Más información

Viendo 2 publicaciones - del 1 al 2 (de un total de 2)

Debes estar registrado para responder a este debate.

Members Currently Active: 4
robertemg, Juan Elmudesi, actio.dz, ProfesionalCloud
Keymaster | Moderator | Participant | Spectator | Blocked
Additional Forum Statistics
Threads: 722, Posts: 2.395, Members: 809
Welcome to our newest member, Carlos Lopez
Most users ever online was 15 on 5 April, 2019 9:31 am