Microsoft Dynamics NAV 2013 i SETAUTOCALCFIELDS

W Microsoft Dynamics NAV 2013 mamy do dyspozycji nową funkcję- SETAUTOCALCFIELDS, której umiejętne wykorzystanie może przyczynić się do poprawy wydajności projektowanych rozwiązań.

SETAUTOCALFILEDS - Microsoft Dynamics NAV 2013

Wspomniana funkcja pozwala na automatyczne wyliczanie wartości pól typu FlowField podczas pobierania ich z bazy danych, będąc swoistą alternatywą dla funkcji CALCFIELDS. Aby funkcja SETAUTOCALCFIELDS zadziałała prawidłowo należy użyć jej przed rozpoczęciem przeglądania tabeli tak jak zaprezentowano to w poniższym przykładzie:
[cc lang=”cside”]
recItem.SETAUTOCALCFIELDS(Inventory);
IF recItem.FINDSET THEN
REPEAT
//Jakiś kod
UNTIL recItem.NEXT = 0;
[/cc]
Zamiast każdorazowego używania jak funkcji CALCFIELDS:
[cc lang=”cside”]
IF recItem.FINDSET THEN
REPEAT
recItem.CALCFIELDS(Inventory);
//Jakiś kod
UNTIL recItem.NEXT = 0;
[/cc]
Jaki zatem rezultat daje użycie funkcji SETAUTOCALCFIELDS w Microsoft Dynamics NAV 2013? Jest to zwyczajne złączenie dwóch tabel, które zaprezentowałem poniżej:
[cc lang=”sql”]
SELECT
ISNULL(„Item”.”timestamp”,@0) AS „timestamp”,
ISNULL(„Item”.”No_”,@1) AS „No_”,

ISNULL(„SUB$Inventory”.”Inventory$Item Ledger Entry$SUM$Quantity”,@120) AS „Inventory”
FROM „Cronus 2013″.”dbo”.”CRONUS International Ltd_$Item” AS „Item”
WITH(READUNCOMMITTED) OUTER APPLY (
SELECT TOP (1) ISNULL(SUM(„Inventory$Item Ledger Entry”.”Quantity”),@119) AS „Inventory$Item Ledger Entry$SUM$Quantity”
FROM „Cronus 2013″.”dbo”.”CRONUS International Ltd_$Item Ledger Entry” AS „Inventory$Item Ledger Entry”
WITH(READUNCOMMITTED)
WHERE („Inventory$Item Ledger Entry”.”Item No_”=”Item”.”No_”)) AS „SUB$Inventory”
ORDER BY „No_” ASC OPTION(OPTIMIZE FOR UNKNOWN, FAST 50
)
[/cc]
Co w tym niezwykłego? Otóż to, że w przeciwieństwie do tego, czego nas uczono od kilku lat o Dynamics NAV i T-SQL, funkcja SETAUTOCALCFIELDS nie korzysta z widoków SIFT. Mimo to przyczynia się ona do znacznej poprawy wydajności.

Kolejną ważną sprawą dotyczącą SETAUTOCALFIELDS jest umiejętność poprawnego jej resetowania – podobnie do filtrów SETRANGE, aby wyłączyć jej działanie należy wywołać ją bez parametrów (SETAUTOCALCFIELDS()).

Znając te dwie zasady na pewno bez problemu poradzicie sobie z poprawnym korzystaniem z tej nowości tworząc nowe moduły w Microsoft Dynamics NAV 2013.

Zostaw odpowiedź

Twój adres e-mail nie zostanie opublikowany Wymagane pola są zaznaczone *