Mejorar el desempeño de la Contabilidad Offline (CTBANFS) 

Producto:

Microsiga Protheus®

Ocurrencia:

Bajo desempeño en la rutina de contabilidad off-line de los documentos de salida  (CTBANFS)

Entorno:

Facturación (SIGAFAT)

Paso a paso:

    El parámetro MV_CNFSTHR habilita la contabilidad Off-Line utilizando Múltiples Threads para acelerar el procesamiento.

    A continuación se realiza un comparación entre el procesamiento estándar de la rutina CTBANFS y el procesamiento con múltiples threads.


    SIN utilizar el parámetro MV_CNFSTHR

    En este ejemplo se utiliza un conjunto de 100 facturas de salida para procesamiento de la contabilidad, vea a continuación que el proceso estándar ejecuta factura por factura sin utilizar de forma exponencial todo el porcentaje de procesamiento de los servidores:

     

    CON la utilización del parámetro MV_CNFSTHR

    En este ejemplo se utiliza un conjunto de 100 facturas de salida para procesamiento de la contabilidad y se activa el parámetro MV_CNFSTHR = 3, vea que el tiempo de procesamiento se reduce debido a la ejecución en paralelo de las facturas de salida:

    *Thread es un pequeño programa que trabaja como un subsistema independientemente de un programa mayor, ejecutando alguna tarea específica. Un programa dividido en varias threads se procesa más rápidamente de lo que un programa monolítico, pues varias tareas pueden ejecutarse simultáneamente, compartiendo los recursos del sistema.


    Importante

    • El número máximo de threads para el parámetro MV_CNFSTHR es 30, sin embargo, se recomiendan pruebas con valores menores para acompañar la ganancia de desempeño.
    • La pregunta (¿Muestra asiento contable?) debe estar configurada con el contenido igual a "NO".
    • La pregunta (¿Agrupa asientos?) debe estar configurada con el contenido igual a "NO".
    • El parámetro MV_PRELAN debe estar configurado con el contenido igual a "D"

    El parámetro MV_OPTNFS cambia el comportamiento del procesamiento de la rutina CTBANFS, pues en el montaje de la masa de datos para procesamiento en lugar de leer registro por registro, la rutina monta una query (Select) en la base de datos recuperando todos los registros que se procesarán (CURSOR).
    En pruebas en clientes se verificó una ganancia de aproximadamente un 30% en el procesamiento de la rutina
    .

    Importante: Con el cambio del parámetro es necesaria una revisión general de los AE.

    Paso a paso

    1. Modificar el parámetro MV_OPTNFS al contenido igual a .T. (Verdadero).

    2. Realizar una revisión de los siguientes AE cambiando el alias de las tablas por el nombre del cursor "CTBANFS":

    Lista de AE disponibles en la rutina CTBANFS

    Asto. Estándar

    Descripción

    610

    Documento de salida - Inclusión de documento ítems                                                                        

    611

    Prorrateo (Tabla SDE) - Devolución de compras

    612

    Pedido de venta - Inclusión de documento ítems                                                                           

    613

    Documento de salida - Inclusión de documento prorrateo ítems                                                                 

    620

    Documento de salida - Inclusión de documento total                                                                        

    621

    Pedido de venta - Inclusión de documento total                                                                           

    631

    Permite la contabilidad por SL4 (Ítems de venta por forma de pago)

    678

    Documento de salida - Costo de mercadería vendida                                                                        


    Ejemplo del cambio del alias de las tablas:

    • En el ejemplo voy a utilizar el principal asiento estándar de la rutina CTBANFS (610);
    • En el modo ESTÁNDAR (MV_OPTNFS = .F.) cuando se incluyen los AE se informan en los campos macroejecutados el alias de las tablas utilizadas, por ejemplo "SD2->".
    • En el modo de desempeño (MV_OPTNFS = .T.) obligatoriamente deben ajustarse los AE, modificando los campos macroejecutados al nuevo alias "CTBANFS".


    Observación

      • Obligatoriamente debe ajustarse el alias de todos los campos macroejecutados de las solapas Valores, Historial y Otros para las tablas SC5, SC6, SB1, SA1, SA2, SF2, SD2 y SF4.
      • Puede utilizar este mecanismo de desempeño en conjunto con el parámetro MV_CNFSTHR (Múltiples Threads).
      • Si los Asientos estándar Offline fueron definidos para tratar el alias “CTBANFS” estos no podrán utilizarse en un proceso de contabilidad Online.

    Contabilidad por Período / Documento / Día, ¿cuál es el de mejor desempeño?

    En la parametrización de la contabilidad off-line de la Factura de salida existen tres tipos de parametrización “Por documento”, “Por período” y “Por día”.
    Se identificó que el tipo “Por documento” y “Por día” utilizan mucho acceso a disco del CTREE/ADS lo cual puede generar una pequeña caída en el desempeño.
    Se recomienda utilizar la opción “Por período” que tiene mayor desempeño en el procesamiento de grandes volúmenes de contabilidad.

    Un factor que disminuye el desempeño de la rutina CTBANFS es la gran cantidad de "Secuencias" (CT5_SEQUEN) para un mismo asiento estándar, por eso se recomienda que la cantidad no supere 10 secuencias.

    Importante

    Al ejecutar la rutina de procesamiento "Contabilidad Off-Line - CTBANFS" para contabilizar los movimientos Ventas, el campo F2_DTLANC SEMPRE se actualizará con su fecha de procesamiento, aunque no se genere el asiento contable en la tabla CT2. Este procedimiento se utiliza para evitar reprocesamientos indebidos de movimientos evaluados por la rutina.

    Si optara por el uso de múltiples threads para mejora de desempeño, no podrá trabajar con el uso de schedule para contabilidad. La rutina de contabilidad vía facturación, CTBANFS, solamente funciona vía schedule, si esta no estuviera configurada para utilizar múltiples threads.

    Esto ocurre porque las threads del Schedule (SIGACFG) se diferencian de las Threads de los módulos del sistema. Entonces, vía Schedule, se consideran las Threads del Agent y no de los parámetros de los otros módulos.

    En caso de dudas en la configuración de las Threads del Agent (Configurador), entre en contacto con el Equipo Framework

    Puede ser de su interés: