Najczęściej zadawane pytania / Anveo EDI Connect / Jak dodać warunek IF do mapowania
Jest to tłumaczenie automatyczne. Pierwotne stanowisko jest dostępne w angielski.

Jak dodać warunek IF do mapowania

Jeśli posiadasz jakieś umiejętności w jakimkolwiek języku programowania, z pewnością znasz stwierdzenie IF-THEN-ELSE: jeśli pole tabeli lub zmienna ma określoną wartość X, zrób to, jeśli nie robisz czegoś innego. Możliwe jest odtworzenie tego zachowania w mapowaniu, jest kilka sposobów, aby to zrobić i w tym artykule chcemy je wyjaśnić.

W pierwszym przypadku załóżmy, że chcesz wyeksportować zaksięgowaną fakturę sprzedaży. Masz nagłówek faktury sprzedaży i kilka linii faktur. Wiersze faktury zawierają pewne pozycje i komentarze powyżej i pomiędzy wierszami. Nie zagłębiając się głęboko w strukturę mapowania, jestem pewien, że masz pętlę dla nagłówka faktury sprzedaży i kilka linii mapowania danych poniżej linii, a następnie pętlę dla linii sprzedaży i ich linii mapowania:

Nagłówek
faktury sprzedaży – Dokument
EDI – Mapowanie danych nagłówka faktury – Linia 1
– Mapowanie danych nagłówka faktury – Linia 2
– Mapowanie danych nagłówka faktury ….
– Linia
faktur sprzedaży — Linia mapowania danych linii faktury 1
— i tak dalej ….
Myślniki wskazują poziom odwzorowania na mapie.

Pytanie brzmi: w jaki sposób oddzielić linię elementu od linii z komentarzami? Niebezpiecznie jest zakładać, że kolejność pozycji i komentarzy jest zawsze taka sama, więc potrzebne jest rozwiązanie, które jest niezależne od kolejności.

Rozwiązaniem jest dodanie dwóch nowych linii pętli wgłębiających się poniżej linii faktury sprzedaży. W scenariuszu przedstawionym powyżej wszystkie wiersze komentarza mają typ „puste”, wszystkie pozostałe wiersze mają określony typ, który sprawia, że wiersze te można odróżnić. Pierwsza nowa pętla to pętla nad tabelą faktur sprzedaży, z tym samym łączem do pozycji danych i filtrami, co pierwsza pętla, ale dodajesz nowy filtr: Typ=CONST(„) „). Możesz przeczytać to jako „Jeśli typ linii faktury sprzedaży jest pusty” – pierwsza część wyciągu IF!
Teraz dla części „THEN”-part: wszystkie linie mapowania, które są wcięte poniżej tej nowej linii tworzą część „THEN”-part i można umieścić komentarze do tabeli „EDI Dodatkowe informacje”, na przykład, ze wszystkimi niezbędnymi linkami do elementów danych i filtrami.

A co z wszystkimi innymi liniami z Twoimi przedmiotami (oraz kontami G/L i zasobami)? Cóż, niezależnie od ogólnych zasad eksportu, które mają zastosowanie do mapowania, te linie mają typ, który różni się od pustego. Oznacza to, że możesz dodać drugą nową linię do mapowania, poniżej IF-line, z tym samym łączem elementu danych i filtrami, co pierwsza pętla, ale teraz dodajesz filtr na typie takim jak ten: Typ=FILTER(0). Można to odczytać jako „jeśli typ faktury sprzedaży to cokolwiek ELSE niż pusta” – Twoja część wyciągu ELSE. W tym przypadku prawdopodobnie chcesz utworzyć kilka EDI Document Lines, które zawierają informacje o pozycjach (i zasobach oraz rachunkach G/L), więc wbijasz linię mapowania EDI Document Line pod tą linią i dodajesz odpowiednie linie mapowania danych.

Jeśli chcesz przyjrzeć się bliżej temu przykładowi, możesz użyć szablonu do eksportowania wystawionych faktur sprzedaży od asystenta: utworzyć nowe puste mapowanie NAV z kodem i kodem projektu, następnie uruchomić asystenta z taśmy „Action” poprzez „Run Create and Update Wizard” i wybrać pierwszą opcję:


Zamiast wstawiania drugiej linii faktur sprzedaży można również wstawić linię warunkową. Zróbmy krok wstecz do pętli „Linia faktur sprzedaży”: pętla ta przechodzi przez każdy wiersz faktury, tj. każdy wiersz faktury jest przekazywany do mapowania jedna po drugiej. Jeśli jest to linia komentarza, informacja zostanie zapisana do tabeli EDI Informacje dodatkowe – co oznacza, że w filtrze znajduje się rekord.

Z linią typu warunkowego, możesz skorzystać z faktu, że jeśli masz linię niekomentarzową, filtr wspomniany powyżej nie znajdzie rekordu. Linia warunkowa może sprawdzić ten przypadek za pomocą funkcji „ISEMPTY”. Nazwa jest dosłownie, jeśli nie ma rekordu w filtrze linii Komentarz do faktury sprzedaży, zostaną wykonane wszystkie linie odwzorowania wcięte poniżej linii warunkowej. Tutaj zostaną napisane linie dokumentów EDI. Pełne właściwości linii odwzorowania wyglądają w ten sposób:

Jeśli zaimportowałeś szablon do nowego mapowania, możesz zmienić linię mapowania o nazwie „ELSE” na tę warunkową linię.

Innym sposobem tworzenia warunku jest użycie translacji wartości. Na przykład należy wyeksportować kody jednostek miary dla swoich produktów do komunikatu typu EDIFACT. Jest bardzo prawdopodobne, że kody w systemie NAV nie pasują do tych, które są oczekiwane w EDIFACT, więc musisz je przetłumaczyć: jeśli kod jest „PALLET”, napisz „PAL” do tabeli bufora. Jeśli jest to „PIECE”, napisz „PCE”. Jeśli „HOUR”, wpisz „HUR”. I tak dalej.

Możesz użyć opisanego powyżej filtrowania i dodać linię sprzedaży (prawdopodobnie w tym przypadku przesyłki) poniżej linii sprzedaży dla każdej jednostki miary i wpisać odpowiedni kod do EDI Document Line, ale znacznie łatwiej jest użyć translacji wartości. Każdej „źródłowej” jednostce miary przypisany jest kod „przeznaczenia” jednostki miary, kod ten jest zapisywany w polu przeznaczenia w linii odwzorowania. Aby skonfigurować tłumaczenie wartości, zapoznaj się z artykułem w bazie wiedzy [insert link=”” here]=””]