Cómo tratar con FlowFields
El cálculo de FlowFields lleva mucho tiempo en Dynamics, por lo que no se pueden actualizar todos los FlowFields cada vez que se sincroniza. Tampoco se recomienda ejecutar RECALCFIELDS después de cada rutina de contabilización. Esto resultaría en un largo proceso de sincronización que no es bueno para la experiencia del usuario. Hay otras opciones disponibles para FlowFields.
Recálculo nocturno de los FlowFields
Recomendamos crear un nuevo campo normal en la tabla de Dynamics que almacena el valor que desea enviar al usuario. En una tarea nocturna se recalcula el FlowField. Si el valor ha cambiado, actualice su nuevo campo y haga una »MODIFY». Esto reduce considerablemente el tráfico de datos.
Uso de un Online Fields
También puede utilizar los campos online Online Fields para mostrar el valor de FlowField. El valor del campo se actualizará automáticamente en la aplicación independientemente de la sincronización. Lea más sobre los Online Fields y cómo configurarlos aquí.
Solicitar un nuevo cálculo
A veces es necesario disponer de datos en tiempo real. En este caso, puede solicitar un reenvío de los datos de FlowField. Por supuesto, se requiere una conexión en línea para hacerlo. El primer paso es proporcionar un botón en su interfaz de usuario con un código de acción que marque su FlowField. Se iniciará inmediatamente una sincronización.
Rec:SETVALUE('Inventory', Rec:GETVALUE('Inventory'));
Rec:MODFIY(TRUE);
SYNC_DB();
La próxima vez que sincronice, puede hacer el recálculo en codeunit ACF App Events.
CASE RecRef.NUMBER OF
// Other code here ...
DATABASE::Item: BEGIN
DeviceRecRef.SETTABLE(DeviceItem);
IF (DeviceFldRef.NUMBER = DeviceItem.FIELDNO(Inventory)) THEN BEGIN
//Recalculate FlowFields for this item
Item.SETRANGE("No.", DeviceItem."No.");
ItemRecRef.GETTABLE(Item);
Mgt.RECALCFIELDS(ItemRecRef);
// Do not change the current value "Inventory"
NAVAction := NAVAction::Ignore;
END;
END;
END;