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.