Studio WMS.net - instrukcja obsługi

Wdrożenie i testy modułu Dozór celny - lista kontrolna wdrożeniowca

Strona zbiera czynności wdrożeniowca po wgraniu skryptów modułu Dozór celny: listę kontrolną wgrania, scenariusze testowe, zapytania diagnostyczne, opis danych demonstracyjnych i granice zakresu. Skrypty modułu zweryfikowano wykonawczo na kopii bazy demonstracyjnej. Na każdym innym środowisku, także na żywym demo, wymagają testów po wgraniu. Opis architektury znajdziesz na stronie architektura i włączenie.

Na tej stronie

  1. Lista kontrolna wgrania
  2. Scenariusz: kokpit
  3. Scenariusz: rejestr, symulacja zgłoszenia i zwolnienia, duplikat pliku
  4. Scenariusz: PZC
  5. Scenariusz: WZC, odmowa i zgoda
  6. Scenariusz: kontener z błędną cyfrą kontrolną
  7. Scenariusz: blokada i zdjęcie blokady
  8. Zapytania diagnostyczne
  9. Dane demonstracyjne
  10. Znane ograniczenia i poza zakresem
  11. Cofnięcie i usuwanie danych demonstracyjnych
  12. Najczęstsze pytania
  13. Słownik pojęć

Lista kontrolna wgrania

Poniższe punkty wykonuje się w podanej kolejności na bazie, na którą wgrywasz moduł. Przed pierwszym wgraniem na środowisko inne niż kopia bazy demonstracyjnej wykonaj kopię zapasową bazy.

  1. Sprawdź wersję serwera SQL (2016 SP1 albo nowsza) i poziom zgodności bazy (130 albo wyższy); zapytania są na stronie architektury.
  2. Wgraj skrypt ss-2026-10-13-1400-wms-dozor-celny-baza. Na bazie nie-demo parametr MODUL_CELNY zostaje równy 0, a menu się nie pojawia.
  3. Na bazie demonstracyjnej wgraj skrypt ss-2026-10-13-1410-wms-dozor-celny-demo, a po nim ss-2026-10-17-1000-wms-dozor-celny-ikona-js.
  4. Zresetuj pamięć podręczną adresem /DefaultAdministrator.aspx?isdeploy=reset i odśwież przeglądarkę klawiszami Ctrl+F5.
  5. Wyloguj się i zaloguj ponownie rolą Magazyn: sekcja DOZÓR CELNY pojawia się w menu dopiero po ponownym zalogowaniu.
  6. Sprawdź, czy sekcja ma osiem pozycji, a w sekcji NOWY są Przyjęcie PZC i Wydanie WZC.
  7. Uruchom każdy ze skryptów drugi raz: oczekiwane są zero zmian danych, a komunikaty informacyjne o pominięciu.
  8. Wykonaj scenariusze z kolejnych sekcji i zapisz wynik każdego kroku.

Przy drugim uruchomieniu skrypt ikony wypisuje liczbę zmienionych wierszy równą 0 i informację, że poprawny adres ma wszystkie 3 transakcje. Skrypt demonstracyjny wypisuje, że dane demo już są, a menu dodaje 0 wierszy. Jedno zachowanie nie jest neutralne: skrypt demonstracyjny na końcu zawsze ustawia MODUL_CELNY na 1 i aktywuje wiersze menu, więc jego ponowne uruchomienie włącza ponownie moduł wyłączony wcześniej przez administratora.

Weryfikacja wykonawcza. Skrypty modułu uruchomiono i sprawdzono na lokalnej kopii bazy demonstracyjnej. Nie sprawdzano ich na żywym demo platformy ST 26 ani na bazach klientów. Po wgraniu na środowisko docelowe wykonaj komplet scenariuszy z tej strony, zanim udostępnisz moduł użytkownikom.

Scenariusz: kokpit

Scenariusz sprawdza liczniki i przejścia do ekranów z gotowym filtrem. Wejście w Kokpit blokuje partie po terminie dozoru, więc liczniki mogą zmienić się zaraz po otwarciu ekranu.

KrokDziałanieOczekiwany wynik
1Otwórz pozycję menu Kokpit dozoru celnego.Karta z pięcioma kafelkami, karta Najbliższe terminy dozoru i karta Ostatnie komunikaty od agencji celnych.
2Porównaj kafelki z zapytaniem liczników z sekcji diagnostycznej, wykonanym po otwarciu kokpitu.Liczby są takie same.
3Kliknij kafel Partie zablokowane.Ekran Zwolnienia i blokady z filtrem Zablokowane.
4Wróć do kokpitu i kliknij kafel Komunikaty z błędem importu.Kolejka importu z filtrem Błąd.
5Zmień Próg dni do końca dozoru w ustawieniach i otwórz kokpit ponownie.Nazwa kafla Termin dozoru do N dni zawiera nowy próg, a lista terminów odpowiada progowi.

Scenariusz: rejestr, symulacja zgłoszenia i zwolnienia, duplikat pliku

Scenariusz zmienia dane, dlatego wykonuj go na dokumencie testowym. Dodaj dokument typu MRN z numerem zawierającym fragment DEMO, np. 26PLDEMO000000777X, bo takie dokumenty obejmuje opisane niżej czyszczenie. Dokument bez partii można później usunąć przyciskiem Usuń dokument. Kolejka importu zachowa wiersze komunikatów także po usunięciu dokumentu.

KrokDziałanieOczekiwany wynik
1W Rejestrze dokumentów celnych wybierz Dodaj dokument i zapisz dokument testowy z klientem, kodem procedury 71 i kontenerem ze zgodną cyfrą kontrolną.Dokument pojawia się na liście; Saldo wynosi 0.
2Otwórz dokument ikoną oka i dodaj pozycję zgłoszenia (indeks z kartoteki klienta, ilość większa od zera).Pozycja widoczna w tabeli Pozycje dokumentu.
3Kliknij Symuluj zgłoszenie agencji.W kolejce importu nowy komunikat ZGLOSZENIE ze statusem Przetworzony; dokument ma status Zgłoszony, a partii brak, więc zmieniono 0 partii.
4Kliknij Symuluj zgłoszenie agencji drugi raz dla tego samego dokumentu.Komunikat o duplikacie rozpoznanym po hashu treści; kolejka nie zyskuje nowego wiersza.
5Kliknij Symuluj zwolnienie towaru.Nowy komunikat ZWOLNIENIE ze statusem Przetworzony; dokument ma status Zwolniony i datę zwolnienia.
6Na karcie komunikatu w kolejce sprawdź hash i treść JSON.Pole z hashem SHA-256 i sformatowany, tylko do odczytu JSON zgodny z kontraktem.
7Zapisz plik JSON zgodny z kontraktem, z klientem i indeksem istniejącymi w kartotece (dane pobierz zapytaniem z sekcji danych demo), i wczytaj go przyciskiem Wczytaj komunikat z pliku (JSON).Nowy wiersz w kolejce z kanałem Plik i statusem Przetworzony albo Częściowy.
8Wczytaj ten sam plik jeszcze raz.Komunikat o duplikacie rozpoznanym po hashu; stan bez zmian, brak nowego wiersza.
9W kolejce wskaż komunikat ze statusem Błąd z danych demo i kliknij Ponów wybrany komunikat.Ponownie błąd 50107, bo indeks z komunikatu nie istnieje w kartotece klienta; statusy partii się nie zmieniły.

Scenariusz: PZC

Dokument demonstracyjny do przyjęcia to zgłoszony dokument T1 z numerem kończącym się na 901H, bez partii, z trzema pozycjami (120, 80, 60 sztuk) i kontenerem z poprawną cyfrą kontrolną. Ponieważ dokument ma już status Zgłoszony, partie przyjęte na PZC dostają od razu status Zgłoszony, a nie Pod dozorem. Termin dozoru to data przyjęcia powiększona o limit dni magazynu.

KrokDziałanieOczekiwany wynik
1W Rejestrze dokumentów celnych znajdź dokument 901H i kliknij Przyjmij na PZC.Otwiera się PZC z klientem i dokumentem celnym już wstawionymi.
2Opuść pole Kontener (ISO 6346).Komunikat Numer zgodny z ISO 6346.
3Wybierz Pozycję zgłoszenia, wpisz Nr partii, Lokalizację, Rodzaj palety i Nr palety (przycisk Nowy numer nośnika nadaje numer z licznika), podaj ilość i dodaj pozycję.Pozycja w tabeli; karta Zgłoszone a przyjęte pokazuje różnicę i kontrolę Zgodne.
4Dodaj pozycję z ilością odbiegającą od zgłoszonej o więcej niż tolerancja, sprawdź kartę kontroli, a potem usuń tę pozycję ikoną usuń pozycję.Kontrola Poza tolerancją oraz wpis w Kontroli przed zatwierdzeniem o różnicy powyżej tolerancji i potwierdzeniu koordynatora; po usunięciu pozycji wpis znika.
5Zatwierdź dokument i potwierdź okno.Numer w formacie RRRR-MM-NNNNN-PZC; partie mają status Zgłoszony i termin dozoru; w historii partii wpis ze źródłem PZC; kontener w kartotece.
6Utwórz drugi PZC dla tego klienta, z tym samym indeksem i numerem partii, i spróbuj go zatwierdzić.Błąd 50205: partia jest już pod ewidencją celną (z numerem dokumentu); dokument zostaje w buforze.

Scenariusz: WZC, odmowa i zgoda

W danych demonstracyjnych dokument numer 5 w magazynie jest celowo niezwolniony: ma partię z blokadą ręczną i partię po terminie dozoru. Służy do pokazania odmowy. Zatwierdzenie WZC zmienia stan magazynowy, a moduł nie ma polecenia jego cofnięcia, więc wykonuj krok zgody na bazie demonstracyjnej albo kopii. Bufor WZC nie sprawdza statusów, dlatego odmowa pojawia się dopiero przy zatwierdzeniu.

KrokDziałanieOczekiwany wynik
1Otwórz Wydanie WZC, wybierz klienta dokumentu numer 5 i dodaj pozycję z partii bez zwolnienia.Podpowiedź statusu z powodem i ostrzeżeniem; stopka: N partii bez zwolnienia celnego, baza odrzuci zatwierdzenie (kod 50210).
2Kliknij Zatwierdź i potwierdź okno.Okno Wydanie zablokowane z plakietką Kod 50210, tabelą partii i powodem odmowy; dokument zostaje w buforze.
3Otwórz drugie Wydanie WZC z partią dokumentu numer 1 (status Pod dozorem, termin w przyszłości) i zatwierdź je.Odmowa 50210 z powodem Brak zwolnienia celnego, status Pod dozorem; dokument zostaje w buforze.
4W Rejestrze dokumentów celnych otwórz dokument numer 1 i kliknij Symuluj zwolnienie towaru.Komunikat ZWOLNIENIE ze statusem Przetworzony; partie dokumentu mają status Zwolniony.
5Otwórz bufor z kroku 3 z listy dokumentów i zatwierdź go ponownie.Komunikat: Dokument WZC zatwierdzony. Kontrola celna: wszystkie partie zwolnione, z numerem RRRR-MM-NNNNN-WZC.

Scenariusz: kontener z błędną cyfrą kontrolną

Kontener DEMU2000015 ma poprawną cyfrę kontrolną, a DEMU2000016 ma zmienioną ostatnią cyfrę. Numer nie jest prawdziwym kontenerem, ale poprawnie przechodzi algorytm. Błędną wersję odrzucają trzy miejsca modułu.

KrokDziałanieOczekiwany wynik
1W Agencje i kontenery wybierz Dodaj kontener i wpisz numer z błędną cyfrą.Komunikat z kodem 50041: numer nie spełnia ISO 6346; wiersza w kartotece brak.
2W oknie Dodaj dokument w rejestrze wpisz ten numer w polu Kontener.Błąd 50007: Numer kontenera nie spełnia ISO 6346 (np. błędna cyfra kontrolna).
3W PZC wpisz ten numer i opuść pole.Komunikat o niezgodności z ISO 6346; pozycja Kontener w kontroli przed zatwierdzeniem blokuje Zatwierdź.
4Wykonaj w bazie zapytanie z funkcją sf_cel_iso6346_ok dla obu numerów.Wartość 1 dla poprawnego i 0 dla błędnego.
SELECT dbo.sf_cel_iso6346_ok('DEMU2000015') AS poprawny,
       dbo.sf_cel_iso6346_ok('DEMU2000016') AS bledny,
       dbo.sf_cel_iso6346_cyfra('DEMU200001') AS cyfra_kontrolna;

Scenariusz: blokada i zdjęcie blokady

Ten scenariusz da się w pełni wycofać: blokada ręczna zapamiętuje status sprzed blokady, a zdjęcie blokady do niego wraca. Nie stosuj go do partii ze statusem Zwolniony ani Unijny, bo takich partii nie można zablokować.

KrokDziałanieOczekiwany wynik
1W Zwolnieniach i blokadach wybierz partię ze statusem Pod dozorem i kliknij ikonę ołówka (Zmień status).Okno ZSC z opcją Zablokuj wydanie.
2Zaznacz Zablokuj wydanie, podaj uzasadnienie krótsze niż 5 znaków i zapisz.Błąd 50072: podaj uzasadnienie zmiany statusu (co najmniej 5 znaków).
3Podaj uzasadnienie testowe i zapisz.Status Zablokowany; powód w postaci Blokada ręczna z datą i uzasadnieniem.
4Zatwierdź WZC z tą partią.Odmowa 50210 z tym samym powodem.
5Wybierz Zdejmij blokadę.Partia wraca do statusu Pod dozorem; w historii dwa wpisy ze źródłem RECZNIE.
6Powtórz zdjęcie blokady na partii zablokowanej po terminie dozoru bez podania nowego terminu.Błąd 50075: termin dozoru minął, wskaż nowy termin.

Zapytania diagnostyczne

Zapytania tylko czytają dane. Pierwsze odtwarza liczniki kokpitu bez blokowania partii po terminie, które robi sam kokpit, więc jego wyniki mogą różnić się od ekranu o partie, które kokpit zablokuje przy najbliższym otwarciu.

DECLARE @MAG varchar(20) = 'KOD_MAGAZYNU';
DECLARE @prog int = ISNULL(TRY_CONVERT(int, (SELECT TOP (1) WARTOSC FROM dbo._parametry WHERE KOD = 'CEL_PROG_DNI')), 14);
SELECT
  (SELECT COUNT(*) FROM dbo.x_cel_partia WHERE ACH = '1' AND MAGAZYN = @MAG AND STATUS = 5) AS ZABLOKOWANE,
  (SELECT COUNT(*) FROM dbo.x_cel_partia WHERE ACH = '1' AND MAGAZYN = @MAG AND STATUS IN (1, 2)) AS BEZ_ZWOLNIENIA,
  (SELECT COUNT(*) FROM dbo.x_cel_partia WHERE ACH = '1' AND MAGAZYN = @MAG AND STATUS IN (1, 2)
     AND TERMIN_DOZORU <= DATEADD(day, @prog, CAST(GETDATE() AS date))) AS TERMIN_PROG,
  (SELECT COUNT(*) FROM dbo.x_cel_import WHERE STATUS_PRZETW = 2 AND (MAGAZYN = @MAG OR MAGAZYN IS NULL)) AS IMPORT_BLEDY,
  (SELECT COUNT(*) FROM dbo.x_cel_import WHERE STATUS_PRZETW = 0 AND (MAGAZYN = @MAG OR MAGAZYN IS NULL)) AS IMPORT_OCZEKUJE;

Drugie zapytanie wymienia partie po terminie dozoru. Partie ze statusem 1 lub 2 zostaną zablokowane automatycznie przy najbliższym wejściu w Kokpit, Zwolnienia i blokady albo Terminy dozoru, bo moduł nie ma zadania cyklicznego.

SELECT v.NRSERII, v.STATUS, dbo.sf_cel_status(v.STATUS) AS STATUS_OPIS,
       v.TERMIN_DOZORU, v.DNI_DO_KONCA, v.STAN
FROM dbo.wms_cel_partie v
WHERE v.MAGAZYN = 'KOD_MAGAZYNU' AND v.STATUS IN (1, 2, 5) AND v.TERMIN_DOZORU < CAST(GETDATE() AS date)
ORDER BY v.TERMIN_DOZORU;

Trzecie zapytanie pokazuje ostatnie wpisy historii statusu ze wszystkich partii magazynu.

SELECT TOP (20) h.KIEDY, p.NRSERII, h.STATUS_PRZED, h.STATUS_PO, h.ZRODLO, h.UZASADNIENIE, h.LOGIN
FROM dbo.x_cel_status_hist h
JOIN dbo.x_cel_partia p ON p.ID = h.ID_PARTII
WHERE p.MAGAZYN = 'KOD_MAGAZYNU'
ORDER BY h.KIEDY DESC, h.ID DESC;

Dane demonstracyjne

Skrypt demonstracyjny tworzy dwie agencje celne (jedną z wymianą API, drugą z FTPS) i ustawienia magazynu: skład celny z limitem 90 dni. Dla każdego magazynu WMS, który ma co najmniej 6 partii na stanie, wstawia 12 dokumentów celnych i 24 partie w różnych statusach. Dokumenty mają numery z fragmentem DEMO i kontenery o prefiksie DEMU z poprawną cyfrą kontrolną. Partie nie są sztuczne: skrypt używa istniejących partii trzech kontrahentów z największą liczbą partii w magazynie i nie wstawia żadnych ruchów magazynowych.

Profil dokumentów jest powtarzalny. Terminy liczone są od dnia wgrania skryptu, więc daty na ekranach zależą od momentu wgrania.

Nr w magazynieTypStatusy dwóch partiiTermin dozoruUwaga
1T11 i 1za 80 dni
2T13 i 3za 70 dniW kolejce przetworzone zwolnienie.
3DSK2 i 2za 82 dni
4MRN4 i 4za 40 dniKod procedury 40.
5T15 i 15 dni temuCelowo niezwolniony, pod pokaz odmowy WZC; w kolejce komunikat z błędem.
6DSK1 i 1za 3 dniCzerwona plakietka terminu.
7T12 i 1za 6 dniRozbieżność +2 pod raport CEL-06; w kolejce wynik częściowy.
8T13 i 3za 60 dni
9T11 i 1za 10 dniBursztynowa plakietka terminu.
10DSK1 i 1za 13 dniBursztynowa plakietka terminu.
11T13 i 4za 50 dni
12MRN1 i 1za 85 dniW kolejce komunikat Oczekuje.

Poza tym skrypt dodaje dla każdego takiego magazynu dokument do przyjęcia: zgłoszony T1 bez partii, z trzema pozycjami (120, 80, 60 sztuk), nowym kontenerem i przetworzonym komunikatem ZGLOSZENIE w kolejce. W kolejce jest też po cztery komunikaty na magazyn, po jednym w każdym statusie (Przetworzony, Częściowy, Oczekuje, Błąd). Nazwy klientów w danych demo pochodzą z bazy demonstracyjnej i nie są tu powtarzane.

Dane do przygotowania pliku komunikatu (identyfikator klienta, indeks, ilość) pobierzesz z dokumentu demonstracyjnego, a identyfikatory pozycji demonstracyjnych rozpoznasz po numerze z fragmentem DEMO.

SELECT d.ID, d.TYP, d.NUMER, d.NRIDODN AS klientId, z.LP, a.INDEKS, z.ILOSC, z.JM
FROM dbo.x_cel_dokument d
JOIN dbo.x_cel_dokument_poz z ON z.ID_DOK = d.ID AND z.ACH = '1'
JOIN dbo.knaso a ON a.NRIDASN = z.NRIDASN
WHERE d.ACH = '1' AND d.NUMER LIKE '%DEMO%'
ORDER BY d.ID, z.LP;

Znane ograniczenia i poza zakresem

Przed testami ustal z kierownikiem projektu, czego moduł nie robi, żeby nie raportować braków jako błędów.

  • Blokada tylko dla WZC - dokumenty WZB i RW z partii celnej nie są blokowane; wyzwalacz na tabeli ruchów odrzucono jako zbyt inwazyjny.
  • Brak terminala Android - dokumenty PZC i WZC są dostępne tylko w przeglądarce.
  • Brak uprawnień CEL_* - dostęp wynika z menu roli, a etykieta Zdejmij blokadę (CEL_BLK) w oknie odmowy jest tylko oznaczeniem.
  • Brak punktu API - komunikaty powstają w demo przez symulację i import pliku. Nie ma też rozliczania usług celnych, zrzutu stanów dziennych ani raportów z serwera raportów.

Moduł jest ewidencją magazynową: nie składa zgłoszeń celnych, nie jest certyfikowanym modułem celnym i nie zastępuje systemu celnego. Zgodności z przepisami nie weryfikowano. Blokada po terminie dozoru działa leniwie, przy wejściu w trzy ekrany modułu, a nie według harmonogramu. W polach tekstowych (uzasadnienia, uwagi) nie używaj samodzielnych słów and oraz or: serwer odrzuca takie zapisy.

Cofnięcie i usuwanie danych demonstracyjnych

Pierwszy poziom cofnięcia to parametr MODUL_CELNY równy 0 na ekranie Ustawienia modułu: menu znika po ponownym zalogowaniu, dokumenty PZC oraz WZC przestają być dostępne, a dane zostają.

Drugi poziom to usunięcie danych demonstracyjnych: wierszy tabel x_cel_* z numerem zawierającym fragment DEMO. Skrypty modułu nie zawierają gotowego polecenia usuwającego, więc wykonaj je ręcznie po kopii zapasowej, najpierw sprawdzając zakres zapytaniem poniżej. Wiersze partii, pozycji i powiązań PZC wskazują dokument kolumną ID_DOK, wiersze historii wskazują partię kolumną ID_PARTII, a komunikaty w kolejce da się znaleźć po numerze dokumentu. Kontenery demonstracyjne rozpoznasz po prefiksie DEMU, a agencje po oznaczeniu demo w nazwie. Ruchów magazynowych skrypt demonstracyjny nie wstawia, więc ich nie usuwa się razem z danymi modułu; ruchy dokumentów PZC i WZC z testów zostają w ewidencji magazynowej.

SELECT 'dokumenty' AS obiekt, COUNT(*) AS liczba FROM dbo.x_cel_dokument WHERE NUMER LIKE '%DEMO%'
UNION ALL
SELECT 'partie', COUNT(*) FROM dbo.x_cel_partia p JOIN dbo.x_cel_dokument d ON d.ID = p.ID_DOK WHERE d.NUMER LIKE '%DEMO%'
UNION ALL
SELECT 'komunikaty', COUNT(*) FROM dbo.x_cel_import WHERE NUMER LIKE '%DEMO%'
UNION ALL
SELECT 'kontenery', COUNT(*) FROM dbo.x_cel_kontener WHERE NUMER LIKE 'DEMU%';

Najczęstsze pytania

Czy skrypty modułu były testowane na żywym demo?

Nie. Zweryfikowano je wykonawczo tylko na lokalnej kopii bazy demonstracyjnej. Po wgraniu na żywe demo albo na bazę klienta wykonaj scenariusze z tej strony.

Co się stanie po ponownym uruchomieniu skryptu demonstracyjnego?

Dane demo i menu nie zostaną zduplikowane, ale skrypt ustawi MODUL_CELNY na 1 i aktywuje menu, więc włączy moduł wyłączony wcześniej przez administratora.

Dlaczego partia po terminie nadal ma status Pod dozorem?

Blokada po terminie dozoru działa leniwie: dopiero wejście w Kokpit, Zwolnienia i blokady albo Terminy dozoru zmienia status na Zablokowany. Zatwierdzenie WZC takiej partii zostanie jednak odrzucone od razu.

Czy blokada wydania obejmuje WZB i RW?

Nie. Kontrola dotyczy tylko dokumentu WZC. Dokumenty WZB i RW z partii celnej nie są blokowane.

Czy moduł ma gotowy skrypt usuwający dane demo?

Nie. Dane rozpoznaje się po numerach dokumentów z fragmentem DEMO i po prefiksie DEMU kontenerów, a usunięcie wykonuje wdrożeniowiec ręcznie po kopii zapasowej.

Słownik pojęć

Scenariusz testowy
Zestaw kroków z oczekiwanym wynikiem, wykonywany po wgraniu skryptów na danym środowisku.
Dane demonstracyjne
Dokumenty, partie, agencje i komunikaty dodawane skryptem 1410 na bazie demo, rozpoznawane po fragmencie DEMO w numerze.
Blokada leniwa
Automatyczna blokada partii po terminie dozoru, wykonywana przy wejściu w wybrane ekrany, a nie przez zadanie cykliczne.
Bufor dokumentu
Zapisany, niezatwierdzony dokument PZC albo WZC; nie ma jeszcze numeru z licznika, a WZC w buforze nie sprawdza statusów celnych.
Idempotencja skryptu
Cecha skryptu, który po ponownym uruchomieniu nie zmienia danych ani schematu.
Kopia zapasowa
Kopia bazy wykonywana przed pierwszym wgraniem skryptów na środowisko inne niż demonstracyjne.