Anveo Mobile App / Melhores Práticas / Como lidar com FlowFields
Esta é uma tradução automática. O post original está disponível em Inglês .

Como lidar com FlowFields

O cálculo dos FlowFields demora muito tempo no Dynamics, 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 Dynamics 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();
Exemplo de código de script Anveo para marcar FlowField Inventory of table Item.

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;
Exemplo de código C/AL para recalcular o estoque de FlowField do item de tabela.