Comarch w swojej aplikacji DMS, w wersji 2020.1 wprowadził nowy typ licencji – DMS Premium. Aktualnie, licencja Premium pozwala na dostęp do modelowania procesów w aplikacji za pomocą kodu C#. Sprawdźmy zatem, na co pozwalają nowości w Obiegu Dokumentów – stwórzmy prosty obieg, w którym wykorzystamy skrypt C#. 

W testowym obiegu posiadamy kontrolkę typu Dane tabelaryczne, w której chcemy przetrzymywać informację o aktualnych kursach walut NBP. Standardowo, taką tabelkę musiałby ręcznie uzupełnić operator, ale dzięki możliwościom DMS Premium spróbujemy uzupełnić ją automatycznie. Narodowy Bank Polski udostępnia NBP Web API, które pozwala w prosty sposób uzyskać informacje o aktualnych kursach ponad 30 walut oraz o cenie złota. W naszym projekcie wykorzystamy NBP Web API jako źródło danych do naszej tabeli. 

Comarch DMS Premium - dane tabelaryczne

Zacznijmy do stworzenia biblioteki .dll, w której dodamy metodę pozwalającą na odpytanie serwisu NBP – GetCurrency(). Biblioteka będzie zawierać również definicję klas ExchangeRatesSeries – listę kursów walut oraz Rate zawierającą nazwę, kod oraz kurs konkretnej waluty.

Comarch DMS Premium - wybór biblioteki

Aby móc skorzystać ze stworzonej biblioteki, należy umieścić ją w katalogu aplikacji webowej bin\Scriptcs_bin. Dodatkowo, przed kompilacją skryptów C# należy nadać użytkownikowi IIS_USERS prawo zapisu do lokalizacji bin/scriptcs_cache.

Dodatkowo w pliku Web.config należy wartość klucza PremiumFunctionality ustawić na True

<add value=”True” key=”PremiumFunctionality”/>

Pozwoli to na korzystanie z funkcjonalności dostępnych tylko w wersji Premium.

Comarch DMS Premium - konfiguracja

Przechodząc na zakładkę INICJOWANIE WARTOŚCI kontrolki tabelarycznej, mamy możliwość wskazania sposobu, w jaki nasza tabela będzie inicjowana. Może to być zapytanie SQL wykonywane na bazie DMS, brak inicjowania lub skrypt C# – my skorzystamy z ostatniej opcji.

Comarch DMS Premium - ustawienia wyboru skryptu C#

Konfigurowanie skryptu zaczynamy od dodania referencji do naszej biblioteki dll. W polu Referencje wpisujemy NBPCurrencyRates.dll, czyli nazwę biblioteki z której chcemy skorzystać.

Po wprowadzeniu odpowiednich referencji możemy zacząć okodowywać inicjowanie wartości w naszej kontrolce tabelarycznej.

List<NBPCurrencyRates.Rate> rates = new List<NBPCurrencyRates.Rate>();

NBPCurrencyRates.GetCurrency g = new NBPCurrencyRates.GetCurrency();

rates = g._rates;

inicjujemy listę obiektów Rate 

przypisujemy wartości property _rates obiektu g do listy rates

Globals.MainFrame pozwala na odnoszenie się do wartości kontrolek, wykorzystamy ją aby dodać 3 wiersze w naszej tabeli oraz uzupełnić je danymi z webserwisu NBP

Metoda Globals.MainFrame.Aktualne_kursy_walut_NBP.AddRow(); dodaje pusty wiersz do naszej tabeli

Metoda Globals.MainFrame.Aktualne_kursy_walut_NBP.Items[i].Nazwa_Pola.Text pozwala na zainicjowanie wartości w wierszu i, w przypadku wartości tekstowej używamy metody Text, a w przypadku wartości liczbowej Value

w naszym przykładzie dodamy 3 wiersze, odpowiednio dla walut EUR, USD, JPY 

Comarch DMS Premium - inicjowanie obiegu

Po wprowadzeniu kodu mamy możliwość kompilacji oraz zapisania naszego skryptu. Jeśli kompilator nie zgłosi błędów, możemy zapisać zmiany w naszej kontrolce i przejść do testów.

Następnie inicjujemy nowy obieg. 

Zgodnie z oczekiwaniami, w nowym obiegu tabela Aktualne kursy walut NBP, automatycznie uzupełnia się danymi pobranymi z webserwisu NBP.

Dodanie możliwości inicjowania kontrolek przy pomocy skryptów C#, znacząco poszerza możliwości usprawnienia procesów w DMS. Skryptów C# w aplikacji DMS możemy używać nie tylko do inicjowania wartości w kontrolkach, ale również do oprogramowywania kontrolek typu Własna akcja. Umożliwia to na przykład dodawanie oraz modyfikacje dowolnych obiektów w Comarch XL, takich jak kartoteki towarowe, karty kontrahentów, czy innych dokumentów przy pomocy CDN_API – zapewne do takich celów skrypty C# będą wykorzystywane w większości przypadków.

Comarch DMS Premium - nowy obieg dokumentów ze skryptu C#

Autor: Konrad Jędrzejowski, Konsultant ds. wdrożeń systemów ERP, YOSI.PL

Jeśli podobają Ci się nasze podpowiedzi i rozwiązania lub chciałbyś podjąć z nami współpracę, zapraszamy do kontaktu! 🙂