Dimension Set – czyli nowe wymiary w Dynamics NAV 2013

Nowe wymiary w Dynamics NAV 2013

Opisując moje pierwsze wrażenia dotyczące Microsoft Dynamics NAV 2013 celowo pominąłem temat wymiarów ponieważ uznałem, że zasługują one na poświęcenie im osobnego wpisu. Same w sobie niewątpliwe są jedną z najważniejszych cech Dynamics NAV i nikomu nie trzeba ich szczególnie przedstawiać. Do tej pory jednak stanowiły one poważne obciążenie dla systemu i były dość uciążliwe w implementacji. Tym bardziej cieszy fakt, że w nowym Dynamics NAV zostały one przeprojektowane. W konsekwencji czego my jako programiści musimy zapoznać się z zupełnie nowym pojęciem, a mianowicie – „Dimension Set”. Te dwa słowa stanowią kwintesencję Microsoft Dynamics NAV 2013 i zarazem najlepiej opisują zasadę działania „nowych” wymiarów.

Dimension Set

Czym zatem jest rzeczony „Dimension Set”? Otóż jest to kombinacja dowolnych wartości różnych wymiarów. Aby łatwiej można było to zrozumieć posłużę się ilustracją przedstawiającą możliwe kombinacje przy założeniu, że dwa wymiary (PROJEKT i SPRZEDAWCA), posiadają po dwie różne wartości. Daje to w sumie osiem możliwych kombinacji, z których każda otrzymuje unikalny numer ID.

Dimension Set ID PROJEKT SPRZEDAWCA
1 OPEL JAN
2 VOLVO MARTA
3 OPEL MARTA
4 VOLVO JAN
5 OPEL
6 VOLVO
7
JAN
8
MARTA

Dysponując unikalnym numerem kombinacji, wystarczy przypisać go do dokumentu, pojedynczego wiersza, bądź zapisu księgi. W związku z tym wszystkie tabele, które mogą zostać powiązane z wymiarami zyskały nowe pole o numerze 480 [Dimension Set ID]. Jest to niebywała oszczędność miejsca w porównaniu do rozwiązania znanego ze starszych wersji, co bezpośrednio przekłada się na wzrost wydajności. Warto w tym miejscu nadmienić, że do tej pory tabele wymiarów zajmowały w bazie danych nawet do jednej trzeciej jej objętości.

Dzięki zastosowaniu nowego rozwiązania podczas księgowania nie będą już tworzone osobne rekordy przechowujące informację o wymiarach, a do tej pory na jeden rekord tabeli [G/L Entry] mogło przypadać nawet kilka rekordów tabeli [Ledger Entry Dimension].

Nowe elementy

Wraz z przeprojektowaniem wymiarów pojawiło się kilka nowych elementów na które warto zwrócić uwagę, są to między innymi tabele:

  • Tabela 480 – Dimension Set Entry – służy do przechowywania informacji o kombinacjach wymiarów
ID Dimension Code Dimension Value Code Dimension Value ID Dimension Name Dimension Value Name
2 PROJEKT VOLVO 10 Projekt Volvo
2 SPRZEDAWCA MARTA 25 Sprzedawca Marta
  • Tabela 481 – Dimension Set Tree Node – tabela służy do sprawdzenia czy wybrane na dokumencie wymiary istnieją w tabeli 480, w przypadku ich braku dana kombinacja zostaje utworzona. Tabela 481 to nic innego jak reprezentacja tabli 480 w formie drzewa binarnego.
  • Tabela 482 – Reclas. Dimension Set Buffer – służy ona tylko do edycji już wprowadzonych wymiarów.

Poza tabelami znaczący lifting przeszedł także codeunit 408 – Dimension Management – pozostało w nim zaledwie kilka funkcji, które w zupełności wystarczą do obsługi wymiarów.

Wzorce projektowe

Spójrzmy teraz jak teraz wyglądają niektóre standardowe fragmenty kodu, które nieraz mogliśmy spotkać podczas pracy.

Księgowanie wiersza dziennika

Podstawową różnicą jest brak tabeli Journal Line Dimension, w zamian informacje o wszystkich wymiarach zapisane są w jednym polu „Dimension Set ID”

Microsoft Dynamics NAV 2013

GeSHi Error: GeSHi could not find the language cside (using path /home/babaczyk/public_html/d365bc.info.pl/wp-content/plugins/codecolorer/lib/geshi/) (code 2)
Wcześniejsze wersje

GeSHi Error: GeSHi could not find the language cside (using path /home/babaczyk/public_html/d365bc.info.pl/wp-content/plugins/codecolorer/lib/geshi/) (code 2)

Księgowanie dokumentu

Nowością tutaj jest brak potrzeby kopiowania wymiarów za pomocą funkcji DimMgt.MoveOneDocDimToPostedDocDim(). Teraz wystarczy przypisać odpowiednią wartość do pola „Dimension Set ID”

Microsoft Dynamics NAV 2013

GeSHi Error: GeSHi could not find the language cside (using path /home/babaczyk/public_html/d365bc.info.pl/wp-content/plugins/codecolorer/lib/geshi/) (code 2)
Wcześniejsze wersje

GeSHi Error: GeSHi could not find the language cside (using path /home/babaczyk/public_html/d365bc.info.pl/wp-content/plugins/codecolorer/lib/geshi/) (code 2)

Edycja wymiarów dla dokumentu

Edycja wymiarów także stała się prostsza w implementacji – wystarczy wywołanie jednej funkcji.

Microsoft Dynamics NAV 2013
Table 37, function ShowDimensions:


GeSHi Error: GeSHi could not find the language cside (using path /home/babaczyk/public_html/d365bc.info.pl/wp-content/plugins/codecolorer/lib/geshi/) (code 2)
Wcześniejsze wersje
Table 37, function ShowDimensions:


GeSHi Error: GeSHi could not find the language cside (using path /home/babaczyk/public_html/d365bc.info.pl/wp-content/plugins/codecolorer/lib/geshi/) (code 2)

Wyświetlanie wymiarów dla zaksięgowanych zapisów

Podobnie jak wyżej wystarczy użyć pojedynczej funkcji 🙂

Microsoft Dynamics NAV 2013
Table 111, function ShowDimensions:


GeSHi Error: GeSHi could not find the language cside (using path /home/babaczyk/public_html/d365bc.info.pl/wp-content/plugins/codecolorer/lib/geshi/) (code 2)
Wcześniejsze wersje
Table 111, function ShowDimensions:


GeSHi Error: GeSHi could not find the language cside (using path /home/babaczyk/public_html/d365bc.info.pl/wp-content/plugins/codecolorer/lib/geshi/) (code 2)

Pobieranie domyślnych wymiarów

Może bardziej skomplikowanie, ale nadal przy użyciu pojedynczej funkcji.

Microsoft Dynamics NAV 2013
Table 37, function CreateDim()


GeSHi Error: GeSHi could not find the language cside (using path /home/babaczyk/public_html/d365bc.info.pl/wp-content/plugins/codecolorer/lib/geshi/) (code 2)
Wcześniejsze wersje
Table 37, function CreateDim()


GeSHi Error: GeSHi could not find the language cside (using path /home/babaczyk/public_html/d365bc.info.pl/wp-content/plugins/codecolorer/lib/geshi/) (code 2)

Wszystkie powyższe przykłady pochodzą ze strony: http://msdn.microsoft.com/en-us/library/jj552498(v=nav.70).aspx

Podsumowanie

Reasumując – nowe wymiary to przede wszystkim duży wzrost wydajności połączony ze znacznym spadkiem rozmiaru bazy danych, ale także znacznie uproszczone schematy dzięki, którym oprogramowanie wymiarów staje się łatwiejsze.

Zostaw odpowiedź

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