Wprowadzenie
Cechą programu ERP XL są duże możliwości w zakresie parametryzacji ustawień oraz rozbudowy o własne funkcjonalności. Niektóre z tych ustawień i funkcjonalności powiązane są z określoną formatką programu, np. zakaz dostępu dla użytkownika do listy towarów jest umieszczony na liście towarów, filtr obowiązkowy do określonego typu dokumentów jest na liście dokumentów, czy wydruk faktury proforma jest na dokumencie zamówienia sprzedaży.
Administrowanie dużą liczbą takich dodatków i ustawień wymaga niekiedy konieczności odwołania się do bazy danych i wyświetlenia miejsca ich podpięcia – tzw. kontekstów. W tym artykule przedstawiam jak z poziomu bazy danych wyświetlić informację o kontekście podłączenia dodatku.
Dzięki tej wiedzy możliwe będzie:
- zrobienie inwentaryzacji wszystich dodatków w programie ze wskazaniem miejsca ich podpięcia
- odnalezienie miejsc podpięcia określonego dodatku
- dystrybucja określonego dodatku (w szczególności zakazu, filtra) na inne miejsca w programie
Aby skorzystać z rozwiązania musisz mieć dostęp administracyjny do ERP XL i dostęp administracyjny do bazy danych MS SQL.
Dodatki związane z kontekstami programu
Ustawienia i dodatki definiowane przez użytkownika, które mają powiązanie z formatkami w programie to w szczególności:
- Zakazy na operatorach i na rolach operatorów
- Filtry
- Wydruki dokumentów i raportów (w formacie: Crystal Reports, Clarion, XML, GenRap)
- Raporty typu wykres uruchamiane spod ikony wykresu
- Raporty SQL (tzw. szybkie raporty SQL) uruchamiane spod ikony wykrzyknika
Każdy z tych obiektów użytkownika jest przechowywany w bazie danych (poza wydrukami standardowymi dostarczonymi przez Comarch, które są przechowywane w bibliotekach plikowych).
Przykładowy zakaz operatora dla kontekstu "Cena towaru":
Odniesienie obiektu do kontekstu programu
W bazie danych znajduje się informacja miejscu podpięcia obiektu w programie. Przykładowo zakazy na operatorach umiejscowione są w tabeli CDN.OpeZakazy. Uruchomienie polecenia SQL w Managment Studio wyświetli listę zakazów operatorów:
Dla poprawienia czytelności listy warto odnieść się jeszcze do kartotek operatorów. Zapytanie SQL będzie wyglądać w ten sposób:
select Ope_Ident, OpeZakazy.* from cdn.OpeZakazy join cdn.opeKarty on opz_opeNumer=ope_GIDNumer
Zapytanie wyświetla teraz informację o karcie operatora, wciąż jednak pozostaje niewiadomą jakiego zakazu (kontekstu) dotyczy każdy zapis. Informacja ta przechowywana jest w polu OpZ_ProcID w postaci referencji do tabeli przechowującej nazwy kontekstów. Wystarczy więc odnieść się do tej tabeli i uzyskamy informację o kontekście podpięcia danego obiektu. Pojawia się jednak przejściowy problem – tabela taka nie istnieje w bazie danych XL-a.
Jak stworzyć tabelę kontekstów
Tabelę kontekstów należy stworzyć sobie samodzielnie. Lista kontekstów widoczna w jednym miejscu – na liście zakazów dodawanych w kontekście operatora lub stanowiska. Mimo, że lista nie pokazuje identyfikatora procedury istnieje prosty trick na uzyskanie tej wartości.
W celu otwarcia listy zakazów należy z poziomu karty operatora lub profilu na zakładce Zakazy dodać nowy zakaz przyciskiem Plus:
Uwaga - od wersji 2018 ERP XL listę kontekstów można wyeksportować bezpośrednio z listy zakazów dostępnych w menu Listy->Zakazy.
Spowoduje to otwarcie listy wszystkich zakazów:
Następnie listę należy wyeksportować do Excela ikoną „Eksport do arkusza” dostępną w pasku narzędziowym. Oprócz standardowych pól wyświetlanych na liście zostanie również dodane pole [Nr procedury] określające identyfikator kontekstu:
Listę Excela można teraz zaimportować do bazy danych dowolną metodą, np. przy użyciu transformacji DTS (w programie MS SQL Managment Studio w kontekście bazy danych w menu kontekstowym dostępny jest kreator przenoszenia danych ze źródeł zewnętrznych: Task ->Import Data).
Na użytek swoich narzędzi administracyjnych tabelę taką umieszczam w każdej bazie klienta korzystając z gotowego skryptu. Skrypt przygotowałem na podstawie eksportu danych z XL-a w wersji 2016, jednak w większości przypadków jest wystarczający do wykorzystania na dowolnych wersjach XL-a.
Praktyczne zastosowanie tabeli kontekstów
Mając już w bazie danych tabelę przechowującą informację o kontekstach jesteśmy w stanie łatwo odnieść się do niej w zapytaniach SQL. Przykłady:
Zapytanie SQL przedstawiające listę zakazów dla poszczególnych operatorów:
Zapytanie SQL przedstawiające listę filtrów dla poszczególnych kontekstów:
Zapytanie SQL przedstawiające listę wydruków użytkownika podpiętych w poszczególnych kontekstach:
Polecenie SQL uzupełniające zakazy dostępu do różnych funkcji cennikowych dla wszystkich operatorów:
Podsumowanie
Korzystanie z tabeli kontekstów jest bardzo pomocne przy tworzeniu własnych narzędzi wspomagających administrowanie programem, co ma zastosowanie zwłaszcza w firmach o rozbudowanych strukturach uprawnień. W prostej postaci umożliwia wykonanie inwentaryzacji programu w zakresie niestandardowych raportów i wydruków, co jest pomocne przy podnoszeniu wersji programu. Bardziej zaawansowanym użytkownikom SQL pozwala dokonywać masowych aktualizacji dostępów i uprawnień, np. dodania jakiegoś filtra obowiązkowego dla wszystkich operatorów w określonych centrach na wszystkich kontekstach, w których dany filtr może wystąpić.
Więcej o administrowaniu programem przekazuję na szkoleniu z administracji Comarch ERP XL, do udziału w którym zapraszam.
Historia zmian
- 2020-11-05 - dostosowanie tabeli kontekstów do XL-a w wersji 2020.0. W stosunku do poprzedniej wersji 2016 doszło około 100 nowych kontekstów.