diff --git a/docs/ru/sql-reference/functions/index.md b/docs/ru/sql-reference/functions/index.md
index 92bd1c1c2f8..caee4e5c672 100644
--- a/docs/ru/sql-reference/functions/index.md
+++ b/docs/ru/sql-reference/functions/index.md
@@ -58,9 +58,68 @@ str -> str != Referer
Для некоторых функций первый аргумент (лямбда-функция) может отсутствовать. В этом случае подразумевается тождественное отображение.
-## Пользовательские функции {#user-defined-functions}
+## Пользовательские функции SQL {#user-defined-functions}
-Функции можно создавать с помощью выражения [CREATE FUNCTION](../statements/create/function.md). Для удаления таких функций используется выражение [DROP FUNCTION](../statements/drop.md#drop-function).
+Функции можно создавать из лямбда выражений с помощью [CREATE FUNCTION](../statements/create/function.md). Для удаления таких функций используется выражение [DROP FUNCTION](../statements/drop.md#drop-function).
+
+## Исполняемые пользовательские функции {#executable-user-defined-functions}
+ClickHouse может вызывать внешнюю программу или скрипт для обработки данных. Такие функции описываются в [конфигурационном файле](../../operations/configuration-files.md). А путь к нему должен быть указан в настройке `user_defined_executable_functions_config` в основной конфигурации. В пути можно использовать символ подстановки `*`, тогда будут загружены все файлы, соответствующие шаблону. Пример:
+``` xml
+*_function.xml
+```
+Файлы с описанием функций ищутся относительно каталога, заданного в настройке `user_files_path`.
+
+Конфигурация функции содержит следующие нстройки:
+
+- `name` - имя функции.
+- `command` - исполняемая команда или скрипт.
+- `argument` - описание аргумента, содержащее его тип во вложенной настройке `type`. Каждый аргумент описывается отдельно.
+- `format` - [формат](../../interfaces/formats.md), в котором аргументы передаются команде.
+- `return_type` - тип возвращаемого значения.
+- `type` - вариант запуска команды. Если задан вариант `executable`, то запускается одна команда. При указании `executable_pool` создается пул команд.
+- `max_command_execution_time` - максимальное время в секундах, отводимое на обработку блока данных. Эта настройка применима только для команд с вариантом запуска `executable_pool`. Необязательная настройка. Значение по умолчанию `10`.
+- `command_termination_timeout` - максимальное время завершения команды в секундах после закрытия конвейера. Если команда не завершается, то процессу отправляется сигнал SIGTERM. Эта настройка применима только для команд с вариантом запуска `executable_pool`. Необязательная настройка. Значение по умолчанию `10`.
+- `pool_size` - размер пула команд. Необязательная настройка. Значение по умолчанию `16`.
+- `lifetime` - интервал перезагрузки функций в секундах. Если задан `0`, то функция не перезагружается.
+- `send_chunk_header` - управляет отправкой количества строк перед отправкой блока данных для обработки. Необязательная настройка. Значение по умолчанию `false`.
+
+Команд должна читать аргументы из STDIN и выводить результат в STDOUT. Обработка должна выполняться в цикле. То есть после обработки группы аргументов команда должна ожидать следующую группу.
+
+**Пример**
+
+XML конфигурация описывает функцию `test_function`.
+```
+
+
+ executable
+ test_function
+ UInt64
+
+ UInt64
+
+
+ UInt64
+
+ TabSeparated
+ cd /; clickhouse-local --input-format TabSeparated --output-format TabSeparated --structure 'x UInt64, y UInt64' --query "SELECT x + y FROM table"
+ 0
+
+
+```
+
+Запрос:
+
+``` sql
+SELECT test_function(toUInt64(2), toUInt64(2));
+```
+
+Результат:
+
+``` text
+┌─test_function(toUInt64(2), toUInt64(2))─┐
+│ 4 │
+└─────────────────────────────────────────┘
+```
## Обработка ошибок {#obrabotka-oshibok}