> For the complete documentation index, see [llms.txt](https://docs.dibbel.no/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dibbel.no/brukerveiledninger/for-nettsiden/funksjoner/ressursmaler/rapportmal/variabler/detaljert-bruk-av-variabler/iteratorer.md).

# 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.<br>

### Eksempel: Bruk av iteratorer i en tilbudsmal

{% stepper %}
{% step %}

### Finn frem til linjer

* Klikk på variabellisten til tilbud

<div align="left"><figure><img src="/files/NzNoSJEE3LsKJAtIAzhn" alt="" width="375"><figcaption></figcaption></figure></div>

* Klikk deg videre inn på linjer

<div align="left"><figure><img src="/files/qp8WiWu58srMPQzMOlzw" 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="/files/sLOyIq6PKwPNNp0E0Kcr" 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="/files/AJfJrdrI4Sqny8s0wbNL" 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="/files/RSeiJiMCHrl5CftsKtnt" 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>
