База знаний Appliner
Конструктор процедур (КПр): обзор 13 видов компонентов для визуальной разработки
Компоненты конструктора процедур
Конструктор процедур (КПр) No/Low Code платформы лёгкой разработки Appliner создан на базе редактора визуального программирования с открытым кодом Blockly, использующего перетаскивание блоков.
КПр позволяет создавать логические цепочки процедур, объединяя блоки в единую последовательность без написания кода. Каждый блок представляет отдельное действие или операцию, а их форма помогает избежать ошибок совместимости.
Основные возможности КПр:
- Гибкая настройка процедур: создание условных операторов, циклов, вызовов API и других действий.
- Интеграция с системой: взаимодействие с внутренними данными, переменными и моделями.
- Простота визуализации: наглядное отображение процессов для их упрощённого анализа и отладки.
- Расширяемость: добавление пользовательских блоков для специфических задач.
КПр подходит как для опытных разработчиков, так и для пользователей без опыта программирования, обеспечивая интуитивно понятный интерфейс для автоматизации процессов.
КПр включает следующие компоненты:
- Логика.
- Циклы.
- Математика.
- Текст.
- Списки.
- Переменные.
- Функции.
- Даты
- Вложения.
- XML.
- Действия.
- Инструменты.
- Данные.
Логика
Логические блоки конструктора процедур.
![]() ![]() | Основные | Если условие1 истинно, выполнить действие. |
Если условие2 истинно, выполнить действие, иначе выполнить другое действие. | ||
![]() | Операции сравнения | Обычно используются с числами. Операции на проверку равенства могут также использоваться с текстом. |
![]() | Логические И и ИЛИ | Если хотя бы одно из простых высказываний, связанных операцией И, будет ложным, то и составное высказывание будет ложным. Если хотя бы одно из простых высказываний, связанных операцией ИЛИ, будет истинным, то и составное высказывание будет истинным. |
![]() | Логическое НЕ | Логическая операция НЕ инвертирует высказывание, стоящее за ней. |
![]() | Логическое НИЧТО | Инвертируемый исход события. |
![]() | Логическое ИСТИНА | Инвертируемый исход события. |
![]() | Тернарная условная операция | Тернарную операцию можно определить как операцию, возвращающую свое второе выражение в зависимости от значения логического выражения, заданного первым выражением. Алгоритм работы операции следующий: • вычисляется логическое выражение; • если логическое выражение истинно, то вычисляется значение выражения выражение 1, в противном случае — значение выражения выражение 2; • вычисленное значение возвращается. |
Циклы
Набор блоков, позволяющих работать с циклами.
![]() | Цикл | Набор блоков, позволяющих задать набор действий с заранее известным числом повторений, а также для обхода списков. |
![]() | Итеративный цикл | Простейший пример цикла — повторить какое-то действие N раз. |
![]() | Цикл со счётчиком | Циклы со счётчиком удобны для перебора элементов списка. Будет выполняться, пока переменная i меньше 10. При этом после каждого шага переменная i будет увеличиваться на 1. |
![]() | Перебор элементов списка | Использование каждого элемента списка по заданному условию. |
![]() | Выйти из цикла | Блок можно использовать только внутри цикла. Обычно выход из цикла происходит при выполнении некоего условия, либо переход к следующему шагу. |
Математика
Набор блоков, позволяющих работать с числами.
![]() | Обычные константы | Числовую константу можно использовать как поле для ввода необходимого числового значения. |
![]() ![]() ![]() | Арифметические операции | Арифметические операции можно проводить как с одним операндом, так и с двумя. Например: С одним операндом: • квадратный корень; • модуль; • отрицательное число; • логарифм; • десятичный логарифм; • экспонента e^; • число 10 в степени указанного числа. С двумя операндами: • сложение; • вычитание; • умножение; • деление; • возведение в степень. Операция увеличения с блоками. |
![]() | Операции округления | Операции округления нецелых чисел к целому. Среди доступных параметров блока имеются функции: • округлить; • округлить к большему; • округлить к меньшему. |
![]() | Тригонометрические операции | Блок, содержащий выполнение тригонометрических операций: • синус; • косинус; • тангенс; • котангенс; • арксинус; • арккосинус; • арктангенс. |
![]() | Математические константы | Математические константы — это величины, значение которых не меняются: • архимедова константа (число π); • константа Непера; • золотое сечение; • квадратный корень; • квадратный корень от одной второй; • бесконечность. |
![]() | Логические операции | Возвращает истину или ложь, используется с логическими блоками. Как истина могут использоваться параметры: • чётное; • нечётное; • простое; • целое; • положительное; • отрицательное; • делится на. |
![]() | Сумма списка | Арифметические операции над списком. |
![]() | Остаток от деления | Функция возвращения остатка от деления двух заданных чисел X и Y. |
![]() | Ограничение | Функция ограничивает условия по заданному списку. |
![]() | Случайное целочисленное число | Блок генерации случайного целого числа, рамки которого можно указать. |
![]() | Случайное вещественное число | Блок генерации случайного вещественного числа от 0 до 1. |
Текстовый блок
Набор блоков, позволяющих работать с текстом.
![]() | Простой текст | Ввод текста, ограниченного 128 символами. |
![]() | Многострочный текст | Ввод текста, ограниченного 1024 символами. |
![]() | Создать текст из | Объединяет несколько строк. Числовые значения будут автоматически приведены к строке. |
![]() | Добавить текст к строке | Добавляет указанный текст к другому числовому или текстовому значению/символу. |
![]() | Длина | Возвращает число символов в строке. |
![]() | Проверить, пуста ли строка | Возвращает «истину» или «ложь», поэтому используется с логическими блоками. |
![]() | Найти текст в тексте | Возвращает номер позиции первого/последнего элемента вхождения первого текста во втором. Возвращает 0, если текст не найден. #1 — первый элемент. |
![]() | Взять букву в тексте | Возвращает букву в указанной позиции. #1 — первый элемент. |
![]() | Взять подстроку | Возвращает указанную часть текста. #1 — первый элемент. |
![]() | Преобразовать текст к | Преобразование элементов текста в (данном случае) Заглавные буквы. |
![]() | Удалить пробелы | Очистка пробелов в тексте. |
![]() | Напечатать | Вывод на печать. |
![]() | Запросить текст с подсказкой | |
![]() | Изменить порядок текста на обратный |
Списки
Набор блоков, позволяющих работать со списками. Список — это набор переменных любого типа.
![]() | Создание пустого списка | |
![]() | Создание списка из элементов | Доступно редактирование любого количества элементов в данном блоке. |
![]() | Создание списка из одинаковых элементов | Создание списка из элементов по заданному условию повторения N раз. |
![]() | Изменение порядка списка на обратный | Функция сортировки списка в обратном порядке. |
![]() | Проверка, пуст ли список | Возвращает «истину» или «ложь», поэтому используется с логическими блоками. |
![]() | Получить длину списка | Определение количества символов в списке. |
![]() | Найти элемент | Возвращает номер позиции первого/последнего вхождения элемента в списке. Возвращает 0, если элемент не найден. |
![]() ![]() | Операции со списками | Операции со списками: взять, взять и удалить, удалить элемент списка. Получает, получает и удаляет или просто удаляет элемент в указанной позиции списка. |
![]() | Взять подсписок | Возвращает копию указанной части списка. |
![]() | Сделать/собрать список из текста | Функция создания списка из элементов текста. |
![]() | Сортировать | Функция сортировки текста по заданному условию. |
Переменные
В редакторе логики Blockly, как и в обычном программировании, используются локальные и глобальные переменные. Переменная представляет собой именованное значение, которое можно получать и изменять, обращаясь к нему по имени.

Переменная, простыми словами, это ячейка с данными. В неё можно положить любое значение, например число, строку или другой тип данных. Ещё более простой пример, представим обычный ящик, внутри которого лежит груша. Ящик является переменной, содержащий данные — грушу.
Объект также является переменной.
Важное преимущество использования переменных перед использованием конкретных значений — исключение возможности опечатки при повторном использования. Они создаются пользователем и не ограниченны количеством
Глобальные переменные
Глобальные переменные — это переменные, обращение к которым возможно из любой части кода. В случае с Blockly, обращение к глобальным переменным можно осуществить из любой функции и из любого блока в рабочей области.
Чтобы создать глобальную переменную, откройте категорию блоков «Переменные». В новом проекте эта категория содержит всего одну кнопку, с помощью которой можно «Создать переменную…». Нажмите её — откроется модальное окно, где необходимо будет имя новой переменной. После этого, в этом же разделе появится три новых блока — «Присвоить…», «Увеличить на…» и созданный блок получения переменной.

Для каждого блока переменной доступны три функции, которые вызываются нажатием на имя переменной в блоке:

- Выбрать другую переменную — блок переменной всего лишь оболочка для переменной. Если необходимо, пользователь может поместить в конкретный блок другую переменную, выбрав её из выпадающего списка.
- Переименовать — изменяет имя переменной на глобальном уровне. Таким образом, каждый блок, который использует эту переменную, также изменится, соответствуя внесённым изменениям.
- Удалить —удаление переменной. Также удаляются все блоки, использующие эту переменную.
Пример

В данном примере показано использование переменной в качестве массива для сбора списка выбранных объектов.
Локальные переменные
Локальные переменные — это переменные, которые хранятся в пределах своего блока (В котором они находятся) и работают только с ним. Их использование помогает пользователю не создавать большое количество переменных, которые будут не нужны после выполнения одной функции.
Также, в некоторой степени, локальные переменные экономят вычислительные мощности вашего компьютера. В Blockly, прямое использование локальных переменных немного ограниченно. В Varwin XRMS они встроены в блоки функций и циклов и не могут быть изменены, так же, как и не могут быть созданы.
Пример 1

В данном примере показан блок «Объект начал столкновение» категории «События». У этого блока по умолчанию заданы локальные переменные первый объект и второй объект с которыми пользовать не может взаимодействовать вне этого блока. В нашем случае, в качестве указанных объектов для столкновения указаны два списка. Роль локальных переменных в этой конструкции — это выделение тех двух объектов из списков, которые будут сталкиваться в конкретный момент времени.
Пример 2

В данной логике мы используем локальные переменные в качестве проверки значения переменной «Элемент». При нажатии на кнопку мы меняем значение переменной «Элемент» на цифру 1. При отжатии — на цифру 2.
В блоке события «Изменение значения» построим логику таким образом, чтобы у нас сверялось старое и новое значение переменной «Элемент». Таким образом, если старое значение больше нового, то цвет куба будет меняться на синий. А если наоборот, то цвет будет меняться на красный.
Соответственно, локальные переменные могут выступать в качестве полезных помощников при выстраивания сложной логики, НО только в пределах своего блока.
Функции
Набор блоков для создания и вызова функции. Функции удобны для структурирования и множественного использования повторяющейся логики.
![]() | Простая функция | Использование функции. |
![]() | Функция с возвращением | Использование функции с возвратом значения. |
![]() | Основная логическая функция с возвращением | Используются с логическими блоками. |
![]() | Основная запись | Создание функции. |
Даты
Набор блоков позволяющих работать с датами.
![]() | Сейчас | Возврат текущей даты. |
![]() | Сегодня | Возврат даты сегодняшнего дня. |
![]() | Установить | Установить Год, Месяц, День месяца, Час, Минуты, Секунды. |
![]() | Получить | Получить Год, Месяц, День месяца, Час, Минуты, Секунды. |
![]() | Добавить к дате | Добавить к дате Год, Месяц, День месяца, Час, Минуты, Секунды. |
![]() | Уменьшить дату на | Уменьшить выбранную дату на Год, Месяц, День месяца, Час, Минуты, Секунды. |
Вложения
Библиотека блоков для работы с вложениями.
![]() | Создать вложение из | Настройки создаваемого файла: имя файла; mime — строка, отправляемая вместе с файлом, которая указывает его тип; значение. |
![]() | Загрузить вложение из | Загрузить вложение из поля модели данных — указывается поле модели данных. |
![]() | Создать XLSX из | Настройки создаваемого XLSX файла: имя файла; массив строк. |
![]() | Создать CSV из | Настройки создаваемого CSV файла: имя файла; массив строк. |
XML
Набор блоков, позволяющих создать XML файл.
![]() | Создать элемент | Создание корневого элемента/тега в XML файле. |
![]() | Создать элемент с текстом | Создание тега со значением (название параметра/тега) в XML файле. |
![]() | Вернуть название элементу | Получить атрибут (version) тега, содержащегося в выбранной переменной. |
![]() | Для элемента задать текст | Для выбранной переменной задать определимое пользователем значение. |
![]() | Вернуть текст | Получить атрибут (version) тега, содержащегося в выбранной переменной в виде текстового значения. |
![]() | К элементу добавить атрибут | Добавление строки к элементу тега выбранной переменной. |
![]() | У элемента получить атрибут | Получение заданного атрибута у выбранного элемента тега. |
![]() | К элементу добавить элемент | Добавление элемента строки к элементу тега выбранной переменной, этим же блоком используется наполнение тегов древовидной структуры. |
![]() | К элементу добавить список элементов | К выбранному элементу переменной добавление списка элементов, так же используется с блоком «Создать список из». Используется с набором блоков «Списки». |
![]() | Получить вложенные элементы | Получить вложенные элементы выбранной переменной элемента тега. |
![]() | Преобразовать в строку | Используется для преобразования элементов в многострочный текст. |
Действия
Действие — набор блоков для запуска процедуры Blockly.
Процедуры
![]() | Выполнить процедуру | Действие запуска процедуры |
Системные действия
![]() | Выполнить запрос HTTP | Настройки запроса: метод HTTP;идентификатор интеграции;URL;тело запроса. |
![]() | Отправить электронное письмо | Настройки для отправки электронного письма: • идентификатор интеграции почтового сервера, с которого отправляется письмо; • to — адрес отправки электронного письма; • cc — адрес отправки копии; • bcc — адрес отправки скрытой копии; • тема — тема электронного письма; • шаблон — шаблон электронного письма; • вложение — вложенный файл (работает с блоками вложения). |
Инструменты
Набор блоков, позволяющих работать с инструментами запроса.
![]() | Вывести | Вывод в log процедуры в Конструкторе процедур. |
![]() | Вывести элемент | Вывод нескольких элементов в log процедуры в Конструкторе процедур. |
![]() | Выполнить | Выполнить выбранный блок Конструктора процедур, используется с действиями во всех блоках Конструктора процедур. |
![]() | HTTP | Создание HTTP запроса по выбранному методу: • get; • post; • put; • delete; • head; • options; • patch. |
![]() | Результат HTTP, поле | Вывод результата HTTP запроса в виде: • код состояния; • содержимое. |
Данные
Набор блоков позволяющих работать с массивами данных.
Панель блоков “Пользовательские задачи”
![]() | Все записи из | Использование всех записей в модели данных. |
![]() | Все записи по условию | Использование всех записей в модели данных по создаваемому пользователем условию. |
![]() | Найденная запись | Использование записи в пользовательской задаче. |
![]() | Найденная запись по условию | Использование записи в пользовательской задаче по заданному условию. |
![]() | Выбрать из системных данных | Блок использования пользовательского условия в каждой записи выбранного пользователем элемента для исполняемой процедуры. |
![]() | Выйти из цикла | Блок можно использовать только внутри цикла. Обычно выход из цикла происходит при выполнении некоего условия, либо переход к следующему шагу. |
![]() | По совпадению полей | Настройки полей: • идентификатор задачи; • имя задачи; • описание задачи; • идентификатор задачи; • ключ задачи; • ключ формы; • назначена; • дата создания; • дата старта; • дата завершения; • завершена. |
![]() | Поиск по условию | Поиск по условию: • = равно; • =* равно без учёта регистра; • > больше чем; • < меньше чем; • ≥ больше или равно; • ≤ меньше или равно; • ≠ не равно; • ≠* не равно без учёта регистра; • like сопоставление с образцом (учитывается регистр); • ilike сопоставление с образцом (не учитывается регистр); • ~ совпадает с регулярным выражением; • ~* совпадает с регулярным выражением без учёта регистра; • !~ не совпадает с регулярным выражением; • !~* не совпадает с регулярным выражением без учёта регистра. |
![]() | Поиск по условию между элементами | Поиск по условию между элементами значения в поле |
![]() | Поиск по пустому условию | |
![]() | Поиск по непустому условию | |
![]() | Логические условию И и ИЛИ | |
![]() | По условию множества | Условия множества: ∈ истина если все записи слева входят список справа ∋ истина если все записи справа входят список слева |
![]() | Условие НЕ | |
![]() | Блок выбора настроек задачи | Аналогичны блоку настройки полей. |
Панель блоков «Список процессов»
![]() | Все записи из списка процессов | Использование всех записей в модели данных. |
![]() | Все записи по условию | Использование всех записей в модели данных по создаваемому пользователем условию. |
![]() | Найденная запись | Использование записи в пользовательской задаче. |
![]() | Найденная запись по условию | Использование записи в пользовательской задаче по заданному условию. |
![]() | Выбрать из системных данных | Блок использования пользовательского условия в каждой записи выбранного пользователем элемента для исполняемой процедуры. |
![]() | Выйти из цикла | Блок можно использовать только внутри цикла. Обычно выход из цикла происходит при выполнении некоего условия, либо переход к следующему шагу. |
![]() | По совпадению полей | Настройки полей: • идентификатор процесса; • идентификатор определения процесса; • ключ определения процесса; • название определения процесса; • версия процесса; • дата запуска; • дата остановки; • длительность выполнения; • пользователь; • идентификатор стартовой задачи; • идентификатор первичного процесса; • состояние процесса. |
![]() | Поиск по арифметическому условию | |
![]() | Поиск по текстовому условию | Поиск по условию между элементами значения в поле. |
![]() | Поиск по пустому условию | |
![]() | Поиск по непустому условию | |
![]() | Логические условию И и ИЛИ | |
![]() | По условию множества | Условия множества: • ∈ истина если все записи слева входят список справа; • ∋ истина если все записи справа входят список слева. |
![]() | Условие НЕ | |
![]() | Блок выбора настроек процесса | Аналогичны блоку настройки полей. |
Пример создания процедур на Blockly
Примечание от разработчиков приложений
Работа в конструкторе процедур очень сильно похоже на обычное программирование. Есть ли у вас есть немного опыта в написании кода, то можно считать, вы уже разбираетесь в конструкторе процедур, потому что принцип один и тот же. Писать код не придётся, весь код написан за вас в виде блоков, которые нужно соединять друг за другом, сверху вниз. Постараемся для примера работы с данным конструктором, создать такую процедуру, чтобы она затронуло как можно больше блоков.
Пример работы с процедурами
Далее будет описание того, как создать процедуру автоматической обработки данных и конструктора модели данных и отправки на почту «.xlsx» таблички с данными.
Начало
При создании процедуры нам открывается окно с одним зелёным блоком «main_entry». При дальнейшей работе в него нужно вкладывать все остальные блоки (кроме «Функций», их можно собирать отдельно).

Попробуем выполнить действие с моделью данных. Примером послужит модель данных «Для видео».
Выбираем из этого раздела блок <<Из модели данных «Для видео» выбрать…>>, перетаскиваем в зелёный основной блок. Из этого же раздела перетягиваем блок «Идентификатор не является NULL».

Таким образом, мы пройдёмся циклом по всем записям, у которых идентификатор не пустое значение. А так как у любой записи идентификатор не пустое значение, значит цикл пройдётся по всем записям. Для разнообразия можно поменять идентификатор на другое поле из данной модели данных, например на «Название». То есть, теперь цикл будет проходить по всем записям, у которых поле «Название» не пусто.

Процедура создана.
Выполним первое действие
Перейдём в раздел «Действия». Выберем там блок «Обновить запись в…». В поле «Идентификатор» вставляем блок из раздела «Данные» → «Для видео», выбираем оттуда следующий блок:

Таким образом, мы обращаемся к одной конкретной записи через идентификатор. Также можем присвоить другому поле любое другое значение. Например, из раздела «Текст» присвоим полю «Столбец: короткий текст» пустую строчку.
Работа с переменными
В конструкторе процедур есть возможность создавать переменные нужного нам типа: строка, число, файл, список и т. д. Мы попробуем создать несколько переменных с типом «список», и одну переменную с типом «файл .xlsx», состоящий из других переменных с типом «списки».
Перейдём во вкладку “Переменные”, создадим переменные: «Название столбцов», «Содержание столбцов» и «Файл».

Добавляем переменные в наш основной блок.

Теперь присвоим сами значения переменным. Переходим в раздел «Списки» и перетаскиваем блок «Создать список из». Названия столбцов можно задать обычным текстом, а для содержания столбцов добавим параметры: names, content, которые были заранее созданы. Их можно создать при нажатии на «Шестерёнку» у главного зелёного блока.
В переменную «Файл» перетащим блок из раздела «Вложения». Выбираем «Создать XLSX из» и присваиваем к нему блоки, как на рисунке ниже:

Отправка по почте
Чтобы отправить по почте письмо, необходимо перейти в «Действия» → «Системные действия» → «System» → «Отправить электронное письмо». Заранее в созданной интеграции с SMTP (почта), записываем в текстовом формате ключ к интеграции.

Запустим процедуру, введём любые значения и отправляем результат работы на почту.