Como lidar com FlowFields
O cálculo dos FlowFields demora muito tempo no , pelo que não é possível actualizar todos os FlowFields sempre que sincroniza. Também não é recomendável executar RECALCFIELDS após cada rotina de lançamento. Isso resultaria em um longo processo de sincronização que não é bom para a experiência do usuário. Existem outras opções disponíveis para o FlowFields.
Recálculo noturno dos FlowFields
Recomendamos que crie um campo novo e normal na sua tabela que armazene o valor que pretende enviar para o utilizador. Em uma tarefa noturna você recalcula o FlowField. Se o valor foi modificado, atualizar o novo campo e fazer um ”MODIFY”. Isto reduz significativamente o tráfego de dados.
Utilização de um Online Fields
Também é possível utilizar os campos on-line Online Fields on-line para exibir o valor do FlowField. O valor do campo será atualizado automaticamente no aplicativo independentemente da sincronização. Leia mais sobre Online Fields e como configurá-los aqui.
Solicitar um recálculo
Às vezes é necessário ter dados em tempo real disponíveis. Neste caso, é possível solicitar o reenvio dos dados FlowField. Naturalmente, uma conexão on-line é necessária para fazer isso. O primeiro passo é fornecer um botão em sua interface de usuário com um código de ação que marca seu FlowField. Uma sincronização será iniciada imediatamente.
Rec:SETVALUE('Inventory', Rec:GETVALUE('Inventory'));
Rec:MODFIY(TRUE);
SYNC_DB();
Da próxima vez que sincronizar, você pode fazer o recalculo na 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;