# Zarządzanie zmiennymi sesyjnymi

## Panel Zmienne sesyjne

Widokiem do zarządzania zmiennymi sesyjnymi jest panel **Zmienne sesyjne**. W celu otwarcia go należy w lewym menu wybrać opcję **Zmienne sesyjne**. W prawej części belki tytułowej panelu znajduje się ikona lupki umożliwiająca przeszukiwanie listy zmiennych.

![Ilustracja 1. Panel "Zmienne sesyjne"](/files/63ac0af158dc949f93b5c367683d8ccca2a22ab4)

### Dodanie nowej zmiennej sesyjnej

Dodanie nowej zmiennej sesyjnej odbywa się poprzez naciśnięcie przycisku **Dodaj zmienną sesyjną**.

W nowym wierszu dodanym na samej górze panelu wypełniamy:

* **Mid** - klucz zmiennej
* **Wartość domyślna** - stała wartość zmiennej
* **Id serwisu** - po podpięciu zmiennej sesyjnej do usługi, w tym miejscu pojawi się nazwa tego serwisu
* **Parametr wyjściowy** - jeśli zmienna sesyjna będzie parametrem wyjściowym usługi, to tutaj zostanie podany
* **Exposed** - zaznaczamy, czy dana zmienna sesyjna ma być przekazywana do klienta **w sposób jawny**. Opcja ta pozwala używać zmiennej sesyjnej w wyrażeniach warunkowych oraz formaterach wykonywanych po stronie klienta. Jeżeli zmienna sesyjna ma odznaczone pole, nie jest ona wysyłana do klienta.
* **Gtm**
* **Tag gtm** - nazwa taga gtm
* **Statystyki** - włączenie opcji wysyłania wartości zmiennej do statystyk.

![Ilustracja 2. Wiersz tworzenia zmiennej sesyjnej](/files/ec998f7e014de7e21d490f3c2bad1b8e348106ee)

Po zejściu z pola nazwy, zmienna zostaje utworzona. Jeśli dla zmiennej nie zostanie zdefiniowana nazwa, to system automatycznie nada wartość "pusty" lub kopię tej wartości jeśli już występowała.

### Edycja istniejącej zmiennej sesyjnej

W celu edycji istniejącej zmiennej wystarczy kliknąć w kolumnie **Mid** i zmienić wartość.

### Definicja wyjścia z usługi

Zmienna sesyjna może służyć jako miejsce zapisu wyniku wykonania usługi zdefiniowanej w ramach dowolnej strony bieżącego wniosku.

Mapowanie zmiennej na odpowiednie pole wyjściowe usługi definiujemy w panelu **Page services**, który wysuniemy klikając przycisk **Page services**:

![Ilustracja 3. Lista dostępnych na wniosku usług, wyświetlona po kliknięciu przycisku "Page services"](/files/a97b62dcbb8733a69b661846ca766f126f14497f)

Po pojawieniu się listy dostępnych dla wniosku usług szukamy właściwej usługi, a następnie odkrywamy jej szczegóły klikając znajdującą się po prawej stronie panelu opcję **Pokaż szczegóły**. Zmapowanie wyjścia z usługi do zmiennej możliwe będzie po kliknięciu **Parametry wyjściowe** w wyświetlonych szczegółach:

![Ilustracja 4. Rozwinięte szczegóły dla PageService1](/files/1a799fd6666641f0c27491bbd0fa7798b85f2d1d)

W zakładce parametrów wyjściowych klikamy przycisk **Dodaj parametr** — spowoduje to wyświetlenie wiersza, w którym najpierw, w kolumnie **Komponent wniosku**, wybieramy zmienną sesyjną, dla której chcemy zmapować wyjście, a następnie w kolumnie **Parametr wyjścia**, wskazujemy odpowiednie wyjście:

![Ilustracja 5. W zakładce "Parametry wyjściowe" wybrana została zmienna sesyjna,&#x20;
dla której jeszcze trzeba wybrać parametr wyjścia](/files/f9fb1bd60b865de9d45c07aae1e65e6b2319eedf)

Po poprawnym podpięciu usługi do zmiennej, w jej właściwościach będzie informacja o podpiętej usłudze oraz wskazanym parametrze wyjściowym:

![Ilustracja 6. W panelu zmiennych sesyjnych dla zmiennej mającej podpiętą usługę jej nazwa znajduje się&#x20;
w kolumnie "Id serwisu", a obok parametr wyjściowy z usługi](/files/767b83c970943618b45071c1e30a5790f481ebba)

### Usunięcie zmiennej sesyjnej

Usunięcie zmiennej sesyjnej następuje poprzez wybranie ikony kosza dostępnej po najechaniu na wiersz tej zmiennej sesyjnej. Próba usunięcia zmiennej sesyjnej wykorzystywanej w artefakcie (np. jako parametr wejścia do usługi czy nasłuchiwania na zmienną) zakończy się wyświetleniem komunikatu informacyjnego:

![Ilustracja 7. Dymek z informacją o niemożliwości usunięcia zmiennej sesyjnej](/files/e1659515c7928052f97f913083a9d4b74d165c23)

### Wykorzystanie zmiennej sesyjnej do określenia wartości początkowej komponentu

W celu wykorzystania zmiennej sesyjnej do określenia wartości początkowej danego elementu należy wykonać odpowiednie kroki:

* zaznaczamy komponent
* na liście dostępnych właściwości wyszukujemy w sekcji Interakcje właściwość **ŹRÓDŁO DANYCH Z INNEGO POLA**
* po kliknięciu w **Wybierz komponent lub stałą** możemy wybrać mid zmiennej sesyjnej, która ma posłużyć jako wartość domyślna tego elementu,
* dodatkowo należy dodać nasłuchiwanie na zmienną zgodnie z instrukcją w: [Nasłuchiwanie i czyszczenie](/budowanie-aplikacji/interfejs-uzytkownika/formularze/dynamicznosc-formularza/nasluchiwanie-i-czyszczenie.md)

### Wykorzystanie zmiennej sesyjnej do pobrania wartości komponentu

Dla zmiennej sesyjnej wybieramy usługę EchoService dodaną na stronie wniosku.

### Przykłady użycia zmiennej sesyjnej

* Użycie zmiennej sesyjnej w warunku: getValue("@zmienna1")=="Y" gdzie zmienna1 jest nazwą zmiennej
* Użycie zmiennej sesyjnej w komponencie Etykieta: Obecna wartość zmiennej to ${zmienna1} gdzie zmienna1 jest nazwą zmiennej

{% hint style="warning" %}
Uwaga!

1. Jeśli zmienną sesyjną używamy w komponencie złożonym, należy przed jej nazwą dodać symbol @ (nie stosujemy tej notacji dla zmiennych predefiniowanych).
2. Zmiennych sesyjnych nie można użyć w [Sekcja powtarzalna - RepeatableSection](https://github.com/Consdata/eximee-docs/blob/main/budowanie-aplikacji/interfejs-uzytkownika/formularze/biblioteka-komponentow-bazowych/sekcja-powtarzalna-repeatablesection.md) — tutaj używamy pól technicznych.
   {% endhint %}

{% hint style="info" %}
Wniosek demo: demoZmienneSesyjne
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.eximee.com/budowanie-aplikacji/interfejs-uzytkownika/formularze/zmienne-sesyjne/zarzadzanie-zmiennymi-sesyjnymi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
