Jak radzić sobie z FlowFields
Obliczanie FlowFields zajmuje dużo czasu w Microsoft Dynamics NAV 2013, więc nie można aktualizować wszystkich FlowFields przy każdej synchronizacji. Nie zaleca się również uruchamiania RECALCFIELDS po każdej rutynie delegowania. Spowodowałoby to długi proces synchronizacji, który nie jest korzystny dla użytkownika. Dla FlowFields dostępne są również inne opcje.
Nocne przeliczenie FlowFields
Zalecamy utworzenie nowego, normalnego pola w tabeli Microsoft Dynamics NAV 2013, w którym zapisana będzie wartość, którą chcesz wysłać do użytkownika. W nocnym zadaniu przelicza się FlowField. Jeśli wartość zmieniła się, zaktualizuj swoje nowe pole i wykonaj ”MODIFY”. To znacząco zmniejsza ruch danych.
Wniosek o ponowne obliczenie
Czasami wymagane jest posiadanie danych na żywo. W takim przypadku można zażądać ponownego wysłania danych FlowField. Oczywiście, aby to zrobić, wymagane jest połączenie online. Pierwszym krokiem jest umieszczenie w interfejsie użytkownika przycisku z kodem działania, który oznacza FlowField. Synchronizacja zostanie uruchomiona natychmiast.
Rec:SETVALUE('Inventory', Rec:GETVALUE('Inventory'));
Rec:MODFIY(TRUE);
SYNC_DB();
Przy następnej synchronizacji można dokonać ponownej kalkulacji w 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;