﻿# Дополнительные параметры

> [HTML Version](360009207779.html)

В этом разделе вы можете добавлять и хранить параметры, а затем использовать их в [скриптах](360027203731.md) внутри бизнес-процессов. В отличие от [контекстных переменных](process_context.md), значение которых меняется от экземпляра к экземпляру, параметр остаётся неизменным для всех экземпляров процесса. Также такие параметры можно использовать в серверных [скриптах виджетов](client_server_scripts.md).

Параметры хранятся в разделе централизованно. Это значит, что в дальнейшем, если вам потребуется изменить параметр, не нужно будет вносить правки в скрипты, в которых он используются. Достаточно отредактировать данные в разделе **Дополнительные параметры**.

**(additional-parameters-1.png)**

````
начало примера

````
**Пример применения параметров**

Предположим, компания принимает заказы от клиентов через сайт. Между сайтом и ELMA365 настроена интеграция. Это позволяет передавать данные о готовности заказа в личный кабинет на сайте.

Такая интеграция осуществляется при помощи скрипта. Для корректной работы скрипта необходимо указать адрес сайта и токен для авторизации. Неважно, сколько экземпляров процесса будет запущено, эти параметры останутся неизменными. Кроме того, если компания решит создать ещё один бизнес-процесс и настроить в нем интеграцию с сайтом, ей понадобятся те же самые параметры.

Учитывая это, удобно хранить адрес сайта и токен в разделе **Дополнительные параметры**. Если однажды адрес сайта или токен изменятся, сотрудникам компании не придётся проверять все скрипты в процессах. Достаточно будет изменить нужный параметр в соответствующем разделе.

````
конец примера

## ````
Типы параметров

Параметры можно разделить на три группы:



- **глобальные параметры** — заданы на уровне компании и всегда доступны для использования в процессах компании и виджетах, созданных на уровне компании. Также вы можете применять их при создании скриптов в любом [разделе](360007990371.md) или [приложении](360006963072.md), но для этого необходимо включить использование константы \[OBJECT\]. Обратите внимание, в таком случае экспорт раздела или приложения станет недоступен;

- **параметры раздела** — заданы на уровне раздела и всегда доступны для использования в процессах и виджетах этого раздела. Кроме того, эти параметры могут применяться в процессах и виджетах приложений, входящих в раздел, но для этого необходимо включить использование константы \[OBJECT\];

- **параметры приложения** — заданы на уровне приложения и доступны для использования в процессах и виджетах, созданных на уровне этого приложения.

````
начало внимание

````
Использование констант \[OBJECT\] или \[OBJECT\] в скриптах ограничивает экспорт компонентов системы. Подробнее об этом читайте в статье [«Глобальные константы в скриптах»](global-constants.md#export-restrictions).

````
конец внимание

## ````
Создание параметров

1. Перейдите к созданию параметра одним из следующих способов:

	- откройте страницу **Администрирование > Настройки системы** **>** **Дополнительные параметры**. Здесь можно задать как глобальные параметры, так и параметры раздела или приложения;

	- выберите раздел и в меню его настроек нажмите **Дополнительные параметры**. Здесь можно задать только параметры конкретного раздела и его приложений;

	- в разделе выберите приложение и в меню его настроек нажмите **Дополнительные параметры**. Здесь можно задать только параметры конкретного приложения.

2. На открывшейся странице в правом верхнем углу нажмите на кнопку **+ Параметр**.

**(additional-parameters-2.png)**

3. В открывшемся окне заполните следующие поля:  
**(additional-parameters-3.png)**

- **Отображаемое имя\*** — укажите название, которое будет отображаться в списке параметров;

- **Имя свойства\*** — генерируется автоматически, исходя из названия параметра. На этапе создания вы можете отредактировать содержимое поля;

- **Подсказка** — здесь можно указать дополнительную информацию о параметре;

- **Тип\*** — [тип данных](360009707032.md), которые хранит данный параметр;

- **Значение** — в этом поле задайте значение параметра.

Значение параметра можно изменить. Для этого в списке параметров наведите на него курсор мыши и нажмите на появившийся значок карандаша. 

** (additional-parameters-4.png)**

Чтобы удалить созданный дополнительный параметр, выберите его название в списке. В открывшемся окне настроек нажмите значок корзины. Обратите внимание, если параметр был добавлен в скрипт и использовался в бизнес-процессе, при выполнении экземпляра возникнет ошибка. 

## Использование параметров

Дополнительные параметры доступны только для чтения в серверных скриптах. Начиная с версии системы 2025.11 обращайтесь к ним с помощью асинхронных методов:

- `Application.getParams()` — для параметров приложения;

- `Namespace.getParams()` — для параметров раздела;

- `Global.getParams()` — для глобальных параметров.

Доступ к параметрам с помощью свойств `Global.params`, `Namespace.params`, `Application.params` считается устаревшим, но публикация скриптов с ними возможна.



Рассмотрим решение для техподдержки. В ходе процесса в ELMA365 сотрудник описывает возникшую проблему, а затем при помощи скрипта данные отправляются в систему для отслеживания сообщений об ошибках — GitLab. Там автоматически создаётся задача с заголовком и описанием, а также выбирается исполнитель.

Чтобы реализовать такую интеграцию, заданы следующие дополнительные параметры:

- \[OBJECT\] — адрес сервера;

- \[OBJECT\] — идентификатор проекта, в котором будет создаваться тикет;

- \[OBJECT\] — токен авторизации;

- \[OBJECT\] — пользователь, на которого тикет будет назначен.

Заголовок задачи и описание определяются через контекстные переменные \[OBJECT\] и \[OBJECT\].

Скрипт выглядит следующим образом:

````
async function createIssueInGitlab(): Promise \{  
   const params = await Namespace.getParams();  
  
   const issue = await fetch(\`\$\{ params.data.gitlab\_host \}/api/v4/projects/\$\{ params.data.gitlab\_project \}/issues\`, \{  
     method: 'post',  
     headers: \{  
       'PRIVATE-TOKEN': params.data.gitlab\_token,  
       'Content-Type': 'application/json',  
     \},  
     body: JSON.stringify(\{  
       title: Context.data.title,  
       description: Context.data.description,  
       assignee\_ids: \[ params.data.gitlab\_user \],  
     \}),  
   \}).then(res => res.json());  
   Context.data.issue\_url = issue.web\_url  
\}
````