# Iteratorer

## Hvordan iteratorer fungerer i praksis

Iteratorer kan brukes når du vil vise flere elementer av samme type, for eksempel en liste. Dette er nyttig i tilfeller der du vil hente frem alle linjer i et datasett, som produkter i et tilbud eller punkter i en sjekkliste.

Tidligere så vi at punktum i en variabel brukes til å binde et undertema til et hovedtema, for eksempel {kunde.navn}. Iteratoren bygger videre på dette prinsippet, men i stedet for å koble én verdi, henter den flere elementer i en liste samtidig.

For å bruke iteratorer starter du med en variabel som peker på datasettet du vil iterere over. For å markere selve starten legger du til en hashtag foran variabelen, for eksempel: `{#billing.billingLines}`. Her fungerer hashtaggen som et signal til systemet om at det nå skal gå gjennom hele listen med data, i dette tilfellet tilbudslinjene.&#x20;

Til slutt må iteratoren lukkes med `{/}`, slik at systemet vet hvor listen slutter. Hele iteratoren blir dermed en pakke som starter, henter inn de feltene du har valgt, og avsluttes riktig. Resultatet er at alle elementene i listen vises automatisk i tabellen, uten at du trenger å legge inn hver variabel manuelt.

***

### Eksempel: Bruk av iteratorer i en tilbudsmal

{% stepper %}
{% step %}

### Finn frem til linjer

* Klikk på variabellisten til tilbud

<div align="left"><figure><img src="https://3216209513-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6aWzMnk8Uk6WDJJWUE46%2Fuploads%2FURriAYLOj4fTn9RXBh0P%2Fimage.png?alt=media&#x26;token=29bca89c-aa13-4ae7-83a5-b4865afc8812" alt="" width="375"><figcaption></figcaption></figure></div>

* Klikk deg videre inn på linjer

<div align="left"><figure><img src="https://3216209513-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6aWzMnk8Uk6WDJJWUE46%2Fuploads%2FTYig6QZKWDaR6a2Tv4St%2Fimage.png?alt=media&#x26;token=bea512fa-ccf6-43c9-b18f-517ba9209c80" alt="" width="375"><figcaption></figcaption></figure></div>

&#x20;
{% endstep %}

{% step %}

### Velg riktige linjer

* Velg iteratorer fra listen under "Linjer" (Listen er ikke uttømmende)

<div align="left"><figure><img src="https://3216209513-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6aWzMnk8Uk6WDJJWUE46%2Fuploads%2FBjut4Ok1pvpMXXB46oz3%2Fimage.png?alt=media&#x26;token=fd4229a6-b3ee-446e-8151-95cb71544ee7" alt="" width="357"><figcaption></figcaption></figure></div>

{% endstep %}

{% step %}

### Splitt opp iteratoren

* I en tilbudsmal vil du ofte vise produkter med antall, pris og sum. Dette settes vanligvis inn i en tabell.
* Del opp iteratoren for å vise flere felt i tabellen:&#x20;

<figure><img src="https://3216209513-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6aWzMnk8Uk6WDJJWUE46%2Fuploads%2F6BbLgzItO7dB67ZLZCSZ%2Fimage.png?alt=media&#x26;token=d4eb4b29-dc35-430a-9398-346df8f7990a" alt=""><figcaption></figcaption></figure>

* Husk alltid å lukke iteratoren med `{/}` .

{% endstep %}

{% step %}

### Resultat&#x20;

* Slik kan et resultat se ut når malen benyttes for et tilbud med fire linjer:

<figure><img src="https://3216209513-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6aWzMnk8Uk6WDJJWUE46%2Fuploads%2FTdQuofUJhYuWOr9eZY3d%2Fimage.png?alt=media&#x26;token=4573c7a6-df9e-46b0-b7b6-3a8aeb22d53b" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Tabellen utvides automatisk for å samsvare med antall linjer i tilbudet.
{% endhint %}
{% endstep %}
{% endstepper %}

<details>

<summary>Telle (count)</summary>

Når du vil telle noe i en iterator, bruker du funksjonen **count**. Etter at du har startet iteratoren med `{#submissions}`, legger du til `| count:`. Dette forteller systemet at du vil telle antall elementer i listen. Deretter må du legge inn en betingelse som sier *hva* som skal telles.

For eksempel, hvis du vil telle antall innsendelser hvor typen er "slukker", skriver du: `'type=== "slukker"`

Når man setter sammen hele variabelen, blir den seende slik ut:&#x20;

{submissions | count:'type=== "slukker"'}.&#x20;

For å bryte ned variabelen vil dette si&#x20;

Bruke iterator = {#submissions}&#x20;

```
{submissions | count:'type==="slukker"'}
```

</details>

<details>

<summary>Filtrere (where)</summary>

Når du vil filtrere i en iterator, bruker du funksjonen **where**. Her følger du samme prinsipp som når du skal telle, men med kodeord **"where"**. For eksempel om du ønsker å kun vise innsendelser som har en signatur, da kan du gjøre slik:

\
{#submissions | where:'signatur'}{/}

```
{#submissions | where:'signatur'}{/}

```

Eller hvis du ønsker å iterere over alle som er av en viss type, kan du gjøre slik:

```
{#submissions | where:'type==="slukker"'}{/}
```

Du må alltid avslutte en variabel med `{/}` for å "lukke" den. Dette markerer slutten og gjør at systemet forstår betingelsen riktig.&#x20;

</details>


---

# 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.dibbel.no/brukerveiledninger/for-nettsiden/funksjoner/ressursmaler/rapportmal/variabler/detaljert-bruk-av-variabler/iteratorer.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.
