---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.3
alternate:
  - https://divkit.tech/docs/en/concepts/user-functions.md
  - https://divkit.tech/docs/ru/concepts/user-functions.md
---
> **Documentation Index:** Fetch the complete configuration index at https://divkit.tech/docs/ru/llms.txt

# Пользовательские функции

Помимо [встроенных функций](https://divkit.tech/docs/ru/concepts/functions.md), вы можете объявлять свои.

Пользовательские функции объявляются в блоке `functions`. В них нельзя использовать [переменные](https://divkit.tech/docs/ru/concepts/variables.md): можно только передавать их значения в качестве аргументов функции. Если название вашей функции совпадает с названием встроенной, приоритетной будет ваша функция.

Функции можно объявлять во вложенных элементах. Если название и аргументы нескольких пользовательских функций совпадают, приоритетной будет ближайшая к точке вызова функция.

## Значения полей

{% cut "Пример объявления функции" %}

```
"functions": [
  {
    "name": "increment",
    "body": "@{value + 1}",
    "return_type": "integer",
    "arguments": [
      {
        "name": "value",
        "type": "integer"
      }
    ]
  }
]
```

Объявленная функция возвращает переданный в нее аргумент `"value"`, увеличенный на 1.

{% endcut %}

При объявлении функции нужно заполнить следующие поля:

* `"name"` — название;

* `"body"` — тело функции;

* `"return_type"` — тип возвращаемых данных;

* `"arguments"` — список аргументов функции. Каждому аргументу соответствует пара `"name"` (название) и `"type"` (тип).

{% cut "Посмотреть интерактивный пример" %}

<iframe src="https://yastatic.net/s3/home/divkit/docs/1.0.8/index.html?url=https://yastatic.net/s3/home/divkit/doc_samples/common/user-functions_1.json" width="700" height="500" frameborder="1"></iframe>

{% endcut %}
