"Niektórzy ludzie, kiedy napotkają problem, myślą: 'Wiem, użyję wyrażeń regularnych'.
I teraz mają dwa problemy."

Jamie Zawinski

poniedziałek, 12 sierpnia 2013

Wydajność Dynamics AX 2009 - przyśpieszenie ładowania się formularzy

Pomimo, że nowym produktem jest już Dynamics AX 2012, często użytkownicy końcowi starszych instancji systemu w wersji 2009 mają problem z "zawieszaniem" się systemu przy otwieraniu formularzy lub raportów. Zwisy pojawiają się przy obciążonym serwerze bazy danych i po części mogą wynikać z zapisywania informacji do "Dziennika użycia elementu", który znajduje się w tabeli SysUtilElementsLog

W zasadzie informacje o użyciu formularzy mogą stanowić źródło informacji statystycznych np. dla projektantów systemu (raport Administracja => Raporty => System => Dziennik użycia elementu), ale w wersji produkcyjnej moim zdaniem jest wielce nieefektywne zapisywać liczniki uruchomień formularzy, szczególnie jeśli konstrukcja AX wymusza często korzystanie z wielu okien. 

Jak sobie poradzić z tym problemem i jak przyśpieszyć system? Przełączyć właściwość Temporary na Yes. Spowoduje to, że tabela będzie tymczasowa i nie będzie "zapychała" serwera bazy danych niepotrzebnymi insertami lub update'ami i może przynieść chociażby minimalną ulgę ciężko eksploatowanym systemom :)

Uwaga! Zanim zdecydujesz się włączyć tryb tymczasowy na środowisku produkcyjnym przetestuj rozwiązanie w środowisku testowym.

piątek, 10 grudnia 2010

Dynamics AX: Czytnik RSS

Kolejnym artykułem postanowiłem się podzielić z Wami, kiedy natknąłem się na swój przykład prostej aplikacji z czasów nauki programowania w Dynamics AX :) Aplikacja ta jest prostym czytnikiem kanałów RSS. Przykład w środowiskach AX może niepraktyczny, ale pomimo to można wykonać np. wyświetlanie najważniejszych informacji firmowych czy agregację najświeższych wiadomości ze świata biznesu. Dla Pani Kazi z księgowości można wyświetlać wiadomości o nowych przepisach ze świata finansów czy podatkach z portali branżowych,  a także aktualne kursy walut ... Zastosowań jak się okazuje może być mnóstwo i jest to "bajer", który może być wielu użytkownikom przydatny.

Cała aplikacja zbudowana będzie z jednej tabeli i dwóch formularzy.


czwartek, 2 grudnia 2010

Dynamics AX: Walidacja NIP

W kolejnym artykule dotyczącym systemu Dynamics AX (Axapta) postaram przedstawić budowę brakującej cegiełki systemu w lokalizacji polskiej. Jakież było moje zdziwienie, kiedy zobaczyłem, że w systemie ERP sprzedawanym na polskim rynku nie ma walidacji podstawowego numeru wykorzystywanego w celu identyfikacji podatkowej - NIP.

wtorek, 30 listopada 2010

Dynamics AX: Mapa Google do sprawdzania lokalizacji odbiorców - tutorial cz. 2

W drugiej części tutoriala pokażę, jak zintegrować komponent Flash z systemem Microsoft Dynamics AX (przykład zademonstruję na wersji 4.0, ale z powodzeniem można go zastosować do nowszych wersji).

Jeśli pominąłeś część pierwszą, a chcesz zacząć od początku to zapraszam tutaj.

piątek, 26 listopada 2010

Dynamics AX: Mapa Google do sprawdzania lokalizacji odbiorców - tutorial cz. 1

W tym artykule pokażę jak zintegrować system Microsoft Dynamics AX z mapą Google na przykładzie lokalizacji odbiorców. W części pierwszej opisana zostanie część jaką należy wykonać, aby stworzyć aplikację w technologii Flex / Flash, w drugiej natomiast zajmiemy się integracją tej aplikacji w systemie Dynamics AX.

Dynamics AX: Debugowanie metody clicked

Wielu programistów X++ myśli, że nie jest możliwe debugowanie metod zdarzeniowych np. w metodach clicked. Są w błędzie :) Dzięki koledze Michałowi Lisowskiemu dowiedziałem się, że jednak jest to wykonalne:

void  clicked()
{
    breakpoint;
    // ... action
}

Dzięki słowu kluczowemu "breakpoint" jest uruchamiany debugger.


Tematycznie polecam:

Dynamics AX: Odczytywanie separatora dziesiętnego

W kolejnym poście, tym razem krótkim, przedstawię jak pobrać separator dziesiętny z ustawień systemowych. Często przy imporcie/eksporcie plików CSV lub XLS występuje problem odpowiedniej konwersji liczb typu real. Oto kod, który za pomocą klas .NET wyciąga separator:

System.Globalization.CultureInfo ci = System.Globalization.CultureInfo::get_CurrentCulture();
System.Globalization.NumberFormatInfo ni;
str systemDecimalSeparator 
;
 
ni = ci.get_NumberFormat();
systemDecimalSeparator = any2str(CLRInterop::getAnyTypeForObject(ni.get_CurrencyDecimalSeparator()));

Zmienną systemDecimalSeparator możemy użyć do konwersji przed zapisem lub odczytem liczb w plikach tekstowych lub w Excelu.