Inwentaryzacja Świata E: Różnice pomiędzy wersjami
Plaskowski (dyskusja | edycje) (→Inicjacja Świata E) |
Plaskowski (dyskusja | edycje) (→Korzystanie ze Świata E na przykładzie tworzenia/edycji zamówienia) |
||
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 13: | Linia 13: | ||
== Korzystanie ze Świata E na przykładzie tworzenia/edycji zamówienia == | == Korzystanie ze Świata E na przykładzie tworzenia/edycji zamówienia == | ||
− | === Sprawdzenie czy | + | === Sprawdzenie stanu dokumentu (czy nie jest edytowany) === |
− | + | CALL _ng_e_rec_init('Check.before.handle', _FROM, _Key, _UserGUID, ``, ``); | |
− | CALL _ng_e_rec_init('Check.before.handle', _FROM, _Key, _UserGUID, | + | CALL _ng_e_rec_msg_select(``, _Key, 'handle.init', ``); |
− | CALL _ng_e_rec_msg_select( | + | |
− | + | ||
gdzie: | gdzie: | ||
Linia 26: | Linia 24: | ||
− | Jeśli dokument nie jest przez nikogo blokowany nie otrzymamy żadnego rekordu, natomiast w przypadku istnienia | + | Jeśli dokument nie jest przez nikogo blokowany nie otrzymamy żadnego rekordu, natomiast w przypadku istnienia blokady otrzymamy rekord zwrotny z komunikatem, typem komunikatu oraz efektem. |
Np. | Np. | ||
− | [[Plik:wynik1swiatE. | + | [[Plik:wynik1swiatE.PNG|center]] |
=== Inicjacja Świata E === | === Inicjacja Świata E === | ||
Linia 40: | Linia 38: | ||
'''Kontekst = 'OP'''' | '''Kontekst = 'OP'''' | ||
− | + | ||
CALL opng_E_init('EDIT', _Key, _Param_A, ``, ``); | CALL opng_E_init('EDIT', _Key, _Param_A, ``, ``); | ||
CALL opng_E_Run('before.run', _Key, ``, ``, ``); | CALL opng_E_Run('before.run', _Key, ``, ``, ``); | ||
CALL opng_E_Run(``, _Key, ``, ``, ``); | CALL opng_E_Run(``, _Key, ``, ``, ``); | ||
CALL opng_E_Run('after.run', _Key, ``, ``, ``); | CALL opng_E_Run('after.run', _Key, ``, ``, ``); | ||
− | + | ||
gdzie: | gdzie: | ||
'''_Key''' - GUID dokumentu, | '''_Key''' - GUID dokumentu, | ||
'''_UserGUID''' - GUID użytkownika | '''_UserGUID''' - GUID użytkownika | ||
+ | |||
+ | === Dodawanie nowej pozycji === | ||
+ | '''Kontekst = 'ZM'''' | ||
+ | |||
+ | CALL zmpo_E_Let_Insert('IdnTowr', _GUID, _Key, _IdnTowr, _Ilosc, 0, ``, ``, ``, ``); | ||
+ | |||
+ | gdzie: | ||
+ | '''_GUID''' - nowy GUID pozycji, | ||
+ | '''_Key''' - GUID nagłówka dokumentu (z tab. zmng_e) | ||
+ | ''''_IdnTowr''' - GUID towaru | ||
+ | '''_Ilosc''' - Ilość w pozycji do dodania | ||
+ | |||
+ | === Zapis zmian === | ||
+ | '''Kontekst = 'ZM'''' | ||
+ | |||
+ | Tylko ZAPIS | ||
+ | CALL zmng_E_Let('Apply', '_Key', ``, ``); | ||
+ | |||
+ | ZAPIS i WYJŚCIE | ||
+ | CALL zmng_E_Let('ApplyAndClear', '_Key', ``, ``); | ||
+ | gdzie: | ||
+ | '''_Key''' - GUID nagłówka dokumentu (z tab. zmng_e) | ||
+ | |||
+ | |||
+ | === Odrzucenie zmian === | ||
+ | '''Kontekst = 'ZM'''' | ||
+ | |||
+ | CALL zmng_E_Let('Clear', '_Key', ``, ``); | ||
+ | gdzie: | ||
+ | '''_Key''' - GUID nagłówka dokumentu (z tab. zmng_e) |
Aktualna wersja na dzień 13:46, 8 paź 2015
W przypadku wielu operacji na dokumentach jest wykorzystywany Świat E, każdy programista w firmie INT na pewno słyszał tą magiczną nazwę, ale nie do końca wie co się pod nią kryje i jak to właściwie działa, także postaram się trochę o tym opowiedzieć i przedstawić konkretny przykład zastosowania.
Zacznijmy od rysunku:
Jak widać z powyższego szkicu Świat E jest tymczasowym środowiskiem pracy, przypisanym do konkretnego użytkownika.
- Użytkownik otwiera dokument w celu edycji -> Następuje sprawdzenie czy dokument nie jest blokowany (otwarty) przez innego użytkownika, jeśli nie to system nakłada blokadę na dokument (Wpis do tabeli locks), a następnie kopiuje dokument do Świata E z GUID'em danego użytkownika (Tylko on ma dostęp do tego dokumentu w Świecie E). Jeśli dokument byłby zablokowany, to użytkownik otrzyma komunikat z informacja kto edytuje dany dokument i nie będzie mógł kontynuować
- Wszystkie zmiany w dokumencie wykonywane przez użytkownika są zapisywane w kopii utworzonej w Świecie E. Oryginalny dokument pozostaje nie naruszony, aż do momentu, gdy użytkownik nie kliknie opcji zapisz i wyjdź, wówczas oryginalny dokument zostaje zastąpiony zmienioną wersją ze Świata E. Po udanej zmianie dokument jest odblokowywany, a kopia ze Świata E jest usuwana. Gdy użytkownik NIE zdecyduję się na zapis zmian (kliknie Anuluj), następuje wyczyszczenie Świata E i odblokowanie dokumentu.
Spis treści
Korzystanie ze Świata E na przykładzie tworzenia/edycji zamówienia
Sprawdzenie stanu dokumentu (czy nie jest edytowany)
CALL _ng_e_rec_init('Check.before.handle', _FROM, _Key, _UserGUID, ``, ``); CALL _ng_e_rec_msg_select(``, _Key, 'handle.init', ``);
gdzie:
_FROM = context (np. ZM - zamowenia, OP - operacje), _Key - GUID dokumentu, _UserGUID - GUID użytkownika
Jeśli dokument nie jest przez nikogo blokowany nie otrzymamy żadnego rekordu, natomiast w przypadku istnienia blokady otrzymamy rekord zwrotny z komunikatem, typem komunikatu oraz efektem.
Np.
Inicjacja Świata E
Kontekst = 'ZM'
CALL zmng_E_init('EDIT', _Key, _UserGUID, ``, ``); CALL zmng_E_Run('before.run', _Key, ``, ``, ``); CALL zmng_E_Run(``, _Key, ``, ``, ``); CALL zmng_E_Run('after.run', _Key, ``, ``, ``);
Kontekst = 'OP'
CALL opng_E_init('EDIT', _Key, _Param_A, ``, ``); CALL opng_E_Run('before.run', _Key, ``, ``, ``); CALL opng_E_Run(``, _Key, ``, ``, ``); CALL opng_E_Run('after.run', _Key, ``, ``, ``);
gdzie:
_Key - GUID dokumentu, _UserGUID - GUID użytkownika
Dodawanie nowej pozycji
Kontekst = 'ZM'
CALL zmpo_E_Let_Insert('IdnTowr', _GUID, _Key, _IdnTowr, _Ilosc, 0, ``, ``, ``, ``);
gdzie:
_GUID - nowy GUID pozycji, _Key - GUID nagłówka dokumentu (z tab. zmng_e) '_IdnTowr - GUID towaru _Ilosc - Ilość w pozycji do dodania
Zapis zmian
Kontekst = 'ZM'
Tylko ZAPIS
CALL zmng_E_Let('Apply', '_Key', ``, ``);
ZAPIS i WYJŚCIE
CALL zmng_E_Let('ApplyAndClear', '_Key', ``, ``);
gdzie: _Key - GUID nagłówka dokumentu (z tab. zmng_e)
Odrzucenie zmian
Kontekst = 'ZM'
CALL zmng_E_Let('Clear', '_Key', ``, ``);
gdzie: _Key - GUID nagłówka dokumentu (z tab. zmng_e)