Блок "Python"
Блок доступен начиная с версии 0.10
Назначение
Блок позволяет небезопасно выполнять произвольный Python-код, написанный пользователем. Внутри этого кода можно:
- гибко преобразовывать данные для последующих расчетов;
- работать с базами данных;
- взаимодействовать с контекстом расчета графа (см. раздел «Описание работы блока»).
Чтобы начать работать с блоком, его необходимо выбрать в библиотеке и переместить в область графа.
Настройки блока
Работа с настройками блока осуществляется через локальное меню (пункт Настройки):
Модальное окно настроек представлено ниже:
Группа "Python"
| Наименование | Тип | Обязательное | Описание | Пример |
|---|---|---|---|---|
| Выполнение кода | Выпадающий список | Нет | Пространство, где будет выполняться код блока. По умолчанию: На сервере | |
| Код для выполнения | Строка (Python) | Нет | Код Python, который будет выполнен во время расчета блока. Доступен через пункт меню "Редактировать код" | |
| Мастер настроек | Флаг | Нет | Включает функцию прикладных настроек у блока | |
| Описание настроек | JSON | Нет | Описание прикладных настроек у блока |
Пример кода блока Python
# получение данных с 2 входов разными способами
# изменение и передача на выход их объединения
input_1 = execution_context.inputs[0].value
input_2 = execution_context.get_input_by_id('in2').value
input_2_id = execution_context.get_input_by_id('in2').id
for elem in input_1:
elem['attrs']['indicator_variable'] = 'id выхода 2 = {0}'.format(input_2_id)
execution_context.add_output('out1', input_1 + input_2)
Общие настройки блоков описаны в отдельном разделе.
Входы блока
Общие настройки входов блока описаны в отдельном разделе.
Выходы блока
Общие настройки выходов блока описаны в отдельном разделе.
События блока
В блоке нет событий
Особенности работы с настройками блока
Настройка блока Python имеет несколько отличий от стандартных блоков:
- Быстрый вызов редактора кода — в меню блока есть специальный пункт:
. - Открытие редактора двойным кликом — при двойном нажатии левой кнопкой мыши по блоку сразу открывается окно редактирования кода. Подробнее: Предпросмотр результатов настройки блока.
- Открытие стандартных настроек — для доступа к обычным настройкам (как у других блоков) необходимо выбрать пункт «Настройки» в меню блока.
- Предпросмотр результата — блок не является визуализатором, но поддерживает предпросмотр результата выполнения:

- Прикладные настройки (мастер) — если включен параметр «Мастер настроек», в меню блока появляется пункт для изменения прикладных настроек:

- Заголовок окна в полноэкранном режиме — при развертывании окна с кодом на весь экран в заголовке отображается имя редактируемого блока.
Пользовательские настройки Блока Python
Пользовательские настройки представляют собой массив с описанием настроек, которые будут отображены при вызове соответствующего мастера в блоке "Python".
Пример настроек (блок "Диаграмма")
[
{
"name": "Заголовок блока",
"id": "title",
"type": "string",
"desc": "",
"hint": "Возможно формирование заголовка с помощью шаблона Jinja",
"mandatory": 0,
"default": "Диаграмма"
},
{
"name": "Тип диаграммы",
"id": "type",
"type": "enum",
"desc": "",
"mandatory": 0,
"default": 1,
"multiselect": 0,
"enum": [
{
"val": 1,
"name": "Линейная",
"desc": "Линейная диаграмма"
},
{
"val": 2,
"name": "Столбчатая",
"desc": "Столбчатая диаграмма"
},
{
"val": 3,
"name": "С областями",
"desc": "Диаграмма с областями"
},
{
"val": 4,
"name": "Смешанная",
"desc": "Смешанная линейная или столбчатая диаграмма"
},
{
"val": 5,
"name": "Круговая",
"desc": "Круговая диаграмма"
},
{
"val": 6,
"name": "Радар",
"desc": "Диаграмма радар или паутинная"
},
{
"val": 7,
"name": "Горизонтальная",
"desc": "Горизонтальная столбчатая диаграмма"
},
{
"val": 8,
"name": "Кольцевая",
"desc": "Кольцевая диаграмма"
},
{
"val": 9,
"name": "Каскадная",
"desc": "Каскадная диаграмма"
}
]
},
{
"name": "Накопление",
"id": "stacked",
"type": "bool",
"desc": "",
"mandatory": 0,
"default": 0
},
{
"name": "Сортировка",
"id": "sort",
"type": "enum",
"desc": "",
"mandatory": 0,
"default": 3,
"multiselect": 0,
"enum": [
{
"val": 1,
"name": "Без сортировки",
"desc": ""
},
{
"val": 2,
"name": "По дате/алфавиту (убывание)",
"desc": ""
},
{
"val": 3,
"name": "По дате/алфавиту (возрастание)",
"desc": ""
},
{
"val": 4,
"name": "По значению (убывание)",
"desc": "Смешанная линейная или столбчатая диаграмма"
},
{
"val": 5,
"name": "По значению (возрастание)",
"desc": ""
}
]
},
{
"name": "Количество знаков после запятой",
"id": "round",
"type": "int",
"desc": "Настройка количества знаков после запятой",
"mandatory": 0,
"default": 2,
"min": 0,
"max": 15
},
{
"name": "Легенда",
"id": "legend",
"type": "json",
"desc": "Параметры настройки легенды диаграммы",
"mandatory": 0,
"elements": [
{
"name": "Отображать легенду",
"id": "display",
"type": "bool",
"desc": "",
"mandatory": 0,
"default": 1
},
{
"name": "Размещение легенды",
"id": "position",
"type": "enum",
"desc": "",
"mandatory": 0,
"default": 3,
"multiselect": 0,
"enum": [
{
"val": 1,
"name": "Вверху",
"desc": ""
},
{
"val": 2,
"name": "Слева",
"desc": ""
},
{
"val": 3,
"name": "Внизу",
"desc": ""
},
{
"val": 4,
"name": "Справа",
"desc": ""
}
]
},
{
"name": "Размер шрифта",
"id": "legendFontSize",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 10
}
]
},
{
"name": "Оси данных",
"id": "axes",
"type": "json",
"desc": "Параметры настройки осей диаграммы",
"mandatory": 0,
"elements": [
{
"name": "Маска оси времени",
"id": "dtMask",
"type": "string",
"desc": "Маска для формирования подписей на временной оси",
"mandatory": 0,
"default": "%d.%m.%Y",
"taskSetting": "parameters.mask"
}
]
},
{
"name": "Общие настройки стилей рядов",
"id": "common_style",
"type": "json",
"desc": "Общие настройки стилей рядов диаграммы",
"mandatory": 0,
"elements": [
{
"name": "Вид линии",
"id": "LineView",
"type": "enum",
"desc": "",
"mandatory": 0,
"default": "line",
"multiselect": 0,
"enum": [
{
"val": "line",
"name": "Прямая",
"desc": "Линейная диаграмма"
},
{
"val": "spline",
"name": "Сглаженная",
"desc": "Столбчатая диаграмма"
}
]
},
{
"name": "Вид раскраски",
"id": "paint_types",
"type": "enum",
"desc": "",
"mandatory": 0,
"multiselect": 0,
"default": 0,
"enum": [
{
"val": 0,
"name": "Отсутствует",
"desc": ""
},
{
"val": 1,
"name": "Цветовой градиент",
"desc": ""
},
{
"val": 2,
"name": "Градиент прозрачности",
"desc": ""
}
]
},
{
"name": "Начальный цвет",
"id": "paint_color_start",
"type": "color",
"desc": "",
"mandatory": 0,
"default": "#001DFF"
},
{
"name": "Конечный цвет",
"id": "paint_color_end",
"type": "color",
"desc": "",
"mandatory": 0,
"default": "#00FF00"
},
{
"name": "Цвет",
"id": "paint_color",
"type": "color",
"desc": "",
"mandatory": 0,
"default": "#001DFF"
},
{
"name": "Каскадная диаграмма - начальный цвет",
"id": "waterfallStartColor",
"type": "color",
"desc": "",
"mandatory": 0,
"default": "#c3c3c3"
},
{
"name": "Каскадная диаграмма - убывающий цвет",
"id": "waterfallDownColor",
"type": "color",
"desc": "",
"mandatory": 0,
"default": "#c76879"
},
{
"name": "Каскадная диаграмма - растущий цвет",
"id": "waterfallUpColor",
"type": "color",
"desc": "",
"mandatory": 0,
"default": "#89c69c"
},
{
"name": "Выводить линию",
"id": "showLine",
"type": "bool",
"desc": "Выводить линию для линейной диаграммы",
"mandatory": 0,
"default": 1
},
{
"name": "Тип линии или границы",
"id": "linetype",
"type": "enum",
"desc": "",
"mandatory": 0,
"multiselect": 0,
"default": "solid",
"enum": [
{
"val": "solid",
"name": "Сплошная линия",
"desc": ""
},
{
"val": "dashed",
"name": "Штриховая линия",
"desc": ""
},
{
"val": "dotted",
"name": "Линия из точек",
"desc": ""
},
{
"val": "dot-dash",
"name": "Штрихпунктирная линия",
"desc": ""
},
{
"val": "dot-dot-dash",
"name": "Штрихпунктирная линия с двумя точками",
"desc": ""
}
]
},
{
"name": "Толщина линии, пт",
"id": "thickness",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 1,
"min": 1,
"max": 10
},
{
"name": "Тип маркера",
"id": "pointstype",
"type": "enum",
"desc": "",
"mandatory": 0,
"multiselect": 0,
"default": "circle",
"enum": [
{
"val": "circle",
"name": "Круг",
"desc": ""
},
{
"val": "triangle",
"name": "Треугольник",
"desc": ""
},
{
"val": "rect",
"name": "Квадрат",
"desc": ""
},
{
"val": "rectRounded",
"name": "Квадрат с закругленными углами",
"desc": ""
},
{
"val": "rectRot",
"name": "Ромб",
"desc": ""
},
{
"val": "cross",
"name": "Крестик",
"desc": ""
},
{
"val": "crossRot",
"name": "Перекрестие",
"desc": ""
},
{
"val": "star",
"name": "Звездочка",
"desc": ""
},
{
"val": "line",
"name": "Линия",
"desc": ""
},
{
"val": "dash",
"name": "Черта",
"desc": ""
}
]
},
{
"name": "Размер маркера",
"id": "pointsize",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 1
},
{
"name": "Показывать подписи данных",
"id": "showValues",
"type": "bool",
"desc": "",
"mandatory": 0,
"default": 0
},
{
"name": "Подписи данных - положение",
"id": "captionplace",
"type": "enum",
"desc": "",
"mandatory": 0,
"multiselect": 0,
"default": "center",
"enum": [
{
"val": "center",
"name": "В центре",
"desc": ""
},
{
"val": "left",
"name": "Слева",
"desc": ""
},
{
"val": "upper",
"name": "Сверху",
"desc": ""
},
{
"val": "right",
"name": "Справа",
"desc": ""
},
{
"val": "bottom",
"name": "Снизу",
"desc": ""
}
]
},
{
"name": "Подписи данных - размер шрифта",
"id": "captionsfontsize",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 10
},
{
"name": "Подписи данных - цвет шрифта",
"id": "captionsfontcolor",
"type": "color",
"desc": "",
"mandatory": 0,
"default": "#000000"
}
]
},
{
"name": "Цвета точек для круговой диаграммы",
"id": "pointsColor",
"type": "repeater",
"desc": "Цвета точек для круговой и кольцевой диаграммы",
"mandatory": 0,
"repeating": [
{
"name": "Название точки",
"id": "name",
"type": "string",
"desc": "",
"mandatory": 0,
"default": "Точка {NUM}"
},
{
"name": "Цвет",
"id": "color",
"type": "color",
"desc": "Цвет точки",
"mandatory": 0,
"default": "#A5B592"
}
]
},
{
"name": "Ряды данных",
"id": "rows",
"type": "repeater",
"desc": "Параметры настройки отображения рядов данных",
"mandatory": 0,
"repeating": [
{
"name": "Название ряда",
"id": "name",
"type": "string",
"desc": "",
"mandatory": 0,
"default": "Ряд {NUM}",
"hint": "Для использования названия ряда из привязок оставить значение данного атрибута пустым"
},
{
"name": "Отображать ряд",
"id": "showRow",
"type": "bool",
"desc": "Отображать ряд",
"mandatory": 0,
"default": 1,
"hint": "Возможность скрыть или показать ряд на диаграмме"
},
{
"name": "Тип ряда",
"id": "type",
"type": "enum",
"desc": "Тип ряда задается только для смешанных диаграмм",
"mandatory": 0,
"default": "default",
"enum": [
{
"val": "default",
"name": "По умолчанию",
"desc": ""
},
{
"val": "line",
"name": "Линия",
"desc": ""
},
{
"val": "bar",
"name": "Столбец",
"desc": ""
}
]
},
{
"name": "Отображение выделения",
"id": "showClickBar",
"type": "bool",
"desc": "Отображение выделения",
"mandatory": 0,
"default": 0,
"hint": "Выделение столбца, при клике на нем"
},
{
"name": "Горизонтальное смещение",
"id": "horizontalPlaced",
"type": "int",
"desc": "Горизонтальное смещение",
"mandatory": 0,
"default": 0,
"hint": "Отображение столбцов со смещением"
},
{
"name": "Вид линии",
"id": "LineView",
"type": "enum",
"desc": "",
"mandatory": 0,
"default": "default",
"multiselect": 0,
"enum": [
{
"val": "default",
"name": "По умолчанию",
"desc": ""
},
{
"val": "line",
"name": "Прямая",
"desc": "Линейная диаграмма"
},
{
"val": "spline",
"name": "Сглаженная",
"desc": "Столбчатая диаграмма"
}
]
},
{
"name": "Цвет",
"id": "color",
"type": "color",
"desc": "Цвет заливки ряда",
"mandatory": 0,
"default": "#A5B592"
},
{
"name": "На дополнительную ось",
"id": "additionalAxes",
"type": "bool",
"desc": "Отобразить значения ряда на дополнительной оси",
"mandatory": 0,
"default": 0
},
{
"name": "Выводить линию",
"id": "showLine",
"type": "bool",
"desc": "Выводить линию для линейной диаграммы",
"mandatory": 0,
"default": 1
},
{
"name": "Тип линии или границы",
"id": "linetype",
"type": "enum",
"desc": "",
"mandatory": 0,
"multiselect": 0,
"default": "default",
"enum": [
{
"val": "default",
"name": "По умолчанию",
"desc": ""
},
{
"val": "solid",
"name": "Сплошная линия",
"desc": ""
},
{
"val": "dashed",
"name": "Штриховая линия",
"desc": ""
},
{
"val": "dotted",
"name": "Линия из точек",
"desc": ""
},
{
"val": "dot-dash",
"name": "Штрихпунктирная линия",
"desc": ""
},
{
"val": "dot-dot-dash",
"name": "Штрихпунктирная линия с двумя точками",
"desc": ""
}
]
},
{
"name": "Толщина линии, пт",
"id": "thickness",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 1,
"min": 1,
"max": 10
},
{
"name": "Тип маркера",
"id": "pointstype",
"type": "enum",
"desc": "",
"mandatory": 0,
"multiselect": 0,
"default": "default",
"enum": [
{
"val": "default",
"name": "По умолчанию",
"desc": ""
},
{
"val": "circle",
"name": "Круг",
"desc": ""
},
{
"val": "triangle",
"name": "Треугольник",
"desc": ""
},
{
"val": "rect",
"name": "Квадрат",
"desc": ""
},
{
"val": "rectRounded",
"name": "Квадрат с закругленными углами",
"desc": ""
},
{
"val": "rectRot",
"name": "Ромб",
"desc": ""
},
{
"val": "cross",
"name": "Крестик",
"desc": ""
},
{
"val": "crossRot",
"name": "Перекрестие",
"desc": ""
},
{
"val": "star",
"name": "Звездочка",
"desc": ""
},
{
"val": "line",
"name": "Линия",
"desc": ""
},
{
"val": "dash",
"name": "Черта",
"desc": ""
}
]
},
{
"name": "Размер маркера",
"id": "pointsize",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 1
},
{
"name": "Показывать подписи данных",
"id": "showValues",
"type": "bool",
"desc": "",
"mandatory": 0,
"default": 0
},
{
"name": "Подписи данных - положение",
"id": "captionplace",
"type": "enum",
"desc": "",
"mandatory": 0,
"multiselect": 0,
"default": "default",
"enum": [
{
"val": "default",
"name": "По умолчанию",
"desc": ""
},
{
"val": "center",
"name": "В центре",
"desc": ""
},
{
"val": "left",
"name": "Слева",
"desc": ""
},
{
"val": "upper",
"name": "Сверху",
"desc": ""
},
{
"val": "right",
"name": "Справа",
"desc": ""
},
{
"val": "bottom",
"name": "Снизу",
"desc": ""
}
]
},
{
"name": "Подписи данных - размер шрифта",
"id": "captionsfontsize",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 10
},
{
"name": "Подписи данных - цвет шрифта",
"id": "captionsfontcolor",
"type": "color",
"desc": "",
"mandatory": 0,
"default": "#000000"
}
]
},
{
"name": "Коридоры",
"id": "corridors",
"type": "repeater",
"desc": "Параметры настройки отображения коридоров для данных",
"mandatory": 0,
"repeating": [
{
"name": "Название коридора",
"id": "name",
"type": "string",
"desc": "",
"mandatory": 0,
"default": "Коридор {NUM}"
},
{
"name": "Индекс ряда 1",
"id": "row_first",
"type": "int",
"desc": "Индекс ряда (начиная с 1)",
"mandatory": 0,
"default": 1
},
{
"name": "Индекс ряда 2",
"id": "row_second",
"type": "int",
"desc": "Индекс ряда (начиная с 1)",
"mandatory": 0,
"default": 2
},
{
"name": "Цвет",
"id": "color",
"type": "color",
"desc": "Цвет заливки коридора",
"mandatory": 0,
"default": "#db1d59"
}
]
},
{
"name": "Привязки",
"id": "binding",
"type": "json_str",
"desc": "Привязки атрибутов объектов",
"mandatory": 0
},
{
"name": "Ось X",
"id": "xAxes",
"type": "json",
"desc": "Параметры настройки оси X",
"mandatory": 0,
"elements": [
{
"name": "Сетка",
"id": "grid",
"type": "json",
"desc": "",
"mandatory": 0,
"elements": [
{
"name": "Отображать линии",
"id": "showGrid",
"type": "bool",
"desc": "",
"mandatory": 0,
"default": 1
},
{
"name": "Цвет линии",
"id": "gridLineColor",
"type": "color",
"desc": "",
"mandatory": 0,
"default": "#000000"
},
{
"name": "Толщина линии",
"id": "gridLineWidth",
"desc": "",
"type": "float",
"mandatory": 0,
"default": 1.0
},
{
"name": "Тип штриха",
"id": "gridLineBorderDash",
"type": "enum",
"desc": "",
"mandatory": 0,
"default": "solid",
"multiselect": 0,
"enum": [
{
"val": "solid",
"name": "Сплошная линия",
"desc": ""
},
{
"val": "dashed",
"name": "Штриховая линия",
"desc": ""
},
{
"val": "dotted",
"name": "Линия из точек",
"desc": ""
},
{
"val": "dot-dash",
"name": "Штрихпунктирная линия",
"desc": ""
},
{
"val": "dot-dot-dash",
"name": "Штрихпунктирная линия с двумя точками",
"desc": ""
}
]
}
]
},
{
"name": "Деления",
"id": "ticks",
"type": "json",
"desc": "",
"mandatory": 0,
"elements": [
{
"name": "Количество (0 - не учитывать)",
"id": "maxTicksLimit",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 0
},
{
"name": "Пропускать подписи оси",
"id": "autoSkip",
"type": "bool",
"desc": "",
"mandatory": 0,
"default": 0
},
{
"name": "Отступ",
"id": "autoSkipPadding",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 0
}
]
},
{
"name": "Размер шрифта",
"id": "axesFontSize",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 10
},
{
"name": "Начертание",
"id": "axesFontStyle",
"type": "enum",
"desc": "",
"mandatory": 0,
"multiselect": 0,
"default": "normal",
"enum": [
{
"val": "normal",
"name": "Обычный",
"desc": ""
},
{
"val": "italic",
"name": "Курсив",
"desc": ""
},
{
"val": "bold",
"name": "Полужирный",
"desc": ""
}
]
},
{
"name": "Перенос по словам",
"id": "axesWordWrap",
"type": "bool",
"desc": "",
"mandatory": 0,
"default": 0
},
{
"name": "Поворот надписи",
"id": "axesRotation",
"type": "enum",
"desc": "",
"mandatory": 0,
"multiselect": 0,
"default": "auto",
"enum": [
{
"val": "auto",
"name": "Автоматически (по умолчанию)",
"desc": ""
},
{
"val": "horizontal",
"name": "Отображать горизонтально",
"desc": ""
}
]
}
]
},
{
"name": "Ось Y",
"id": "yAxes",
"type": "json",
"desc": "Параметры настройки оси Y",
"mandatory": 0,
"elements": [
{
"name": "Сетка",
"id": "grid",
"type": "json",
"desc": "",
"mandatory": 0,
"elements": [
{
"name": "Отображать линии",
"id": "showGrid",
"type": "bool",
"desc": "",
"mandatory": 0,
"default": 1
},
{
"name": "Цвет линии",
"id": "gridLineColor",
"type": "color",
"desc": "",
"mandatory": 0,
"default": "#000000"
},
{
"name": "Толщина линии",
"id": "gridLineWidth",
"desc": "",
"type": "float",
"mandatory": 0,
"default": 1.0
},
{
"name": "Тип штриха",
"id": "gridLineBorderDash",
"type": "enum",
"desc": "",
"mandatory": 0,
"default": "solid",
"multiselect": 0,
"enum": [
{
"val": "solid",
"name": "Сплошная линия",
"desc": ""
},
{
"val": "dashed",
"name": "Штриховая линия",
"desc": ""
},
{
"val": "dotted",
"name": "Линия из точек",
"desc": ""
},
{
"val": "dot-dash",
"name": "Штрихпунктирная линия",
"desc": ""
},
{
"val": "dot-dot-dash",
"name": "Штрихпунктирная линия с двумя точками",
"desc": ""
}
]
}
]
},
{
"name": "Деления",
"id": "ticks",
"type": "json",
"desc": "",
"mandatory": 0,
"elements": [
{
"name": "Количество (0 - не учитывать)",
"id": "maxTicksLimit",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 0
},
{
"name": "Пропускать подписи оси",
"id": "autoSkip",
"type": "bool",
"desc": "",
"mandatory": 0,
"default": 0
},
{
"name": "Отступ",
"id": "autoSkipPadding",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 0
}
]
},
{
"name": "Размер шрифта",
"id": "axesFontSize",
"type": "int",
"desc": "",
"mandatory": 0,
"default": 10
}
]
},
{
"name": "Масштабирование данных",
"id": "dataScaling",
"type": "bool",
"desc": "",
"mandatory": 0,
"default": 0
},
{
"name": "Количество отображаемых точек",
"id": "axisLength",
"type": "int",
"desc": "Количество отображаемых точек при включенном масштабировании данных",
"mandatory": 0,
"default": 200
},
{
"name": "Использовать цвета сценариев",
"id": "useScenarioColor",
"type": "bool",
"desc": "",
"hint": "Будут использованы цвета сценариев при наличии сценарных данных",
"mandatory": 0,
"default": 0
}
]
Обязательные поля настроек
name- наименование поля;id- идентификатор поля;type- тип поля (подробнее см. ниже);desc- описание поля (не используется);hint- текстовая подсказка, отображаемая слева от наименования (
). Поддерживает коды HTML;mandatory- флаг обязательности поля;default- значение поля по умолчанию.
Доступные типы полей
| Наименование | Идентификатор | Описание |
|---|---|---|
| Строка | string | Поле для ввода текстовых значений |
| Шифрованная строка | string_encoded | Поле для ввода зашифрованной строки |
| Текст | text | Поле для ввода многострочных текстовых значений |
| JSON | json_str | Поле ввода кода JSON |
| HTML | html | Поле ввода кода HTML |
| SQL | sql | Поле ввода кода SQL |
| JavaScript | javascript | Поле ввода кода JavaScript |
| Python | python | Поле ввода кода Python |
| Выражение | vismind | Поле ввода кода для выражений |
| Целое число | int | Поле ввода целого числа.Доступны дополнительные параметры:- min - минимальное значение;- max - максимальное значение |
| Вещественное число | float | Поле ввода вещественного числа.Доступны дополнительные параметры:- min - минимальное значение;- max - максимальное значение |
| Флаг (Логический тип) | bool | Флаг с переключением |
| Дата | date | Поле ввода даты |
| Дата и время | datetime | Поле ввода даты и времени |
| Цвет | color | Поле ввода (или выбора) цвета |
| Линейный список | list | Выбор элементов из линейного списка. Рекомендуется использовать тип "Перечисление" (см. ниже) Обязательные параметры: - list - массив с описанием элементов: - id - идентификатор элемента; - ord - порядок расположения элемента; - name - наименование элемента |
| Иерархический список | tree | Выбор элементов из иерархического списка. Поле отключено в приложении. |
| Иерархический список с загрузкой данных | lazy_tree | Выбор элементов из иерархического списка. Список элементов извлекается при помощи запроса к API приложения. Обязательные параметры: - api - адрес запроса Дополнительные параметры: - apiMethod - метод API. Доступные значения: "GET", "POST". По умолчанию (если поле не указано) используется метод GET; - apiParameters - массив параметров, переданных в параметре запроса: - id - идентификатор параметра; - value - значение параметров.- Для использования параметров, задающихся в настройках, эти параметры задаются в фигурных скобках {}.- Для вызова параметров, расположенных в корневом элементе, требуется просто указать идентификатор параметра: {param_id} - Для вызова параметров, расположенных в структуре (см. ниже), требуется указать перечень параметров, начиная с корневого, через точку(.): {folder.folder2.param_id} - Технические параметры:- {TASK_ID} - идентификатор задачи.- {LIB_ID} - идентификатор типа блока - apiBody - массив параметров, переданных в теле запроса. Настройки аналогичны apiParameters |
| Кнопка с вызовом API | button | Кнопка для выполнения метода API.Обязательные параметры: - api - адрес запроса |
| Перечисление | enum | Выбор элементов из линейного списка.Обязательные параметры: - enum- массив с описанием элементов: - val- идентификатор элемента; - name - наименование элемента; - desc- описание элемента (не используется) |
| Переключатель | radiobutton | Переключатель между несколькими вариантами.Обязательные параметры: - elements - массив с описанием элементов; - val- идентификатор элемента; - name - наименование элемента |
| Структура | json | Структура, содержащая в себе другие настройки.Обязательные параметры: - elements - массив с описанием настроек. Параметр default не применяется для структуры. В отличии от остальных настроек, при получении структуры через блок "Python", в качестве ответа вернется словарь вида {<идентификатор настройки>: <значение настройки>} |
| Структура - массив | repeater | Структура, содержащая в себе массив с другими настройками. Обязательные параметры: - repeating - массив с описанием настроек. Параметр default не применяется для структуры. В структуре доступен технический параметр {NUM}, возвращающий номер элемента в массиве (начиная с 1). Если в структуре есть элемент с ключом name, то он будет отображаться в качестве наименования элемента структуры. В отличии от остальных настроек, при получении структуры через блок "Python", в качестве ответа вернется массив вида [{<идентификатор настройки>: <значение настройки>},...] |
| Контейнер с блоками | buttonContainer | Структура, содержащая в себе два массива с настройками, между которыми можно переключаться.Обязательные параметры: - enabled - массив с описанием настроек; - disabled- массив с описанием настроек.Дополнительные параметры:- additionControl - словарь с описанием настройки, которая располагается рядом с переключателем настроек. Поддерживается только настройка типа "Переключатель" Параметр default может принимать значения: - 0 - отображена вкладка disabled - 1 - отображена вкладка enabled !!! note "" При получении настройки через блок "Python", в качестве ответа вернется словарь с тремя параметрами: - val - флаг с указанием того, какая вкладка активна (0/1), - enabled - описание настроек вкладки (аналогично "Структуре"), - disabled - описание настроек вкладки (аналогично "Структуре") |
Описание работы блока
Блок позволяет выполнять произвольный python-код, который пользователь загружает в него.
Если выбрано выполнение кода на:
- "На сервере", то блок будет выполняться небезопасно, потому что пользователю доступно как ядро системы, так и файловая система хоста приложения.
- "В изолированном окружении", то блок будет выполняться безопасно, так как пользователю недоступно ядро системы и файловая система хоста приложения. На данный момент есть ограничения по использованию данного способа.
При использовании песочницы в коде не обрабатывается execution_context, кроме входов, выходов и лога блока.
Пример того что **обрабатывается**:
```
- execution_context.get_input_by_id("id_input").value
- execution_context.add_output("id_output", value)
- execution_context.log.info(value)
- execution_context.log.warning(value)
- execution_context.log.error(value)
```
Работа в блоке
Ссылки
- Основы языка - https://www.w3schools.com/python/
- StyleGuide - https://google.github.io/styleguide/pyguide.html


