Łukasz Kowalski

Łukasz Kowalski Specjalista IT

Temat: IF THEN ELSE w gniazdach

Witam.

W jaki sposób można odwołać się do pola dodatkowego w np. zamówieniu aby wykorzystać je w warunku zamieszczonym w gnieździe rozszerzeń?

Warunek:

if pole1="wartość_tekstowa" then moduł_wykonawczy1 else Zamówienia\Lista zamówień\Operacje dodatkowe\Realizacja zamówienia na wybrany dokument handlowy (Ctrl+Shift+F)

Jeżeli wartość "pola dodatkowego 1" równa się "danej wartości tekstowej" to wykonaj "jakiś moduł wykonawczy" w przeciwnym wypadku wywołaj operację "Realizacja zamówienia na wybrany dokument handlowy (Ctrl+Shift+F)"
Maciej Łuszczyński

Maciej Łuszczyński Software Engineer,
Oxford Computer
Consultants Ltd

Temat: IF THEN ELSE w gniazdach

Witam,

W definicji IFa podaje się sam warunek, w związku z tym będzie on miał postać Pole1 = "Wartość tekstowa". Dalej definiuje się (jako następny krok) moduł wykonawczy, który zostanie odpalony jeśli warunek będzie spełniony. Za ELSE definiujemy drugi krok, który ma być uruchomiony w pozostałych przypadkach. Proszę pamiętać, że jeśli chodzi o definiowanie akcji, mamy do wyboru tylko to, co przygotował producent (procedura sql, skrypt vbs, moduł wykonywalny itd). Z operacją dodatkową może być tutaj problem. Być może tę logikę da się zapisać inaczej.

Pozdrawiam
Maciej Łuszczyński
Szymon M.

Szymon M. Kierownik działu IT

Temat: IF THEN ELSE w gniazdach

"... Z operacją dodatkową może być tutaj problem..." trzeba wykonać we własnej procedurze albo module jak kto woli.
Rafał M.

Rafał M. Dyrektor ds. Asseco
WAPRO ERP, Asseco
Business Solutions
...

Temat: IF THEN ELSE w gniazdach

Gniazda rozszerzeń są również przed / po wykonaniu każdej operacji. W gnieździe przed (po THEN) po wywołaniu modułu dodatkowego należy użyć funkcji KONIEC (z opcją przerwij) bo nie chcemy aby była kontynuowana operacja dodatkowa. Po ELSE wykona się standardowo operacja.
Maciej Łuszczyński

Maciej Łuszczyński Software Engineer,
Oxford Computer
Consultants Ltd

Temat: IF THEN ELSE w gniazdach

Ma sens, przydatne rozwiązanie.
Łukasz Kowalski

Łukasz Kowalski Specjalista IT

Temat: IF THEN ELSE w gniazdach

Dzięki za pomoc. Szkoda, że nie można po ELSE umieścić już gotowej operacji z systemu (np. Realizacja zamówienia na wybrany dokument handlowy).
Maciej Łuszczyński

Maciej Łuszczyński Software Engineer,
Oxford Computer
Consultants Ltd

Temat: IF THEN ELSE w gniazdach

Z tego, co napisał pan Rafał wynika, że użycie polecenia KONIEC da właśnie taki efekt.
Szymon M.

Szymon M. Kierownik działu IT

Temat: IF THEN ELSE w gniazdach

Chyba chodzi o podłączanie procedury wbudowanej a to nie jest obsługiwane.
Łukasz Kowalski

Łukasz Kowalski Specjalista IT

Temat: IF THEN ELSE w gniazdach

Dokładnie tak.
Maciej Łuszczyński

Maciej Łuszczyński Software Engineer,
Oxford Computer
Consultants Ltd

Temat: IF THEN ELSE w gniazdach

Rozumiem, rzeczywiście, trzeba by to opakować jakimś wrapperem SQL podpiętym do gniazda, ale wciąż do zrobienia niewielkim nakładem kosztów.
Szymon M.

Szymon M. Kierownik działu IT

Temat: IF THEN ELSE w gniazdach

To tak jak pisałem wyżej trzeba wykonać we własnej procedurze albo module dodatkowym i będzie dobrze :-)
Łukasz K.:
Dokładnie tak.Ten post został edytowany przez Autora dnia 08.06.18 o godzinie 21:51
Łukasz Kowalski

Łukasz Kowalski Specjalista IT

Temat: IF THEN ELSE w gniazdach

Witam.

W jaki sposób mogę odwołać się w warunku do pola dodatkowego z zamówienia od klienta?
Maciej Łuszczyński

Maciej Łuszczyński Software Engineer,
Oxford Computer
Consultants Ltd

Temat: IF THEN ELSE w gniazdach

Należy skorzystać ze zmiennych aplikacji. $ZamPole01, $ZamPole02, itd.
Łukasz Kowalski

Łukasz Kowalski Specjalista IT

Temat: IF THEN ELSE w gniazdach

W procedurze SQL przyjmuje zmienną $ZamPole03 natomiast w warunku IF THEN ELSE pojawia się błąd "Invalid expression for EVALUATE".
Maciej Łuszczyński

Maciej Łuszczyński Software Engineer,
Oxford Computer
Consultants Ltd

Temat: IF THEN ELSE w gniazdach

Z dokumentacji WAPRO:

Warunek buduje się w oparciu o zmienne. Wartości zmiennych można porównywać
ze stałymi lub innymi zmiennymi za pomocą standardowych operatorów >,<,= itp.
Poszczególne elementy w warunku można łączyć operatorami logicznymi OR, AND.
Stałe tekstowe należy ująć w cudzysłów.

Także nie obstawiałbym, że da się tu jakąś bogatą logikę zaimplementować. Jeśli jest taka potrzeba, lepiej wcisnąć to w procedurę składowaną, przechwycić wynik, a następnie na jego podstawie budować warunek. Siermiężnie, ale będzie działać.
Łukasz Kowalski

Łukasz Kowalski Specjalista IT

Temat: IF THEN ELSE w gniazdach

Staram się wstawić bardzo prosty warunek:

IF ($ZamPole03 = "okreslony_tekst") THEN ...
Rafał M.

Rafał M. Dyrektor ds. Asseco
WAPRO ERP, Asseco
Business Solutions
...

Temat: IF THEN ELSE w gniazdach

Czytał Pan dokumentację? Wszystko tam jest napisane łącznie z przykładami i działa w tysiącach instalacji.
Proszę pamiętać że po dodaniu/aktywowaniu struktur dynamicznych (pola dodatkowe, tabele dodatkowe) należy wylogować się z programu i zalogować ponownie (zamknąć program i jeszcze raz uruchomić) aby program poprawnie zainicjował obiekty dynamiczne dla gniazd rozszerzeń i skojarzył je ze zmiennymi.
Łukasz Kowalski

Łukasz Kowalski Specjalista IT

Temat: IF THEN ELSE w gniazdach

Dziękuję Panie Macieju za podpowiedź.

Pole3 wrzuciłem do @Wynik3 za pomocą procedury i w warunku wykorzystałem @Wynik3.

Działa bardzo dobrze.

Następna dyskusja:

IdUzytkownika w gniazdach r...




Wyślij zaproszenie do