> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omnilinker.pl/llms.txt
> Use this file to discover all available pages before exploring further.

# Rozwiązywanie problemów z synchronizacją ERP

> Sprawdź, dlaczego agent ERP Sync jest offline albo dlaczego zmiany z Twojego ERP nie docierają, i napraw problem.

Zacznij od szybkich testów, a potem otwórz wpis pasujący do tego, co widzisz. Polecenia PowerShell uruchamiaj na
komputerze z agentem.

## Szybkie testy

```powershell theme={null}
# Is the Windows service running?
Get-Service OmnilinkerErpSyncService

# What does the agent report? (state 0 = Idle, 1 = Syncing, 2 = Paused, 3 = Error)
Invoke-RestMethod -Headers @{ "X-Omnilinker-Local" = "1" } http://localhost:5555/api/sync/status |
  Select-Object state, isConnected, isErpConnected, lastError, waitingReason

# Are events waiting to be sent to Omnilinker?
Invoke-RestMethod -Headers @{ "X-Omnilinker-Local" = "1" } http://localhost:5555/api/sync/outbox/stats

# Can this computer reach Omnilinker?
Test-NetConnection omnilinker.pl -Port 443
```

W Omnilinkerze otwórz **Integracja ERP** > **Połączenia**, otwórz połączenie i sprawdź jego kartę **Agent**. Zobacz
[Monitorowanie](/pl/erp/monitoring).

* `isConnected: False`: agent nie może połączyć się z Omnilinkerem albo Omnilinker go odrzuca.
* `isErpConnected: False`: agent nie może odczytać bazy danych ERP.
* Rosnąca wartość `pending` w statystykach kolejki wychodzącej: zmiany są wykrywane, ale nie są dostarczane.

Pola statusu opisuje [dokumentacja lokalnego API](/pl/erp/local-api).

## Typowe problemy

<AccordionGroup>
  <Accordion title="Gdzie są logi?">
    Agent prowadzi dwa logi.

    **Pliki logu usługi.** Usługa Windows zapisuje jeden plik dziennie i przechowuje 30 ostatnich:

    ```text theme={null}
    %ProgramData%\Omnilinker\ErpSync\logs\erpsync-<yyyyMMdd>.log
    ```

    Zwykle jest to `C:\ProgramData\Omnilinker\ErpSync\logs`. Każdy, kto jest zalogowany na komputerze, może go
    czytać. Aby śledzić dzisiejszy plik:

    ```powershell theme={null}
    Get-Content "$env:ProgramData\Omnilinker\ErpSync\logs\erpsync-$(Get-Date -Format yyyyMMdd).log" -Tail 50 -Wait
    ```

    W aplikacji w zasobniku polecenie **View Logs** > **Open Log Folder** otwiera ten sam folder.

    **Log instalatora.** Instalator, aktualizacje i odinstalowanie zapisują to, czego nie udało się zrobić, w pliku
    `setup.log` w tym samym folderze. Zobacz **Instalacja się zakończyła, ale usługi nie ma**.

    **Log synchronizacji.** Agent prowadzi też krótki log zdarzeń synchronizacji w swojej lokalnej bazie danych.
    Możesz go przeczytać w aplikacji w zasobniku przez **View Logs** albo przez `GET /api/sync/logs` w
    [lokalnym API](/pl/erp/local-api).

    Agent nie zapisuje własnych komunikatów w dzienniku zdarzeń Windows. Windows rejestruje błędy uruchamiania usługi
    w dzienniku System (zobacz następny wpis).
  </Accordion>

  <Accordion title="Usługa się nie uruchamia">
    `Get-Service OmnilinkerErpSyncService` pokazuje `Stopped` albo usługa zatrzymuje się krótko po uruchomieniu.
    Aplikacja w zasobniku pokazuje w etykiecie ikony **Disconnected**.

    Usługa jest skonfigurowana tak, aby po awarii uruchamiać się ponownie (po 5, 10 i 30 sekundach), więc jeśli
    ciągle się zatrzymuje, problemu nie rozwiązuje ponowne uruchomienie.

    1. Otwórz **Podgląd zdarzeń** > **Dzienniki systemu Windows** > **System** i poszukaj błędów ze źródła
       **Service Control Manager**, które wymieniają **Omnilinker ERP Sync** (**Omnilinker ERP Sync Service**
       w instalacji wykonanej skryptem `install-service.ps1`). W przypadku awarii sprawdź też
       **Dzienniki systemu Windows** > **Aplikacja** pod kątem wpisów **.NET Runtime** lub **Application Error**.
    2. Otwórz najnowszy plik logu usługi (zobacz **Gdzie są logi?**). Jeśli usługa uruchomiła się na tyle, żeby coś
       zapisać, ostatnie wiersze mówią, dlaczego się zatrzymała. Krytyczny błąd uruchamiania kończy się komunikatem
       `Omnilinker ERP Sync Service terminated unexpectedly`.

    Typowe przyczyny:

    * **Błąd logowania.** Ktoś ustawił usługę tak, aby działała na innym koncie, a hasło tego konta się zmieniło.
      Dziennik System informuje, że usługa nie została uruchomiona z powodu błędu logowania. Otwórz **Usługi**,
      otwórz **Omnilinker ERP Sync** > kartę **Logowanie**, wybierz **Konto systemu lokalnego** i kliknij **OK**.
      Agent jest przeznaczony do działania jako Lokalny system.
    * **Port 5555 jest zajęty.** Zobacz **Port lokalnego API jest już zajęty**.
    * **Uszkodzony plik `appsettings.json`.** Jeśli go edytowałeś, sprawdź, czy nadal zawiera poprawny JSON. W folderze
      instalacji uruchom:

      ```powershell theme={null}
      Get-Content .\appsettings.json -Raw | ConvertFrom-Json
      ```

      Błąd oznacza, że plik jest niepoprawny. Popraw go albo przywróć z oryginalnego pakietu.

    Po naprawie uruchom usługę ponownie w PowerShell jako administrator:

    ```powershell theme={null}
    Start-Service OmnilinkerErpSyncService
    ```
  </Accordion>

  <Accordion title="Instalacja się zakończyła, ale usługi nie ma">
    Instalator zakończył pracę, ale `Get-Service OmnilinkerErpSyncService` nie znajduje usługi albo aplikacja
    w zasobniku nie uruchamia się przy logowaniu. Instalator nigdy nie przerywa pracy z powodu jednego kroku; to,
    czego nie udało się zrobić, zapisuje w `%ProgramData%\Omnilinker\ErpSync\logs\setup.log`:

    ```powershell theme={null}
    Get-Content "$env:ProgramData\Omnilinker\ErpSync\logs\setup.log" -Tail 20
    ```

    | Wiersz w `setup.log`                                                                                                               | Co zrobić                                                                                                                                                                                                                                  |
    | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    | `not registering the service: <path> is inside a user's profile. Install for all users.`                                           | Agent został zainstalowany w profilu użytkownika, na przykład po dwukrotnym kliknięciu instalatora. Odinstaluj go, a potem zainstaluj ponownie z opcją `--installto`. Zobacz [Instalacja agenta](/pl/erp/install-agent#zainstaluj-agenta). |
    | `data folder:`, `operators group:`, `service:`, `tray at sign-in:` albo `start service:`, a po nim błąd, na przykład `exit code 5` | Instalator nie wykonał tego kroku, najczęściej dlatego, że nie działał jako administrator. Uruchom to samo polecenie instalatora jeszcze raz w PowerShell jako administrator.                                                              |
    | `done`                                                                                                                             | Wszystkie kroki się powiodły.                                                                                                                                                                                                              |

    Jeśli pliku `setup.log` w ogóle nie ma, instalator nie zdołał nawet utworzyć folderu. Uruchom go ponownie
    w PowerShell jako administrator.
  </Accordion>

  <Accordion title="Aplikacja w zasobniku nie łączy się z usługą">
    Etykieta ikony pokazuje **Disconnected** albo kreator konfiguracji pokazuje „Failed to connect to service”.

    1. Sprawdź, czy usługa działa: `Get-Service OmnilinkerErpSyncService`. Jeśli nie, zobacz **Usługa się nie
       uruchamia**.
    2. Jeśli aplikacja w zasobniku pokazuje „Something other than the Omnilinker service answered. Restart the PC; if
       it happens again, contact support.”, w potoku agenta odpowiedział inny program. Aplikacja w zasobniku rozmawia
       tylko z usługą Windows. Uruchom komputer ponownie.
  </Accordion>

  <Accordion title="Aplikacja w zasobniku pokazuje Only an administrator of this PC can do that.">
    Widzisz status agenta, ale zapisanie ustawień, kreator konfiguracji, wstrzymanie synchronizacji albo włączenie
    śledzenia zmian kończy się komunikatem „Only an administrator of this PC can do that.”

    Twoje konto Windows nie może zmieniać agenta. Poproś administratora komputera, żeby dodał Cię do lokalnej grupy
    **Omnilinker ERP Sync Operators**, a potem spróbuj ponownie. Nie musisz się wylogowywać. Zobacz
    [Kto może zmieniać agenta](/pl/erp/install-agent#kto-może-zmieniać-agenta).

    Administrator może też zamknąć aplikację w zasobniku i uruchomić ją ponownie poleceniem **Uruchom jako
    administrator**.
  </Accordion>

  <Accordion title="Lokalne API odpowiada 403 Forbidden">
    Skrypt lub narzędzie do monitorowania dostaje `403 Forbidden` z pustą treścią z adresu
    `http://localhost:5555/api/...`.

    * Dodaj do każdego żądania nagłówek `X-Omnilinker-Local: 1`. Zobacz
      [Lokalne API](/pl/erp/local-api#dostęp-i-bezpieczeństwo).
    * Wywołuj API przez `localhost`, `127.0.0.1` albo `[::1]`, a nie przez nazwę komputera.
    * Ze strony internetowej API mogą wywoływać tylko strony Omnilinkera.
  </Accordion>

  <Accordion title="Port lokalnego API jest już zajęty">
    Usługa zatrzymuje się zaraz po uruchomieniu. Jej plik logu zawiera wiersz podobny do
    `Failed to bind to address http://127.0.0.1:5555: address already in use`.

    Inny program używa portu 5555 na komputerze z agentem. Znajdź go:

    ```powershell theme={null}
    Get-NetTCPConnection -LocalPort 5555 -State Listen |
      ForEach-Object { Get-Process -Id $_.OwningProcess }
    ```

    Zatrzymaj ten program albo przenieś go na inny port, a następnie uruchom usługę.

    Możesz przenieść agenta na inny port za pomocą `LocalApiPort` w `appsettings.json`, ale karta **Usługa lokalna** w
    aplikacji webowej i zapasowe połączenie aplikacji w zasobniku nadal używają portu 5555 i nie połączą się z
    agentem. Jeśli to możliwe, zwolnij port 5555. Zobacz [opis konfiguracji](/pl/erp/configuration-reference).
  </Accordion>

  <Accordion title="Karta Agent pokazuje Offline">
    **Offline** oznacza, że Omnilinker nie otrzymał sygnału kontrolnego (heartbeat) od ponad 3 minut. Pole
    **Ostatni sygnał kontrolny** pokazuje, kiedy dotarł ostatni. Działający, zaakceptowany agent wysyła go co 60 sekund.

    Sprawdź po kolei:

    1. **Czy usługa działa?** Zobacz **Usługa się nie uruchamia**.
    2. **Czy agent może połączyć się z Omnilinkerem?** Zobacz **Agent nie może połączyć się z omnilinker.pl**.
    3. **Czy połączenie jest aktywne?** W **Integracja ERP** > **Połączenia** połączenie musi mieć **Status**
       **Aktywne**. Omnilinker odrzuca sygnały kontrolne i zmiany dla nieaktywnego połączenia. Aby je włączyć,
       kliknij **Aktywuj** w menu **Akcje** wiersza.
    4. **Czy klucz API jest nadal ważny?** Zobacz **Klucz API jest odrzucany**.
    5. **Czy agent nie jest za stary?** Zobacz **Omnilinker odrzuca wersję agenta**.

    Jeśli karta pokazuje **Żaden agent jeszcze się nie połączył**, agent nigdy nie połączył się z Omnilinkerem przy
    użyciu klucza tego połączenia. Przejdź przez [kreator konfiguracji](/pl/erp/setup-wizard) na komputerze z
    agentem.
  </Accordion>

  <Accordion title="Klucz API jest odrzucany">
    Log agenta wielokrotnie pokazuje:

    ```text theme={null}
    Authentication failed for connection <connection-id>. Status: Unauthorized. Please verify API key is valid and not expired.
    Heartbeat returned Unauthorized for connection <connection-id>
    ```

    W aplikacji w zasobniku sprawdzenie klucza kończy się komunikatem „Invalid API key. Please check and try again.”.

    Klucz agenta przestał działać. Najczęściej ktoś ponownie kliknął **Wygeneruj klucz agenta** przy połączeniu:
    wygenerowanie nowego klucza natychmiast unieważnia poprzedni.

    Aby to naprawić:

    1. W Omnilinkerze otwórz **Integracja ERP** > **Połączenia**, otwórz menu **Akcje** wiersza i kliknij
       **Wygeneruj klucz agenta**. Skopiuj klucz. Jest wyświetlany tylko raz. Zobacz
       [Tworzenie połączenia](/pl/erp/create-connection).
    2. Na komputerze z agentem otwórz **Settings...** w aplikacji w zasobniku, wklej klucz w sekcji
       **Cloud Connection**, kliknij **Validate**, a potem **Save**. Zobacz
       [Aplikacja w zasobniku](/pl/erp/tray-app).

    Ponowne wygenerowanie klucza unieważnia również ten, który właśnie utworzyłeś, więc zrób to tylko raz i od razu
    zapisz nowy klucz w agencie.

    Dwa powiązane komunikaty:

    * „API key doesn't have required permissions. Grant ERP Integration permissions to this API key.” Klucz nie jest
      kluczem agenta. Użyj klucza z **Wygeneruj klucz agenta**, a nie klucza ze strony kluczy API w Administracji.
    * „This agent key is not authorized for the requested ERP connection.” Klucz należy do innego połączenia. Wybierz
      właściwe połączenie w ustawieniach aplikacji w zasobniku albo wygeneruj klucz w tym połączeniu.

    `Status: Forbidden` w pierwszym komunikacie powyżej nie oznacza problemu z kluczem. Zobacz
    **Omnilinker odrzuca wersję agenta** i **Zmiany nie docierają**.
  </Accordion>

  <Accordion title="Omnilinker odrzuca wersję agenta">
    Omnilinker może wymagać minimalnej wersji agenta. Gdy Twój agent jest starszy, Omnilinker odrzuca każde jego
    żądanie z komunikatem:

    ```text theme={null}
    Agent version <version> is no longer supported (minimum supported version: <minimum>). Please update the ERP Sync agent.
    ```

    Co widzisz:

    * W Omnilinkerze karta **Agent** połączenia zmienia stan na **Offline**, a **Ostatni sygnał kontrolny** przestaje
      się zmieniać. **Wersja agenta** nadal pokazuje Twoją starą wersję.
    * W logu agenta pojawia się `Heartbeat returned Forbidden` oraz `Cloud API returned Forbidden for batch publish:`,
      a po nim powyższy komunikat. Sprawdzanie konfiguracji zapisuje też `Authentication failed ... Status: Forbidden`,
      choć klucz jest w porządku.
    * Liczba `pending` w kolejce wychodzącej rośnie, a później rośnie też `failed`.

    Agent [aktualizuje się sam](/pl/erp/install-agent#zaktualizuj-agenta) w nocy, gdy pojawi się nowsza wersja, więc
    problem powinien zniknąć sam. Jeśli nie znika, sprawdź, czy automatyczne aktualizacje są włączone
    (`AutoUpdateEnabled`) i czy komputer agenta ma dostęp do `releases.omnilinker.com`, albo uruchom nowy instalator
    ręcznie.

    Zrób to szybko. Każde odrzucone wysłanie liczy się jako nieudana próba, a zmiany, których wszystkie próby się nie
    powiodły, nie są wysyłane ponownie (zobacz **Zmiany nie docierają**).
  </Accordion>

  <Accordion title="Agent nie może połączyć się z omnilinker.pl">
    Status pokazuje `isConnected: False`. Test połączenia z chmurą w aplikacji w zasobniku kończy się komunikatem
    `Cloud connection failed:` z przyczyną albo `Cloud returned status:` ze statusem HTTP.

    1. Sprawdź połączenie z komputera z agentem:

       ```powershell theme={null}
       Test-NetConnection omnilinker.pl -Port 443
       ```

       `TcpTestSucceeded : False` oznacza, że połączenie blokuje zapora lub sieć. Agent potrzebuje wychodzącego
       połączenia HTTPS do `omnilinker.pl` na porcie 443. Zobacz [Wymagania](/pl/erp/requirements).
    2. Jeśli Twoja sieć wymaga serwera proxy, ustaw go dla całego komputera za pomocą zmiennej środowiskowej
       `HTTPS_PROXY`, a następnie uruchom usługę ponownie. Usługa działa jako Lokalny system, więc nie korzysta
       z ustawień proxy zalogowanej osoby:

       ```powershell theme={null}
       [Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://<proxy-host>:<port>", "Machine")
       Restart-Service OmnilinkerErpSyncService
       ```
    3. Sprawdź **API URL** w oknie **Settings...** aplikacji w zasobniku. Powinien to być `https://omnilinker.pl`.

    Dopóki Omnilinker jest nieosiągalny, agent działa na ostatnio pobranej konfiguracji i nadal kolejkuje zmiany.
    Każde nieudane wysłanie liczy się jednak jako próba, więc długa przerwa może sprawić, że zakolejkowane zmiany
    zostaną trwale oznaczone jako nieudane. Zobacz **Zmiany nie docierają**.
  </Accordion>

  <Accordion title="Agent nie może połączyć się z bazą danych ERP">
    Status pokazuje `isErpConnected: False` albo **Test Connection** w aplikacji w zasobniku zwraca `SQL error:`, a po
    nim komunikat SQL Server.

    Przetestuj ustawienia bazy danych w aplikacji w zasobniku: **Settings...** > **Database Connection** >
    **Test Connection**. Test jest wykonywany w usłudze Windows, na koncie usługi, więc zachowuje się tak samo jak agent.

    **Nie można znaleźć serwera.** Komunikat SQL Server zaczyna się od „A network-related or instance-specific error
    occurred while establishing a connection to SQL Server”.

    * Sprawdź **Server / Host**. Dla nazwanego wystąpienia użyj formatu `server\instance`, na przykład
      `erp-server\WAPRO`.
    * Sprawdź, czy komputer z agentem może połączyć się z portem SQL Server:

      ```powershell theme={null}
      Test-NetConnection <erp-server> -Port 1433
      ```

      Jeśli Twoje wystąpienie nie używa portu 1433, podaj jego port. Nazwane wystąpienie z portem dynamicznym wymaga
      też usługi SQL Server Browser i portu UDP 1434.

    **Logowanie nie powiodło się.** Komunikat SQL Server zaczyna się od „Login failed for user”.

    * **Uwierzytelnianie SQL Server** (pole **Username** jest wypełnione): sprawdź nazwę użytkownika i hasło oraz to,
      czy SQL Server zezwala na uwierzytelnianie SQL Server (tryb mieszany).
    * **Uwierzytelnianie Windows** (pole **Username** puste): agent loguje się jako **konto usługi**, Lokalny system,
      a nie jako Ty. Użytkownik wymieniony w komunikacie to właśnie to konto: konto domenowe komputera z agentem
      (`DOMAIN\COMPUTER$`) przy zdalnym SQL Server albo `NT AUTHORITY\SYSTEM` przy SQL Server na tym samym
      komputerze. Nadaj temu kontu login i dostęp do odczytu bazy danych ERP albo użyj uwierzytelniania SQL Server.
      Zobacz [Wymagania](/pl/erp/requirements#login-sql-server).
    * Sprawdź, czy login może otworzyć bazę danych podaną w polu **Database Name**.

    **Błędy certyfikatu.** Komunikat SQL Server wspomina o certyfikacie, na przykład „The certificate chain was issued
    by an authority that is not trusted”.

    Agent domyślnie szyfruje połączenie z SQL Server, nawet gdy pole **Encrypt connection** nie jest zaznaczone, a
    większość instalacji SQL Server używa certyfikatu z podpisem własnym. Zainstaluj w SQL Server certyfikat, któremu
    ufa komputer z agentem, albo zaznacz **Trust server certificate** w sekcji **Advanced Connection Options** i
    kliknij **Save**.

    <Note>
      **Test Connection** używa obu pól wyboru dokładnie tak, jak są zaznaczone, a usługa szyfruje połączenie, jeśli
      nie wskazano inaczej. Test może więc zakończyć się powodzeniem przy obu polach niezaznaczonych, a usługa nadal
      będzie zgłaszać błąd certyfikatu. Jeśli widzisz taką sytuację, zaznacz **Trust server certificate**.
    </Note>
  </Accordion>

  <Accordion title="Zmiany nie docierają (kolejka wychodząca rośnie)">
    Agent wykrywa zmiany, ale Omnilinker ich nie otrzymuje. `GET /api/sync/outbox/stats` pokazuje rosnącą wartość
    `pending` albo `failed` większe od zera. Menu w zasobniku pokazuje **Queue: `<n>` pending | `<n>` failed**.

    **Jak agent ponawia próby.** Agent przechowuje każdą zmianę w lokalnej kolejce wychodzącej (outbox) i co kilka
    sekund wysyła zmiany w paczkach. Gdy wysłanie się nie powiedzie, z jakiegokolwiek powodu, zmiana pozostaje w stanie
    **pending** i jest wysyłana ponownie w następnym cyklu. Po 5 nieudanych próbach (`MaxRetryAttempts` w
    `appsettings.json`) zostaje oznaczona jako **failed** i agent już jej nie wysyła.

    Przyczynę znajdziesz w pliku logu agenta. Szukaj tych wierszy:

    | Wiersz logu                                         | Znaczenie                                                                                                                          |
    | --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
    | `Cloud API returned Unauthorized for batch publish` | Klucz jest odrzucany. Zobacz **Klucz API jest odrzucany**.                                                                         |
    | `Cloud API returned Forbidden for batch publish:`   | Tekst po nim podaje przyczynę: zbyt stary agent, nieaktywne połączenie albo klucz innego połączenia.                               |
    | `Failed to publish chunk`                           | Wysłanie się nie powiodło, często dlatego, że Omnilinker był nieosiągalny. Zobacz **Agent nie może połączyć się z omnilinker.pl**. |
    | `OUTBOX PARTIAL REJECTION`                          | Omnilinker przyjął część zmian, a pozostałe odrzucił. Wiersz podaje pierwsze przyczyny.                                            |

    Sprawdź też, czy połączenie ma w Omnilinkerze status **Aktywne**.

    Zmiany, których wszystkie próby już się nie powiodły, nie są automatycznie wysyłane ponownie. Kolejna zmiana tego
    samego rekordu w ERP zostanie wykryta i wysłana jak zwykle.
  </Accordion>

  <Accordion title="Agent jest online, ale nic się nie synchronizuje">
    Karta **Agent** pokazuje **Online**, ale w Omnilinkerze nie pojawiają się nowe wpisy logu synchronizacji.

    Sprawdź po kolei:

    1. **Czy synchronizacja jest wstrzymana?** Ikona w zasobniku jest bursztynowa, a jej etykieta pokazuje **Paused**,
       albo status pokazuje `state: 2`. Wybierz **Resume Sync** w menu w zasobniku. Zobacz
       [Aplikacja w zasobniku](/pl/erp/tray-app).
    2. **Czy typ encji jest skonfigurowany?** Na karcie **Konfiguracja synchronizacji** połączenia każdy typ encji,
       który chcesz synchronizować, musi mieć konfigurację w stanie **Włączone**. Jeśli karta pokazuje komunikat
       „Nie znaleziono konfiguracji synchronizacji. Dodaj konfigurację, aby włączyć synchronizację.”, dodaj
       konfigurację. Zobacz [Konfiguracja synchronizacji](/pl/erp/sync-configuration).
    3. **Czy wykrywanie zmian jest włączone?** Przy wykrywaniu zmian przez skanowanie skrótów (domyślnym) agent
       znajduje zmiany tylko dzięki weryfikacji hash. Otwórz konfigurację synchronizacji typu **Produkt**, rozwiń
       **Zaawansowane ustawienia czasowe** i upewnij się, że **Wykrywanie zmian przez hash** ma zaznaczone
       **Włączone**. W menu w zasobniku **Hash Check: Disabled** oznacza, że jest wyłączone.
    4. **Czy agent wczytał swoją konfigurację?** Jeśli `lastError` ma wartość `Waiting for cloud configuration`, agent
       nie pobrał jeszcze swoich ustawień z Omnilinkera. Zobacz **Klucz API jest odrzucany** i
       **Agent nie może połączyć się z omnilinker.pl**.
    5. **Czy dane logowania do ERP są ustawione?** Jeśli `lastError` ma wartość `ERP credentials not configured` albo
       test ERP w aplikacji w zasobniku pokazuje „No ERP credentials configured. Run setup wizard to configure.”,
       przejdź przez [kreator konfiguracji](/pl/erp/setup-wizard).
    6. **Czy w ERP coś się zmieniło?** Agent wysyła tylko zmiany. Pierwsza weryfikacja hash po instalacji porównuje
       wszystkie rekordy, a kolejne znajdują tylko to, co zmieniło się od poprzedniej. Aby sprawdzić od razu, wybierz
       **Trigger Hash Check** w menu w zasobniku.

    Weryfikacja hash uruchamia się zgodnie ze swoim interwałem (domyślnie co 15 minut). **Sync Now** w aplikacji w
    zasobniku uruchamia ją wcześniej.
  </Accordion>

  <Accordion title="Zmiany docierają jako pominięte">
    Wpisy logu synchronizacji w Omnilinkerze nie mają plakietki statusu, a ich komunikat błędu to kod, taki jak
    `ErpIntegration:Skip:ProductNotMapped`. Omnilinker otrzymał zmianę, ale celowo jej nie zastosował.

    Większość z nich oznacza, że coś nie jest jeszcze zmapowane:

    * `ErpIntegration:Skip:PriceLevelNotMapped` lub `ErpIntegration:Skip:WarehouseNotMapped`: zmapuj poziom cen lub
      magazyn ERP na karcie **Mapowania** połączenia. Zobacz [Dane słownikowe](/pl/erp/reference-items).
    * `ErpIntegration:Skip:ProductNotMapped`: cena, stan magazynowy lub zestaw należy do produktu, który nie jest
      jeszcze powiązany z produktem w katalogu. Upewnij się, że produkty synchronizują się jako pierwsze. Zobacz
      [Mapowania pól](/pl/erp/field-mappings).

    Pełna lista znajduje się na stronie [Monitorowanie](/pl/erp/monitoring).
  </Accordion>

  <Accordion title="Akcja Testuj połączenie w aplikacji webowej zawsze kończy się niepowodzeniem">
    **Testuj połączenie** w menu **Akcje** połączenia zawsze zgłasza niepowodzenie. Tak ma być: Omnilinker nie ma
    danych logowania do Twojej bazy danych ERP, które pozostają na komputerze z agentem. Zamiast tego przetestuj
    połączenie z bazą danych w aplikacji w zasobniku: **Settings...** > **Database Connection** > **Test Connection**.
  </Accordion>

  <Accordion title="Przyciski Uruchom synchronizację i Ponów w aplikacji webowej nic nie robią">
    **Uruchom synchronizację** na stronie połączenia (oraz przycisk synchronizacji na panelu) wyświetla potwierdzenie
    „Synchronizacja została uruchomiona”, ale polecenie nie dociera do agenta. **Ponów** przy nieudanym wpisie logu
    synchronizacji tylko przywraca go do stanu **Oczekujące**.

    Aby agent od razu poszukał zmian, użyj **Sync Now** lub **Trigger Hash Check** w aplikacji w zasobniku albo
    `POST /api/sync/now` w [lokalnym API](/pl/erp/local-api). Zobacz też [Monitorowanie](/pl/erp/monitoring).
  </Accordion>

  <Accordion title="Karta Usługa lokalna pokazuje Lokalna usługa synchronizacji niedostępna">
    Karta **Usługa lokalna** połączenia komunikuje się z agentem pod adresem `http://localhost:5555` z Twojej
    przeglądarki. Działa tylko w przeglądarce na komputerze z agentem, gdy agent używa portu 5555. Na każdym innym
    komputerze ten komunikat jest oczekiwany. Zamiast tego użyj karty **Agent**. Zobacz
    [Monitorowanie](/pl/erp/monitoring).
  </Accordion>
</AccordionGroup>

## Pomoc

Jeśli nic z tego nie rozwiąże problemu, skontaktuj się z pomocą techniczną Omnilinkera.

Dołącz:

* Nazwę połączenia i to, co widzisz na jego karcie **Agent**.
* Wersję agenta z karty **Agent** albo z pola `version` w `GET /api/sync/status`.
* Wynik szybkich testów z początku tej strony.
* Pliki logu usługi z okresu, w którym pojawił się problem.

<Warning>
  Nigdy nie wysyłaj pliku `credentials.dat` i nie wklejaj do wiadomości klucza API ani hasła do ERP. Lokalne API nigdy
  ich nie zwraca. Przejrzyj pliki logu, zanim je wyślesz.
</Warning>
