Устройство конструктора Обзор

Визуальный редактор форм работает по принципу drag-and-drop: вы перетаскиваете компоненты из палитры на холст и настраиваете их свойства, а платформа сама генерирует готовую форму.

Рабочая среда

  • Левая палитра: компоненты сгруппированы по категориям — «Базовые» и «Расположение» доступны всегда; категории «Продвинутые» и «Данные» появляются после включения Продвинутого режима. Вверху палитры есть живой поиск по названиям компонентов.
  • Рабочий холст: интерактивный макет будущей формы. Новый компонент вставляется перетаскиванием или кликом по элементу палитры (он добавится в конец формы).
  • Панель быстрых действий: появляется при наведении на компонент на холсте.

Действия над компонентом

ДействиеЧто делает
НастройкиОткрывает диалог свойств компонента (см. Общие вкладки настроек).
КопироватьПомещает компонент со всеми вложенными полями и правилами в буфер конструктора.
Вставить нижеВставляет ранее скопированный компонент под текущим.
ПереместитьПозволяет перетащить компонент в другую позицию, не разворачивая всю цепочку вложенности.
УдалитьУдаляет компонент из схемы. Вложенные поля удаляются вместе с контейнером.
JSONПрямое редактирование JSON-схемы компонента. Доступно только в Продвинутом режиме.
📌 Не входит в конструктор

Требование электронной цифровой подписи (ЭЦП/Ncalayer), политика геолокации, брендинг страницы и языковые переводы задаются на уровне публикации — на экранах «Основное», «Дизайн» и «Переводы» менеджера.

Одностраничная и многостраничная формы Режимы

Переключатель режима находится над холстом конструктора:

📄 Одностраничная

Все вопросы размещаются на одной странице. Подходит для коротких анкет, заявок и опросов с числом вопросов до 15–20.

🗂 Многостраничная (Wizard)

Форма разбивается на шаги. Респондент проходит их последовательно, видит прогресс и переходит назад без потери введенных данных.

Работа с многостраничным режимом

  • Каждая страница — отдельная вкладка над холстом. Добавляйте страницы кнопкой «+ Страница».
  • Заголовок страницы показывается респонденту в навигации; настройте его в свойствах страницы.
  • Страницы можно переименовывать, менять местами перетаскиванием и удалять.
  • На последней странице автоматически размещается кнопка отправки формы.
  • Валидация проверяет текущую страницу перед переходом к следующей: респондент не «уйдет» дальше с незаполненными обязательными полями.
⚠️ Переключение режима

При переводе одностраничной формы в многостраничный режим все существующие поля оказываются на первой странице — распределите их по шагам вручную. Обратное переключение собирает все поля обратно в одну страницу.

Общие вкладки настроек компонента Свойства

Диалог настроек открывается кнопкой при наведении на компонент. Набор вкладок зависит от типа компонента, но базовый состав одинаков:

ВкладкаОсновные параметры
Отображение Метка поля (Label), подсказка в поле (Placeholder), описание под полем, всплывающая подсказка (Tooltip), префикс и суффикс, скрытие метки, дополнительные CSS-классы, табуляция по Tab.
Данные Значение по умолчанию, поведение при очистке скрытых полей, перерасчет формы при изменении значения.
Валидация (Проверка) Обязательное поле, минимальная/максимальная длина, регулярное выражение, минимальное/максимальное значение (для чисел и дат), собственный текст сообщения об ошибке.
Свойства API Ключ поля (Property Name) — имя, под которым значение попадает в ответ, вебхук и выгрузку Excel. Дополнительные метаданные «Ключ-Значение» для интеграций.
Условия показа Правила видимости компонента в зависимости от ответов (см. Условия показа).
Расположение Ширина поля в 12-колоночной сетке (включая мобильные устройства), смещение (offset), автоматический размер.
💡 Ключ поля (Property Name)

Задавайте осмысленные латинские ключи (full_name, iin, work_phone): именно под этими именами ответы придут в вебхук, выгрузку Excel и внешний API. Ключ генерируется автоматически из метки, но лучше проверить и переименовать его вручную — смена ключа после запуска публикации разорвет связность исторических данных.

Общие свойства полей Справочник

Эти настройки есть у большинства полей конструктора. Они сгруппированы по вкладкам диалога свойств компонента; специфичные настройки отдельных компонентов описаны в разделе Подробные настройки компонентов.

Пометка Продвинутый означает, что свойство доступно только после включения Продвинутого режима.

Вкладка «Отображение»

СвойствоОписание
Метка (Заголовок поля)Название поля, которое видит респондент.
Расположение меткиПозиция метки относительно поля: сверху, слева, справа, снизу.
Label Width / Label MarginШирина метки и отступ после неё в процентах ширины строки (для горизонтального расположения).
Поясняющее описаниеТекст под полем: пояснения, формат, пример заполнения.
Всплывающая подсказкаТекст иконки «?» рядом с меткой; показывается при наведении/фокусе.
Пользовательский CSS-классДополнительный класс для точечной стилизации поля.
Порядок табуляции (Tab Index)Переопределяет порядок перехода по Tab.
Скрыть компонентПоле не видно респонденту, но значение по-прежнему отправляется (для технических значений).
Скрыть метку (заголовок)Показывать поле без заголовка (например, внутри сеток).
Фокус при загрузке формыКурсор автоматически устанавливается в это поле.
Отключено (Только чтение)Поле видно, но недоступно для изменения.
Показывать в таблицахЗначение выводится в табличном представлении ответов (влияет на просмотр сабмишнов и выгрузки).
Открывать для редактирования в модальном окнеДлинные значения редактируются во всплывающем окне.
Show Label in DataGridПоказывать метку поля внутри каждой строки сетки данных.

Вкладка «Данные»

СвойствоОписание
Значение по умолчаниюПредзаполненное значение до ввода пользователем.
Сохранять в базе данныхВключать ли значение в отправляемые данные формы (обычно «Да»).
Защищено от выгрузки в APIЗначение сохраняется, но не возвращается внешним системам через API и вебхуки.
Database IndexСоздаёт индекс по полю в БД (для больших форм; требует участия администратора БД).
Шифровать при записиЗначение шифруется на стороне сервера.
Redraw OnПерерисовать компонент при изменении указанного поля (для сложной логики отображения).
Исключать значение из отправляемых данных при скрытии по условиюЕсли поле скрыто условием, его значение не попадает в сабмишн.
Кастомное значение по умолчанию (JS) ПродвинутыйЗначение по умолчанию, вычисляемое JavaScript-выражением.
Калькулируемое значение (JS) ПродвинутыйАвтоматический расчёт значения из других полей (например, сумма по таблице).
Вычислять значение на сервере ПродвинутыйРасчёт выполняется на сервере, а не в браузере.
Разрешить ручное изменение вычисленного значения ПродвинутыйПользователь может переопределить рассчитанное значение.
Серверное переопределение (JSON) ПродвинутыйJSON с настройками компонента, подменяемыми на сервере.

Вкладка «Валидация (Проверка)»

СвойствоОписание
Обязательно для заполненияБлокирует отправку формы с незаполненным полем.
Проверять приМомент проверки: при изменении, при уходе с поля или при отправке формы.
Валидировать, если скрытоПроверять поле даже когда оно скрыто условием.
Пользовательское название поля при ошибкеКак поле будет названо в текстах ошибок (удобно для длинных меток).
Свой текст сообщения об ошибкеТекст, который увидит респондент при нарушении правил; переводится на все языки формы.
Кастомная JS-валидация, JSONLogic ПродвинутыйПроизвольные правила проверки — см. Продвинутый режим.

Вкладка «Свойства API»

СвойствоОписание
Имя ключа в данных (Property Name)Имя поля в сабмишне, вебхуке, выгрузке Excel и внешнем API. Задавайте осмысленные латинские ключи и не меняйте их после запуска публикации.
Теги поля для группировкиПроизвольные теги для группировки полей в кастомной логике.
Дополнительные метаданные (Ключ-Значение)Произвольные пары для внешних интеграций.

Вкладка «Условия показа»

СвойствоОписание
Этот компонент должен отображаться:«True» — показывать при выполнении условия, «False» — скрывать при выполнении.
Когда компонент формы: / Равно следующему значению:Простой конструктор условия: выбор поля и значения для сравнения. Подробнее — Условия показа.
JSON-условие (Custom Conditional) ПродвинутыйУсловие в формате JSONLogic для составных правил.

Вкладка «Расположение»

СвойствоОписание
Ширина колонки / смещениеШирина поля в 12-колоночной сетке (включая мобильные и планшетные брейкпоинты) и отступ слева.
HTML AttributesПроизвольные атрибуты HTML для элемента ввода.

Вкладка «Логика» Продвинутый

Правила вида «когда триггер → выполнить действие». Полное описание — в разделе Продвинутый режим.

ЭлементОписание
Название логики / ТипИмя правила и тип триггера: простое условие, JavaScript или JSONLogic.
Триггер «Когда / Равно»Сравнение поля с значением (как в условиях показа).
Действие «Свойство компонента»Изменить свойство поля (например, сделать обязательным).
Действие «Установить состояние» / «Текст»Пометить поле как ошибочное с произвольным текстом.
Действие «Значение (Javascript)»Вычислить и подставить значение поля.
Действие «Schema Definition»Объединить (merge) фрагмент схемы с текущим компонентом.
Действие «Custom Action (Javascript)»Произвольный код, выполняемый при срабатывании триггера.
Действие «Event Name»Инициировать событие формы.

Условия показа Логика

Условная видимость позволяет показывать или скрывать вопросы в зависимости от предыдущих ответов респондента. Настройка выполняется во вкладке «Условия показа» диалога свойств:

  1. Укажите, должен ли компонент отображаться, когда условие выполнено (True) или когда не выполнено (False).
  2. Выберите поле-источник условия из выпадающего списка всех компонентов формы.
  3. Задайте значение для сравнения. Условие срабатывает при точном совпадении ответа с указанным значением.
Пример

Поле «Укажите номер водительского удостоверения» отображается только тогда, когда в переключателе «Наличие автомобиля» выбран ответ «Да».

Скрытые условностью поля не попадают в отправку, если это явно не разрешено в настройках компонента. Для сложных условий (несколько полей сразу, сравнение чисел, вычисляемые выражения) используйте Продвинутый режим — условия на JSONLogic.

Базовые поля Компоненты

Основные строительные блоки для сбора информации от респондентов, доступные без дополнительных режимов.

Текстовое поле

Однострочный ввод: ФИО, адрес, произвольный текст.

Длина (мин/макс), регулярное выражение, префикс/суффикс, маска ввода.

Многострочный текст

Комментарии, отзывы, развернутые ответы.

Число строк, авторесайз по содержимому, счетчик символов, ограничение длины.

Число

Возраст, суммы, количественные показатели.

Шаг (Step), минимум и максимум, количество десятичных знаков, формат тысяч.

Пароль

Ввод с маскированием символов.

Скрывает ввод; хранится в ответах как обычное значение — не используйте для секретов.

Флажок (Чекбокс)

Согласие с условиями, одиночный переключатель да/нет.

Обязательность (например, чекбокс согласия), значение по умолчанию.

Группа флажков

Множественный выбор: респондент отмечает любое количество вариантов.

Список значений (Values), минимальное и максимальное число выбранных, горизонтальное/вертикальное расположение.

Выпадающий список

Выбор одного или нескольких вариантов из компактного списка.

Статические значения, REST-источник (URL с JSON), живой поиск по вариантам, режим множественного выбора.

Переключатель (Радио)

Одиночный выбор из 2–5 вариантов (пол, да/нет).

Список значений, горизонтальное/вертикальное расположение.

Кнопка

Кнопки действий внутри формы: отправка, сброс, пользовательская логика.

Действие (Отправить/Сброс/Событие), стиль, размер, блокировка после нажатия, показ при валидации.

Загрузка файлов Безопасность файлов

Два специализированных компонента загрузки с обязательной антивирусной проверкой.

Файл

Документы, сканы, PDF, архивы.

Разрешенные типы (шаблон файлов), ограничение размера и количества, несколько файлов одновременно.

Фото / Видео

Изображения и видеозаписи с превью.

Принимает image/* и video/*, показывает галерею миниатюр, поддерживает множественную загрузку.

Механизм безопасной обработки файлов

  1. Респондент выбирает файл в форме.
  2. Файл отправляется в защищенный файловый шлюз платформы и помещается во временный изолированный буфер.
  3. Служба ClamAV проверяет файл на вирусы и вредоносные сигнатуры.
  4. Чистый файл сохраняется в защищенное S3-хранилище, а в сабмишн формы записывается безопасный уникальный UUID файла.
  5. Если обнаружен вирус — загрузка блокируется, файл немедленно уничтожается.

Максимальный размер файла задается администратором в «Настройках системы». Программное скачивание загруженных файлов и политики доступа описаны в разделе Скачивание файлов (File API).

Разметка и сетки Layout

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

HTML элемент

Вставка произвольной HTML-разметки: заголовки, разделители, ссылки.

Тег (h2, hr, p…), атрибуты, CSS-класс, содержимое.

Текстовый блок (Контент)

Форматированный текст-пояснение: инструкции, дисклеймеры, contact-блоки.

Редактор форматированного текста, HTML-режим. Содержимое не сохраняется в ответах.

Колонки (Разметка)

Размещение полей в один ряд по 12-колоночной сетке: например, «Имя» (6) и «Фамилия» (6).

Ширина каждой колонки, смещения, адаптивная перестройка на мобильных.

Группа полей (Fieldset)

Логическая группа полей с общим заголовком и рамкой (легенда).

Заголовок группы, скрытие заголовка, произвольные CSS-классы.

Панель (Карточка)

Контейнер с заголовком и оформлением. Разделяет длинные анкеты на смысловые блоки («Личные данные», «Опыт работы»).

Сворачиваемость (Collapsible), свернута по умолчанию (Collapsed), цвет темы.

Таблица

Фиксированная сетка «строки × колонки» для сложных макетов и таблиц-перекрестков.

Число строк и колонок, ширина ячеек, заголовки, чередование строк.

Вкладки

Переключаемые вкладки внутри одной страницы формы.

Названия вкладок, активная вкладка по умолчанию. Не путайте с многостраничным режимом формы.

Контейнер с рамкой (Well)

Блок с подложкой для визуального выделения группы полей или текста.

Вложенность: в контейнер можно перетащить любые поля и другие контейнеры.

Продвинутые поля Продвинутый режим

Эти компоненты появляются в палитре после включения Продвинутого режима в «Настройках системы».

Электронная почта (Email)

Адрес почты со встроенной проверкой формата.

Валидация e-mail из коробки, доп. правила через регулярное выражение.

Веб-ссылка (URL)

Адрес сайта или ресурса с проверкой корректности URL.

Встроенная валидация ссылки.

Номер телефона

Телефон с маской ввода.

Маска (шаблон ввода), хранит «сырое» значение и отформатированное.

Теги

Ввод списка значений «чипами»: навыки, ключевые слова.

Максимальное число тегов, разделитель, хранится как массив.

Адрес

Структурированный адрес или геопоиск через внешнего провайдера.

Режим ручного ввода или autocomplete-провайдер, ограничение по стране.

Дата и время

Выбор даты и/или времени из календаря.

Формат отображения, минимальная/максимальная дата, включение времени и часового пояса, режим «только дата».

День (Дата)

Дата из трех выпадающих списков: день, месяц, год.

Отдельные селекты вместо календаря — удобно для дат рождения.

Время

Выбор времени (часы:минуты) без даты.

Формат 12/24 часа, шаг минут, минимальное и максимальное время.

Валюта (Сумма)

Денежная сумма с форматированием.

Символ валюты, разделители тысяч и дробной части, ограничение знаков.

Матрица опроса

Таблица «вопрос × вариант ответа»: респондент отмечает ячейки (например, удовлетворенность параметров).

Список вопросов (Rows) и вариантов (Columns), хранится как вложенный объект.

Цифровая подпись

Рукописная подпись мышью или стилусом на тач-экране.

Ширина и высота полотна, цвет пера и фона. Сохраняется как изображение.

Компоненты данных Продвинутый режим

Контейнеры для организации структуры ответов и повторяющихся блоков. Доступны в Продвинутом режиме.

Контейнер данных

Группирует вложенные поля в отдельный объект ответа: паспорт: {серия, номер}.

Вложенность в выгрузке и вебхуке соответствует структуре контейнера.

Сетка данных (Таблица)

Повторяющиеся строки с фиксированным набором колонок: члены семьи, адреса, товары.

Колонки-компоненты, число строк по умолчанию, добавление/удаление строк респондентом, лимиты (мин/макс строк).

Карта ключ-значение

Произвольные пары «ключ → значение», задаваемые респондентом на лету.

Подходит для реквизитов и характеристик с заранее неизвестным составом.

Динамическая таблица (EditGrid)

Повторяющиеся блоки произвольной сложности: каждая строка — разворачиваемая форма.

Шаблон строки (любые компоненты), шаблоны заголовка/подвала строки, добавление и редактирование в модальном окне.

Скрыть компонент (Hidden)

Невидимое респонденту поле: технические значения, данные из URL, вычисляемые константы.

Значение по умолчанию, условная видимость не нужна — поле всегда скрыто, но попадает в ответ.

Подробные настройки компонентов Справочник

Исчерпывающий перечень настроек самых востребованных компонентов корпоративных форм. Общие свойства (метка, описание, обязательность, ключ API и т.д.) перечислены в разделе Общие свойства полей — здесь только специфичные.

Состав настроек соответствует текущей версии платформы. Пометка Продвинутый — свойство доступно в Продвинутом режиме.

Текстовое поле, Многострочный текст, Число

Общие настройки текстового ввода
СвойствоОписание
Подсказка в поле (Placeholder)Серый текст-пример в пустом поле; в данные не попадает.
Префикс (Значок слева) / Суффикс (Значок справа)Постоянный текст внутри поля: валюта, единицы измерения, «+7».
Виджет + настройки виджетаАльтернативный контрол ввода (например, календарь). Оставьте «Строка ввода», если не нужен особый сценарий.
Маска вводаЖёсткий шаблон формата: 9 — цифра, a — буква, * — буква или цифра. Пример телефона: +7(999)999-99-99.
Display Mask (маска отображения)Красивое отображение ввода, не меняющее сохраняемое значение. Чтобы маска влияла и на значение, используйте только «Маску ввода».
Apply Mask On (момент применения)Change (по умолчанию) — проверка маски при каждом изменении; Blur — при уходе с поля.
Input Mask Placeholder CharСимвол-заполнитель незаполненных позиций маски; если он встречается внутри самой маски — заменяется пробелом.
Allow Multiple Masks + список масокНесколько альтернативных масок: у поля появляется выпадающий список для выбора нужного формата.
Виджет «Календарь» (Widget)Превращает текстовое поле в выбор даты со строковым значением: формат отображения и формат хранения настраиваются раздельно, значение не зависит от таймзоны пользователя. Для полноценной работы с датами лучше компонент «Дата и время».
Автозаполнение браузеромСтандартные подсказки браузера (off, name, email, tel…).
Разрешить проверку орфографииПодсветка орфографических ошибок браузером.
Отображать счетчик символов / словЖивой счётчик под полем; полезно в паре с ограничениями длины.
Скрыть само поле вводаВвод маскируется (как пароль); значение хранится в открытом виде — не используйте для секретов.
Разрешить несколько значений (multiple)Поле принимает массив значений; в выгрузке и API — список.
Формат ввода (inputFormat)Санитизация значения: текст / «сырой» / HTML (защита от XSS-вставок).
Text Case (Регистр текста)Автоматическое приведение к верхнему/нижнему регистру.
Truncate Multiple SpacesСхлопывание повторных пробелов.
Уникальное значение в базеСерверная проверка, что такое значение ещё не отправлялось в этой публикации.
Мин./макс. длина, Регулярное выражение, Мин./макс. словОграничения текста; рецепты выражений — Рецепты валидации.
Только у «Многострочного текста»
СвойствоОписание
Rows (Число строк)Начальная высота поля в строках (по умолчанию 3).
Auto ExpandПоле автоматически растёт по высоте при вводе.
Editor (Редактор)Обычный текст или визуальный редактор форматирования (жирный, списки). Учтите: форматированный текст в формах может ухудшать доступность (WCAG) — используйте осознанно.
Editor Settings (JSON)JSON-конфигурация визуального редактора (панель инструментов, стили). Продвинутый
Enable Image Upload + хранилище/URL/каталог/ключ файлаВставка картинок в текст редактора. Для корпоративных форм обычно отключено — файлы лучше собирать компонентом «Файл».
Save As (Сохранить как)Формат хранения значения: строка, JSON или HTML.
Только у «Числа»
СвойствоОписание
Use Thousands SeparatorРазделять тысячи пробелом/запятой (1 000 000).
Decimal PlacesМаксимум знаков после запятой.
Require DecimalВсегда показывать десятичные знаки, включая нулевые (10,00).
Decimal Symbol ПродвинутыйСимвол десятичного разделителя (например, запятая); в диалоге скрыт — задаётся в JSON схемы как "decimalSymbol": ",".
Минимум / Максимум (валидация)Допустимый диапазон числа; используется в отчётности и расчётах.
Целое число (валидация)Разрешать только целые значения без дробной части.
Шаг (валидация)Гранулярность значения (кратно шагу); по умолчанию «any» — любое.

Флажок, Группа флажков, Переключатель (Радио)

Только у «Флажка (Чекбокс)»
СвойствоОписание
Input Type (Тип ввода)HTML-тип контрола (флажок или радиокнопка).
Radio Key (name)Имя группы: несколько чекбоксов с одинаковым name работают как радио-выбор.
Radio ValueЗначение, отправляемое при установленном флажке (по умолчанию «true»).
Shortcut (Горячая клавиша)Быстрый переход к полю с клавиатуры.
Общие настройки вариантов (Группа флажков и Радио)
СвойствоОписание
Values (варианты)Таблица вариантов: Метка — что видит респондент, Значение — что сохранится в данных и отчётах (только строки или числа!), Shortcut — горячая клавиша. Порядок вариантов меняется перетаскиванием.
Options Label PositionРасположение подписей вариантов (справа/слева/сверху/снизу).
Inline LayoutВарианты в одну строку (компактно) или списком.
Тип источника данных (dataSrc)Варианты задаются вручную или подгружаются по URL (JSON-массив): Data Source URL, Поле для сохранения (Value Property), Шаблон отображения варианта.
Тип хранения (dataType) — только у РадиоТип сохраняемого значения: строка, число, логический, объект.
Authenticate / Disables caching — для URL-источниковАвторизация запроса и кэширование ответа. Для словарей SuraqHub оставляйте выключенными — эндпоинт публичный в рамках формы.

У «Группы флажков» дополнительно: Minimum/Maximum checked number — минимальное и максимальное число отмеченных вариантов с текстами ошибок (Minimum/Maximum checked error message). Когда максимум достигнут, оставшиеся варианты автоматически деактивируются.

У «Переключателя (Радио)»: повторный клик по выбранному варианту снимает выбор (респондент может оставить вопрос без ответа после клика — используйте «Обязательно», если это недопустимо).

Выпадающий список (Select)

Источник данных
СвойствоОписание
Тип источника данных (dataSrc)Values — ручной список (метка/значение); URL — JSON из внешнего источника, включая словари платформы /api/v1/dictionaries/{код}; JSON — вставка массива прямо в настройку; Custom — JavaScript-функция Продвинутый. Режим «Ресурс» в SuraqHub не используется.
Data Source URLАдрес JSON-массива вариантов. Для справочников — Runtime Dictionary API renderer-а.
Data Source Raw JSONМассив вариантов в формате JSON прямо в настройке.
Поле для сохранения (Value Property)Какое поле элемента JSON считать значением (например, code), а какое — подписью (через шаблон). Если оставить пустым — в ответ сохраняется весь объект целиком.
Data Path (selectValues)Путь к массиву внутри ответа, если JSON обёрнут (например, data.items).
ID Path / Select FieldsПоле-идентификатор и список возвращаемых полей (для серверных источников).
Шаблон отображения варианта (template)HTML-шаблон строки варианта (можно показывать несколько полей элемента).
Тип хранения (dataType)Приведение сохраняемого значения: строка, число, boolean, объект.
Разрешить несколько значений (multiple)Множественный выбор; в данных — массив.
Unique OptionsСкрывать дубли вариантов.
Widget TypeСовременный список с поиском (Choices) или нативный <select> HTML5.
Серверная фильтрация и поиск (для URL-источников)
СвойствоОписание
Search Query NameИмя query-параметра, в который подставляется поисковая фраза.
Search request delayЗадержка перед отправкой поискового запроса в секундах (по умолчанию 0.3), чтобы не слать запрос на каждый символ. Например, URL …/dictionaries/orgs + параметр q + фраза «налог» → запрос …/dictionaries/orgs?q=налог.
Minimum Search LengthМинимальная длина фразы до начала поиска.
Enable Static SearchПоиск по уже загруженному списку (без запросов к серверу).
Use exact searchТочное совпадение вместо нечёткого поиска.
Search ThresholdПорог «нечёткости» поиска: 0.0 — только точные совпадения, 1.0 — совпадёт всё; по умолчанию 0.3.
Filter Query / Sort QueryДополнительные query-параметры фильтрации и сортировки. Синтаксис сортировки: created — по возрастанию, -created — по убыванию, data.field_name — по полю ответа (минус — по убыванию).
Request Headers (Заголовки запроса)Произвольные заголовки для URL-источника (например, токен внешнего API). Продвинутый
LimitОграничение числа загружаемых вариантов.
Disable limiting responseНе отправлять limit/skip в запросе (загрузить всё).
Lazy Load DataЗапрос вариантов только при открытии списка, а не при загрузке формы.
Disable Options Refresh When ScrollingНе догружать варианты при прокрутке списка.
Поведение и интеграции
СвойствоОписание
Refresh Options On / On BlurПерезагрузить варианты при изменении/уходе с другого поля (каскадные списки: страна → город).
Clear Value On Refresh OptionsСбрасывать выбранное значение при обновлении списка.
Подсказка в поле (Placeholder)Текст пустого списка («— выберите —»).
Read Only ValueВ режиме только чтения показывать «сырое» значение вместо подписи.
Choices.js options (customOptions)Сырой JSON-конфиг списка. Продвинутый
Add Resource / Add Resource Label, Save as referenceСоздание записей встроенного хранилища ресурсов. В SuraqHub не используется.
Проверка «Разрешены только варианты из списка» (Only available items)Запретить значения, отсутствующие в списке (рекомендуется для справочных полей).
Уникальное значение в базеСерверная проверка уникальности ответа.

Дата и время

Все настройки
СвойствоОписание
Включить выбор даты / времениОтдельные переключатели: поле даты, поля времени или обоих.
Формат отображения датыМаска формата (по умолчанию yyyy-MM-dd hh:mm a, например dd.MM.yyyy); определяет и то, как вводит пользователь. Значение всегда хранится в ISO 8601 — удобно для фильтрации и отчётности.
Allow Manual InputРучной ввод даты с клавиатуры (по умолчанию включён); если выключить — только выбор из календаря.
Use Locale SettingsФормат по локали браузера респондента.
Display in Timezone / Select TimezoneВ какой временной зоне показывать сохранённое значение: локали зрителя, зоне отправки, фиксированной зоне из списка или UTC. Для межрегиональных форм.
Default DateДата по умолчанию; поддерживает moment-выражения, например moment().subtract(10, 'days') — «10 дней назад». Продвинутый
Minimum Date / Maximum DateДиапазон допустимых дат (даты рождения, периоды приёма). Переключатели «Use Input…» позволяют задавать границы moment-выражением. Продвинутый
Disable weekends / Disable weekdaysЗапретить выходные или, наоборот, будни.
Disable specific datesЧёрный список дат в формате (yyyy-MM-dd) или диапазона (yyyy-MM-dd - yyyy-MM-dd).
Disabling dates by a functionJS-функция запрета дат, например date.getDay() === 0 || date.getDay() === 6 — все воскресенья и субботы. Продвинутый
Hour Step Size / Minute Step SizeШаг стрелок часов и минут в селекторе времени.
12-часовой формат (AM/PM)12-часовое отображение времени.
Flatpickr options (customOptions)Сырой JSON-конфиг календаря. Продвинутый
Разрешить несколько значений (multiple)Список дат.

Кнопка

Все настройки
СвойствоОписание
Действие (Action)Отправить (Submit) — отправка формы; Сохранить в состоянии — сохранить черновик под именем состояния без проверки валидации (кнопка «Сохранить как черновик»); Сброс (Reset) — вернуть все поля к исходному состоянию; Событие (Event) — инициировать событие для логики формы; URL — отправить сабмишн на указанный адрес; Своя логика (Custom) — JavaScript-обработчик Продвинутый.
Заголовок (Label) / ЗначениеТекст на кнопке и техническое значение нажатия в данных.
ТемаЦветовой стиль: primary, secondary, info, success, warning, danger, link.
Размер / Block ButtonРазмер кнопки и растяжка на всю ширину контейнера.
Left Icon / Right IconИконки слева/справа от текста (CSS-класс иконки, например bi bi-send).
Блокировать при ошибках в форме (disableOnInvalid)Кнопка неактивна, пока в форме есть ошибки валидации.
Show ValidationsПри нажатии показать все ошибки валидации формы.
Save On EnterОтправка формы клавишей Enter.
ShortcutГорячая клавиша нажатия.
OAuth ProviderВход через внешнего OAuth-провайдера. В SuraqHub не используется — аутентификация на уровне публикации.

Файл и Фото / Видео

Все настройки

«Фото / Видео» — это тот же компонент «Файл» с предустановленными Display as image(s) и шаблоном image/*,video/*. Загрузка всегда идёт через защищённый файловый шлюз платформы с проверкой ClamAV.

СвойствоОписание
Storage / URL загрузкиТип хранилища и адрес загрузки — сконфигурированы платформой. Не меняйте вручную.
Разрешенные форматы файловШаблон допустимых типов: .pdf,.docx, image/*, application/*. Пусто — любые файлы.
Минимальный / Максимальный размер файлаОграничения в байтах или с суффиксом (например, 10MB). Общий максимум задаётся в «Настройках системы».
Разрешить несколько значений (multiple)Загрузка нескольких файлов в одно поле.
Display as image(s)Показывать миниатюры изображений вместо списка ссылок.
Image SizeРазмер превью изображений.
Enable web camera / Webcam WidthСъёмка фото с камеры устройства прямо в форму.
Enable device captureНа мобильных открывать камеру/микрофон напрямую в режиме съёмки.
Upload OnlyТолько загрузка: скачивание из формы запрещено (файлы доступны операторам через File API).
Private DownloadСкачивание POST-запросом с авторизацией (для защищённых файлов).
Directory / File Name TemplateКаталог хранилища (должен заканчиваться на /) и шаблон имени загружаемого файла; настраиваются платформой.
File form-data keyИмя поля multipart-запроса при загрузке; фиксировано платформой.
Use the S3 Multipart Upload API / Part SizeМногочастная загрузка больших файлов напрямую в S3. В SuraqHub не используется — шлюз загрузки свой.

Сетка данных (Таблица)

Все настройки

Колонки сетки — любые перетащенные внутрь компоненты. В данных и выгрузке сетка сохраняется как массив объектов.

СвойствоОписание
Number of RowsЧисло строк, добавляемых при загрузке формы.
Initialize EmptyНе показывать ни одной строки до добавления пользователем.
Disable Adding / Removing RowsСкрыть кнопки добавления/удаления строк (фиксированная таблица).
Conditional Add ButtonУсловие, при котором показывается кнопка добавления строки. Продвинутый
Add Another TextСвоя надпись на кнопке добавления строки.
Add Another PositionРасположение кнопки добавления (сверху/снизу/обе).
Allow ReorderПеретаскивание строк для изменения порядка.
Equal column widthКолонки одинаковой ширины вместо авто-подбора.
Enable Row Groups / Hide Group on Header ClickГруппировка строк по выражению и сворачивание групп кликом по заголовку. Продвинутый
Мин./макс. строк (валидация)Ограничение количества заполненных строк. При достижении минимума кнопка удаления строки скрывается, при достижении максимума — кнопка добавления.

Динамическая таблица (EditGrid)

Все настройки

Родственник «Сетки данных»: каждая строка — разворачиваемая форма (по умолчанию редактирование в модальном окне). Подходит для блоков из многих полей: образование, трудовой стаж, обращения.

СвойствоОписание
Display as ModalДобавление/редактирование строки в модальном окне (по умолчанию) или инлайн-редактирование на месте.
Inline EditingИзменения в режиме редактирования сразу сохраняются в ответ формы, без кнопки подтверждения строки.
Open First Row when EmptyПервая строка сразу открыта для заполнения, когда таблица пуста.
Disable Adding / Removing RowsСкрыть кнопки добавления/удаления строк (фиксированный набор).
Conditional Add ButtonУсловие показа кнопки добавления строки. Продвинутый
Add Another Text / Save Row Text / Remove Row TextСвои надписи на кнопках добавления, сохранения и удаления строки.
Header / Table Header / Row / Table Row / Footer TemplateHTML-шаблоны отображения заголовка, строки и подвала в режиме просмотра (например, показать строку как «ФИО — должность» одной строкой). Продвинутый
Row CSS ClassДополнительный CSS-класс обёртки редактируемой строки. Продвинутый
Enable Row DraftsРазрешить сохранять строку-черновик, даже если её поля не проходят валидацию.
Мин./макс. строк (валидация)Как у Сетки данных: кнопки сами скрываются на границах лимитов.

Адрес

Все настройки

Поле адреса с двумя режимами: автоподсказки внешнего гео-сервиса или ручной структурированный ввод. Для корпоративных сетей без доступа к внешним картографическим API используйте ручной режим.

СвойствоОписание
Enable Manual ModeРазрешить ручной ввод адреса (без гео-сервиса). Надёжный вариант для внутренних сетей.
Switch To Manual Mode LabelПодпись переключателя «Ввести вручную».
Disable Clear IconСкрыть иконку быстрой очистки значения.
ProviderПровайдер автоподсказок (Google, Azure Maps и др.). Требует ключа и доступности сервиса из сети респондента.
API Key / Subscription KeyКлючи соответствующих провайдеров.
URL / Query Property / ParamsСвой гео-сервис: адрес поиска, имя query-параметра с поисковой фразой, дополнительные параметры JSON-объектом. Продвинутый
Response Property / Display Value PropertyПуть к массиву адресов в ответе и поле для отображения варианта. Продвинутый
Manual Mode View StringШаблон строки адреса при ручном вводе. Продвинутый
Подсказка в поле / Разрешить несколько значений / Значение по умолчаниюКак у обычных текстовых полей.

Валюта (Сумма)

Только специфичные настройки

Разновидность числового поля с денежной маской: разделители тысяч проставляются автоматически. Общие свойства текстового ввода (маски, префикс/суффикс, скрытие ввода) — как у текстовых полей.

СвойствоОписание
ВалютаВыбор валюты — определяет символ-префикс в поле и формат отображения суммы.
Префикс / СуффиксДополнительный текст вокруг суммы (например, «тенге»); валюта уже подставляет свой символ.
Минимум / Максимум / Целое число (валидация)Диапазон суммы и запрет копеек — для полей вроде «сумма договора».

Цифровая подпись

Только специфичные настройки

Рукописная подпись мышью или стилусом; сохраняется как изображение в ответе формы. Не путайте с ЭЦП (Ncalayer) — криптографическая подпись включается настройками публикации.

СвойствоОписание
Width / HeightРазмеры полотна подписи.
Keep Overlay Aspect RatioПревью сохраняет пропорции полотна.
Background Color / Pen ColorЦвет фона полотна и цвет пера.
Footer LabelТекст под полотном (например, «Подпись заявителя»).

Теги

Только специфичные настройки

Ввод списка значений «чипами» (каждое значение — отдельный тег); в ответе сохраняется массив строк.

СвойствоОписание
Delimiter (Разделитель)Какой символ отделяет один тег от другого при вводе (запятая, пробел, Enter).
Max TagsМаксимальное число тегов.
Store As (Storeas)Формат хранения массива: строка с разделителями или настоящий массив. Продвинутый
Значение по умолчаниюПредзаполненные теги.

Практические сценарии How-To

Готовые рецепты типовых задач: какие компоненты и настройки нужно объединить, чтобы получить нужное поведение формы.

📋 Сценарий 1. Поле ИИН/БИН с маской и проверкой

  1. Добавьте Текстовое поле, назовите «ИИН/БИН».
  2. В «Отображении» задайте Маску ввода 999999999999 — ровно 12 цифр, и Автозаполнение браузером = off.
  3. Во «Вкладке Валидация»: включите Обязательно, задайте Регулярное выражение ^\d{12}$ и понятный текст ошибки: «ИИН/БИН состоит из 12 цифр».
  4. Во «Свойствах API» проверьте ключ поля — например, iin_bin: под этим именем значение уйдёт в отчёты и вебхуки.

Результат: респондент физически не сможет ввести буквы или лишние цифры, а сервер отклонит неверную длину, даже если форму отправят программно.

🗺 Сценарий 2. Каскадные списки «Область → Город»

  1. Создайте два Выпадающих списка: «Область» и «Город».
  2. Обоим задайте Тип источника данных = URL и адрес справочника (свой REST-эндпоинт или словарь платформы /api/v1/dictionaries/{код}).
  3. У списка «Город» в поле Refresh Options On выберите компонент «Область» — список городов будет перезагружаться при смене области.
  4. Включите Clear Value On Refresh Options — при смене области ранее выбранный город сбросится (иначе останется город из чужой области).
  5. В URL-источнике города передавайте выбранную область параметром: ?region={{ data.region }} — так сервер отдаст только подходящие города.

Включите Lazy Load Data у обоих списков, чтобы справочники грузились только при открытии, а не при загрузке формы.

✅ Сценарий 3. Чекбокс согласия на обработку данных

  1. Добавьте Флажок (Чекбокс) с меткой «Я даю согласие на обработку персональных данных».
  2. Во «Вкладке Валидация» включите Обязательно для заполнения и задайте текст ошибки: «Требуется согласие на обработку персональных данных».
  3. Поставьте флажок последним полем перед кнопкой отправки; ссылку на политику добавьте через Текстовый блок (Контент) над чекбоксом.

Не ставьте флажку «Значение по умолчанию = включено»: согласие должно быть осознанным действием.

💾 Сценарий 4. Кнопка «Сохранить черновик»

  1. Добавьте Кнопку рядом с основной кнопкой отправки.
  2. В «Действии» выберите Сохранить в состоянии и укажите имя состояния, например draft.
  3. Выключите Show Validations и Блокировать при ошибках в форме — черновик должен сохраняться даже с незаполненными обязательными полями.
  4. Задайте тему кнопки «secondary», чтобы визуально отличать от основной кнопки отправки.

Для периодических форм черновики работает вместе с настройкой «Продолжать текущий отчёт» — респондент сможет дозаполнять анкету в течение периода. Подробности: Периодическая отчётность.

👨‍👩‍👧 Сценарий 5. Таблица «Члены семьи» с лимитами

  1. Добавьте Сетку данных (Таблицу) «Члены семьи».
  2. Внутрь перетащите поля: ФИО (Текстовое поле), дата рождения (Дата и время), степень родства (Выпадающий список из словаря).
  3. Во «Вкладке Валидация» задайте Минимум/Максимум строк — например, минимум 1, максимум 10.
  4. В «Add Another Text» напишите «+ Добавить члена семьи», в «Number of Rows» поставьте 1.

В выгрузке Excel каждая строка таблицы попадёт в ответ как отдельный объект массива family_members — одинаковые ключи полей внутри строк обязательны.

📚 Сценарий 6. Выпадающий список из словаря платформы

  1. Создайте Выпадающий список, источник данных — URL.
  2. Укажите адрес словаря: /api/v1/dictionaries/{код словаря} — данные управляются в справочнике записей, без пересборки формы.
  3. Задайте Поле для сохранения (Value Property) по структуре словаря (например, code), а подпись настройте Шаблоном отображения варианта.
  4. Включите Проверку «Разрешены только варианты из списка», чтобы респондент не отправил значение вне словаря.

При обновлении справочника форма подхватит новые варианты автоматически — ревизия формы не требуется.

Валидация данных и условная логика Logic

✅ Правила валидации

  • Обязательное поле (Required): блокирует отправку формы, если поле не заполнено.
  • Минимальная / максимальная длина: для текстовых полей.
  • Регулярные выражения (Regex Pattern): проверка ИИН/БИН, номеров телефонов, паспортов и любых форматов (см. Рецепты валидации).
  • Минимум / максимум: для чисел и дат.
  • Кастомные сообщения об ошибках: собственный текст, который увидит пользователь при нарушении правила. Поддерживается на всех языках формы.

🔀 Условная видимость (Conditional Logic)

Поля показываются или скрываются в зависимости от ответов респондента. Настройка — во вкладке «Условия показа» диалога свойств компонента:

Пример

Поле «Укажите номер водительского удостоверения» отображается только тогда, когда в переключателе «Наличие автомобиля» выбран ответ «Да».

В продвинутом режиме доступны условия на JSONLogic — составные правила по нескольким полям, сравнения чисел и дат, вложенные ветвления.

Продвинутый режим Advanced

Режим для опытных разработчиков форм. Включается в разделе «Настройки системы» менеджера — чекбокс «Продвинутый режим» (полный доступ к JSON, PDF и сложной логике).

Что открывается

  • Категории палитры «Продвинутые» и «Данные»: профильные поля и контейнеры данных.
  • Кнопка «JSON» на компонентах: прямое редактирование JSON-схемы любого поля.
  • Вкладка «Логика» в диалоге свойств компонента (см. ниже).
  • Калькулируемое значение: JavaScript-выражение, автоматически вычисляющее значение поля из других ответов (например, сумма полей таблицы).
  • Кастомная JS-валидация: произвольная проверка значения функцией на JavaScript.
  • JSONLogic: составные условия видимости и валидации в декларативном формате.
  • Серверный пересчет значения и разрешение ручного переопределения вычисляемых полей.

Полный перечень JS-настроек с доступными переменными и примерами кода — в разделе JavaScript-свойства компонентов.

Вкладка «Логика»

Расширенная логика описывается правилами вида «когда триггер → выполнить действие»:

  • Триггеры: простое условие по полю, JSONLogic-выражение или JavaScript-функция.
  • Действия: изменить свойство компонента (например, сделать поле обязательным), изменить состояние, объединить (merge) часть схемы, выполнить произвольный код.

Так реализуются сценарии вида «если сумма кредита больше 1 000 000 — показать блок поручителей и сделать поле ИИН обязательным».

⚠️ Ответственность

Кастомный JavaScript и JSON-редактор выполняются в браузере респондента: ошибка в коде может сломать отображение формы или отправку. После включения продвинутой логики обязательно тестируйте форму в «Предпросмотре» на всех языках публикации.

JavaScript-свойства компонентов Продвинутый

У полей есть ряд настроек, принимающих JavaScript-код: вычисляемые значения, кастомная валидация, JS-условия, источники данных и действия логики. Все они доступны только в Продвинутом режиме.

Всё, что можно решить простым условием или регулярным выражением, лучше решать ими: JS-код выполняется с «безопасной оценкой» и при частом использовании замедляет форму.

Доступные переменные (общий контекст)

Во всех JS-точках доступны одни и те же переменные:

ПеременнаяСодержимое
dataВсе введённые данные формы (объект: ключ поля → значение).
rowДанные текущей строки — внутри Сетки данных, Динамической таблицы и Контейнера.
formПолный JSON формы.
submissionПолный объект отправки.
componentJSON текущего компонента.
instanceЭкземпляр текущего компонента (API поля).
valueТекущее значение компонента.
momentБиблиотека работы с датами (например, moment().subtract(10, 'days')).
_Lodash.
utils / utilУтилиты платформы для работы с формами.

Ссылайтесь на другие поля по их Property Name (вкладка «Свойства API»), а у Переключателей, Списков и Групп флажков — по значению варианта, а не по его метке.

Все точки входа JavaScript

Свойство (где находится)Что пишется
JSON-условие показа
Вкладка «Условия показа»
Булево выражение, начинающееся с show =. Пример: поле видно только для одиноких/вдовцов с доходом ниже 45 000:
show = (data.income < 45000) &&
  (data.maritalStatus == 'single' || data.maritalStatus == 'widowed');
Кастомное значение по умолчанию (JS)
Вкладка «Данные»
Вычисляет значение по умолчанию при загрузке формы, например предзаполнение даты: value = moment().format('DD.MM.YYYY');
Калькулируемое значение (JS)
Вкладка «Данные»
Присваивание в value; пересчитывается при изменении исходных полей. Пример суммы по строкам таблицы:
value = (data.items || [])
  .reduce((sum, row) => sum + (Number(row.amount) || 0), 0);
Рядом: «Вычислять на сервере», «Разрешить ручное изменение».
Кастомная JS-валидация
Вкладка «Валидация»
Выражение, начинающееся с valid =; текущее значение поля — в переменной input; true — поле валидно, строка — текст ошибки. Пример подтверждения email:
valid = (input === data.email)
  ? true : 'Адреса электронной почты не совпадают';
Триггер «Javascript»
Вкладка «Логика»
Условие срабатывания правила — тот же контекст, что и у условий показа; возвращает булево значение.
Действие «Значение (Javascript)»
Вкладка «Логика»
Изменяет значение поля при срабатывании триггера; доступны row, data, component и result.
Действие «Custom Action (Javascript)»
Вкладка «Логика»
Произвольный код по событию: скрыть/показать блоки, изменить несколько полей, вызвать событие формы.
Своя логика кнопки (Custom)
Компонент «Кнопка», действие «Custom»
Код, выполняемый при нажатии кнопки — например, валидация группы полей и показ диалога.
Кастомный источник вариантов
Выпадающий список, источник «Custom»
Заполняет варианты списка из данных формы или внешнего запроса (может вернуть Promise):
values = [
  { label: 'Опция A', value: 'a' },
  { label: 'Опция B', value: 'b' }
];
Условная кнопка добавления строки
Сетка данных / Динамическая таблица
Условие (JS или JSONLogic), при котором показывается кнопка «+ Добавить строку» — например, не больше 5 строк для определённого типа заявки.
💡 Хорошие практики
  • Проверяйте данные на существование (data.items || []): поле может быть пустым или скрытым.
  • Не используйте JS там, где хватает простого условия — это быстрее и надёжнее.
  • Тестируйте форму в «Предпросмотре» на всех языках и на пустых значениях.
  • Помните: код выполняется в браузере респондента — не кладите в него секреты и не полагайтесь на него как на единственную защиту данных (серверная валидация обязательна).

Рецепты валидации Шаблоны

Готовые регулярные выражения для вкладки «Валидация (Проверка)» → поле «Регулярное выражение». Укажите также понятный текст ошибки.

Формат Регулярное выражение Пояснение
ИИН / БИН ^\d{12}$ Ровно 12 цифр.
Мобильный номер РК ^\+7\d{10}$ Формат +7XXXXXXXXXX. Для формата 8XXXXXXXXXX используйте ^8\d{10}$.
Электронная почта встроенная Используйте компонент «Электронная почта (Email)» — проверка формата уже включена.
Только буквы и пробелы ^[А-Яа-яЁёA-Za-z\s-]+$ ФИО без цифр и спецсимволов.
Номер документа ^[A-Z0-9]{8,12}$ Заглавные латинские буквы и цифры, от 8 до 12 символов.
Номер банковской карточки (маска) ^\d{4}(\s?\d{4}){3}$ 16 цифр, допустимы пробелы между группами.
⚠️ Персональные данные

Не запрашивайте ИИН, паспортные данные и реквизиты карт без необходимости: публикация с такими полями должна иметь осмысленное правовое основание и ограниченный круг респондентов (доступ по ролям).