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.
Dawno, dawno…
… temu był dodany mój ostatni wpis. A to oczywiście z powodu chronicznego braku czasu.
A to wszystko dlatego, że ciągle doskwiera mi Axapta w wersji 4. Dzisiaj jest dzień, kiedy udało się w końcu uporać ze wszelkimi błędami, niedociągnięciami i zmianami wynikającymi z nowych funkcjonalności. Dużo czasu to zajęło, oj dużo. Niestety większość problemów wynikła z winy partnera wdrażającego nam system, bo zapomniał co to best practice. Czy to oznacza, że teraz będę miał więcej czasu? Nie! Nic bardziej mylnego. Teraz po prostu będę miał jeszcze mniej czasu na napisanie nowych projektów!
Tyle praca, teraz dom. W tej sprawie dość dużo się zmieniło. Jesteśmy na etapie wylewania wieńca na domu. Nad garażem już jest. Oczywiście jak to bywa w takich przypadkach pojawiają się problemy logistyczne. Na szczęście da się je obejść dość łatwo. Inny temat, który trzeba będzie już teraz załatwić, to drewno na więźbę. Jutro jadę zamówić – ciekawe po ile wyjdzie… Na szczęście dostawca lokalny i nie daleko od placu budowy, więc liczę na korzystną ofertę. Wczoraj także dowiedziałem się na ile murarz (jednocześnie cieśla) wycenia swoją pracę. To co usłyszałem, to bardzo rozsądna cena, szczególnie, że pomoc z naszej strony była ogromna.
Jak zalogować się do AX4.0 jako inny użytkownik w domenie, będąc zalogowanym “na siebie”
To proste.
1. Robimy skrót do uruchamiania AX4.0.
2. Teraz właściwości / zakładka skrót / przycisk zaawansowane.
3. Zaznaczamy opcję Uruchom z innymi poświadczeniami i potwierdzamy wybór.
4. Teraz podczas uruchamiania mamy wybór w kontekście jakiego użytkownika chcemy uruchomić program.
5. Podają domena\użytkownik i właściwe hasło jesteśmy w stanie w tym samym czasie zalogować się z do AX4.0 z uprawnieniami różnych użytkowników, np. swoimi i innego użytkownika.
Proste prawda….
Podany sposób może być wykorzystywany przez administratorów lub deweloperów w celu przetestowania jakiejś funkcji. Oczywiście zakładamy, że trzeba znać hasło innego użytkownika.