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.
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.
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.
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.
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
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.
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! 🙂