Перейти к содержанию

Блок "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 имеет несколько отличий от стандартных блоков:

  1. Быстрый вызов редактора кода — в меню блока есть специальный пункт: .
  2. Открытие редактора двойным кликом — при двойном нажатии левой кнопкой мыши по блоку сразу открывается окно редактирования кода. Подробнее: Предпросмотр результатов настройки блока.
  3. Открытие стандартных настроек — для доступа к обычным настройкам (как у других блоков) необходимо выбрать пункт «Настройки» в меню блока.
  4. Предпросмотр результата — блок не является визуализатором, но поддерживает предпросмотр результата выполнения:
  5. Прикладные настройки (мастер) — если включен параметр «Мастер настроек», в меню блока появляется пункт для изменения прикладных настроек:
  6. Заголовок окна в полноэкранном режиме — при развертывании окна с кодом на весь экран в заголовке отображается имя редактируемого блока.

Пользовательские настройки Блока 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)
```

Работа в блоке

Ссылки

  1. Основы языка - https://www.w3schools.com/python/
  2. StyleGuide - https://google.github.io/styleguide/pyguide.html