﻿# Динамический контекст в виджетах

> [HTML Version](dynamic-context.html)

В пользовательских виджетах вы можете использовать динамический контекст — свойства, количество и типы которых не известны на этапе создания и публикации виджета. Набор таких свойств формируется с помощью скрипта, в котором выполняется запрос на сервер или во внешнюю систему.

Когда администратор системы размещает виджет с динамическим контекстом на форму или страницу и переходит к его настройкам, выполняется скрипт. Данные из внешней системы сохраняются в свойстве виджета и отображаются в его настройках для дальнейшей работы с ними.

## Особенности виджета с динамическим контекстом

Для работы с динамическим контекстом в виджете используются:

- служебное свойство с типом [Произвольный тип](360009707032.md#any) — позволяет сохранить полученные с помощью скрипта динамические свойства в формате **.json**;

- служебный виджет [Динамический биндинг](dynamic-binding.md)** **— размещается в окне настроек пользовательского виджета. Позволяет отобразить содержимое свойства с типом **Произвольный тип** как входные и выходные параметры для их сопоставления с контекстом страницы или формы, на которой размещён пользовательский виджет.

## Пример виджета с динамическим контекстом

Рассмотрим использование пользовательского виджета **Калькулятор**, который создан для выполнения определённой бухгалтерской операции. Набор доступных операций и их параметры хранятся на сервере, администратор выбирает одну из них в настройках виджета. Работа администратора с таким виджетом выполняется в два этапа:

1. **Создание виджета с динамическим контекстом**.

При этом задаются скрипты, позволяющие получить данные динамического контекста с сервера при размещении виджета в другом интерфейсе, например, на странице. 

2. **Настройка виджета для работы пользователей с ним**.

Выполняются следующие действия с динамическим контекстом:

1. Администратор системы размещает виджет на странице, где пользователь будет выполнять расчёты. После этого вызывается скрипт инициализации формы настроек виджета. С сервера загружается список бухгалтерских операций и сохраняется в переменной с типом **Категория**.

2. В окне настроек виджета администратор выбирает нужную операцию, расчёта которой будет выполняться в виджете. После этого снова выполнится скрипт. С сервера загрузится набор входных и выходных параметров выбранной операции. Полученные данные сохранятся в переменной с типом **Произвольный тип**.

3. На форме настроек виджета параметры операции отобразятся в виджете **Динамический биндинг**. Администратор сопоставляет их с контекстом страницы для получения входных данных, внесённых пользователем, и отображения результата операции на странице.

Подробнее об этих этапах настроек читайте в статье [«Создать виджет с динамическим контекстом»](widget-with-dynamic-context.md).