Anveo Mobile App / Mejores prácticas / Cómo tratar con FlowFields
Esta es una traducción automática. El mensaje original está disponible en Inglés.

Cómo tratar con FlowFields

El cálculo de FlowFields lleva mucho tiempo en , 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 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();
Anveo Script Code ejemplo para marcar FlowField Inventory of table Item.

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;
Ejemplo de código C/AL para recalcular el FlowField Inventory del elemento de la tabla.