Błąd na formie ReqTransExpolsion w AX4.0 (wykres Gantt’a)
Przy przejściu z Axapty 3.0 na 4.0 jest oczywiście wiele problemów. Z punktu widzenia firmy wdrażającej to ogrom pracy, którą trzeba wykonać aby dostosować aplikację klienta do nowego środowiska.
Rozwiązanie jednego z problemów chciałbym dzisiaj przedstawić. Chodzi mianowicie o formatkę ReqTransExplosion. W nowej AX4.0 problem objawia się tym, że podczas otwierania tej formatki wyskakują błędy:
a) Loading the interface (C:\Programfiles\Microsoft DynamicsAX\40SP2\Client\Bin\vcgantt.ifd) failed
b) ActXBaseControl::Open failure
c) Loading the interface (C:\Programfiles\Microsoft DynamicsAX\40SP2\Client\Bin\vcgantt.ifd) failed
d) ActXBaseControl::Open failure
5: The form opens with the error “Error when loading NETRONIC VARCHART
XGantt”
Czynności do rozwiązania problemu są proste. Jedyna trudność, to wpaść na nie. Mianowicie trzeba:
1. Wyeksportować formatkę z AX3.0 do pliku XPO (nazwijmy go roboczo xpo_old)
2. Wyeksportować formatkę z AX4.0 do pliku XPO (nazwijmy go roboczo xpo_new)
3. Podejrzeć plik xpo_old np. notatnikiem i znaleźć w nim ciąg BINARY 59539.
4. Skopiować wszystkie dane HEX poniżej tego ciągu.
5. Otworzyć plik xpo_new, oraz znaleźć w nim ciąg BINARY 59539.
6. Wkleić skopiowane dane poniżej tego ciągu w pliku xpo_new.
7. Zapisać plik xpo_new.
8. Zaimportować plik xpo_new do axapty.
Musi działać.
Ja miałem taki problem i dużo czasu zajęło mi rozwiązanie go. Kopiowanie dll’ek do katalogu axapty nic nie pomagało.
Złożone Ranges w Dynamics AX
Czy próbowaliście zbudować w Axapcie złożony range na datasourc’e z kodu za pomocą QueryBuildDataSource i QueryBuildRange. Operacja bywa dość trudna, bo Axapta permanentnie nie chce współpracować. Można się nieźle napocić, aby w zgodzie z dokumentacją uzyskać coś np. takiego:
select * from tabela
where (tabela.pole1 = wart1 Or (tabela.pole1 = wart2 And tabela.pole2 = wart3))
Tymczasem rozwiązanie jest banalne.
Trzeba skorzystć ze sztuczki:
QueryBuildDataSource qbds;
QueryBuildRange qbr;
Query q = new Query();
;
qbds = q.addDataSource(tablenum(Tabela));
qbr = qbds.addRange(fieldnum(Tabela, Pole));
qbr.value(strfmt('((%1 == %2) || (%3 == %4 && %5 == %6))',
fieldstr(Tabela, Pole1), wart1,
fieldstr(Tabela, Pole1), wart2,
fieldstr(Tabela, Pole2), wart3));
Proste, piękne i skuteczne…
Wielki dzień
13 października miała miejsce wielka rzecz. Uruchamialiśmy w firmie nowy moduł, którego jestem autorem. Powiem tylko, że przewrócił on do góry nogami proces wysyłek do klienta. Dzisiaj jest środa i okazuje się że moje wcześniejsze obawy o poprawność działania i spójność danych były nieuzasadnione. Oczywiście nie odbyło się bez małych poprawek w kodzie, ale naszczęśnie nie udało mi się wywalić całego systemu do góry nogami. Chyba mogę zaliczyć to zadanie w poczet moich małych sukcesów.
Microsoft Certified Business Management Solutions Professional-Developer for Microsoft Dynamics AX
Kolejne egzaminy przede mną. Celem jest uzyskanie tytułu jak w nazwie postu.
Nie jest to takie proste. Trzeba zdać cztery egzaminy:
Dwa wymagane:
1. MS Dynamics AX 4.0 Development Introduction (opis)
2. MS Dynamics AX 4.0 MorphX Solution Development (opis)
Oraz dwa z trzech do wyboru:
1. MS Dynamics AX 4.0 Trade and Logistics (opis)
2. MS Dynamics AX 4.0 Financials (opis)
3. MS Dynamics AX 4.0 Installation and Configuration (opis)
Wszystkie dane podaję za Microsoft Learning
Sprawa w moim przypadku może być o tyle ciekawa, że szkoliłem się i najwięcej doświadczeń zebrałem na AX 3.0. Ale to nic. Nie takie rzeczy się robiło…
OK. Skoro już napisałem, że jestem związany z Axaptą, to pociągnę wątek i napiszę coś więcej. Pracuję z tym systemem od 2004 roku. Na początku zajmowałem się supportem użytkowników na przemian z programowałem. Od 1,5 roku tylko programuję. Jestem “szefem” programistów
Cudzysłów znaczy tyle, że jestem wiodącym programistą. Na koncie około 70 projektów zakończonych sukcesem.