Устройство конструктора Обзор
Визуальный редактор форм работает по принципу 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» | Инициировать событие формы. |
Условия показа Логика
Условная видимость позволяет показывать или скрывать вопросы в зависимости от предыдущих ответов респондента. Настройка выполняется во вкладке «Условия показа» диалога свойств:
- Укажите, должен ли компонент отображаться, когда условие выполнено (True) или когда не выполнено (False).
- Выберите поле-источник условия из выпадающего списка всех компонентов формы.
- Задайте значение для сравнения. Условие срабатывает при точном совпадении ответа с указанным значением.
Пример
Поле «Укажите номер водительского удостоверения» отображается только тогда, когда в переключателе «Наличие автомобиля» выбран ответ «Да».
Скрытые условностью поля не попадают в отправку, если это явно не разрешено в настройках компонента. Для сложных условий (несколько полей сразу, сравнение чисел, вычисляемые выражения) используйте Продвинутый режим — условия на JSONLogic.
Базовые поля Компоненты
Основные строительные блоки для сбора информации от респондентов, доступные без дополнительных режимов.
Текстовое поле
Однострочный ввод: ФИО, адрес, произвольный текст.
Многострочный текст
Комментарии, отзывы, развернутые ответы.
Число
Возраст, суммы, количественные показатели.
Пароль
Ввод с маскированием символов.
Флажок (Чекбокс)
Согласие с условиями, одиночный переключатель да/нет.
Группа флажков
Множественный выбор: респондент отмечает любое количество вариантов.
Выпадающий список
Выбор одного или нескольких вариантов из компактного списка.
Переключатель (Радио)
Одиночный выбор из 2–5 вариантов (пол, да/нет).
Кнопка
Кнопки действий внутри формы: отправка, сброс, пользовательская логика.
Загрузка файлов Безопасность файлов
Два специализированных компонента загрузки с обязательной антивирусной проверкой.
Файл
Документы, сканы, PDF, архивы.
Фото / Видео
Изображения и видеозаписи с превью.
Механизм безопасной обработки файлов
- Респондент выбирает файл в форме.
- Файл отправляется в защищенный файловый шлюз платформы и помещается во временный изолированный буфер.
- Служба ClamAV проверяет файл на вирусы и вредоносные сигнатуры.
- Чистый файл сохраняется в защищенное S3-хранилище, а в сабмишн формы записывается безопасный уникальный UUID файла.
- Если обнаружен вирус — загрузка блокируется, файл немедленно уничтожается.
Максимальный размер файла задается администратором в «Настройках системы». Программное скачивание загруженных файлов и политики доступа описаны в разделе Скачивание файлов (File API).
Разметка и сетки Layout
Компоненты, которые не собирают данные, но структурируют форму: группируют поля, оформляют текст и управляют расположением.
HTML элемент
Вставка произвольной HTML-разметки: заголовки, разделители, ссылки.
Текстовый блок (Контент)
Форматированный текст-пояснение: инструкции, дисклеймеры, contact-блоки.
Колонки (Разметка)
Размещение полей в один ряд по 12-колоночной сетке: например, «Имя» (6) и «Фамилия» (6).
Группа полей (Fieldset)
Логическая группа полей с общим заголовком и рамкой (легенда).
Панель (Карточка)
Контейнер с заголовком и оформлением. Разделяет длинные анкеты на смысловые блоки («Личные данные», «Опыт работы»).
Таблица
Фиксированная сетка «строки × колонки» для сложных макетов и таблиц-перекрестков.
Вкладки
Переключаемые вкладки внутри одной страницы формы.
Контейнер с рамкой (Well)
Блок с подложкой для визуального выделения группы полей или текста.
Продвинутые поля Продвинутый режим
Эти компоненты появляются в палитре после включения Продвинутого режима в «Настройках системы».
Электронная почта (Email)
Адрес почты со встроенной проверкой формата.
Веб-ссылка (URL)
Адрес сайта или ресурса с проверкой корректности URL.
Номер телефона
Телефон с маской ввода.
Теги
Ввод списка значений «чипами»: навыки, ключевые слова.
Адрес
Структурированный адрес или геопоиск через внешнего провайдера.
Дата и время
Выбор даты и/или времени из календаря.
День (Дата)
Дата из трех выпадающих списков: день, месяц, год.
Время
Выбор времени (часы:минуты) без даты.
Валюта (Сумма)
Денежная сумма с форматированием.
Матрица опроса
Таблица «вопрос × вариант ответа»: респондент отмечает ячейки (например, удовлетворенность параметров).
Цифровая подпись
Рукописная подпись мышью или стилусом на тач-экране.
Компоненты данных Продвинутый режим
Контейнеры для организации структуры ответов и повторяющихся блоков. Доступны в Продвинутом режиме.
Контейнер данных
Группирует вложенные поля в отдельный объект ответа: паспорт: {серия, номер}.
Сетка данных (Таблица)
Повторяющиеся строки с фиксированным набором колонок: члены семьи, адреса, товары.
Карта ключ-значение
Произвольные пары «ключ → значение», задаваемые респондентом на лету.
Динамическая таблица (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 function | JS-функция запрета дат, например 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 Template | HTML-шаблоны отображения заголовка, строки и подвала в режиме просмотра (например, показать строку как «ФИО — должность» одной строкой). Продвинутый |
| 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. Поле ИИН/БИН с маской и проверкой
- Добавьте Текстовое поле, назовите «ИИН/БИН».
- В «Отображении» задайте Маску ввода
999999999999— ровно 12 цифр, и Автозаполнение браузером =off. - Во «Вкладке Валидация»: включите Обязательно, задайте Регулярное выражение
^\d{12}$и понятный текст ошибки: «ИИН/БИН состоит из 12 цифр». - Во «Свойствах API» проверьте ключ поля — например,
iin_bin: под этим именем значение уйдёт в отчёты и вебхуки.
Результат: респондент физически не сможет ввести буквы или лишние цифры, а сервер отклонит неверную длину, даже если форму отправят программно.
🗺 Сценарий 2. Каскадные списки «Область → Город»
- Создайте два Выпадающих списка: «Область» и «Город».
- Обоим задайте Тип источника данных = URL и адрес справочника (свой REST-эндпоинт или словарь платформы
/api/v1/dictionaries/{код}). - У списка «Город» в поле Refresh Options On выберите компонент «Область» — список городов будет перезагружаться при смене области.
- Включите Clear Value On Refresh Options — при смене области ранее выбранный город сбросится (иначе останется город из чужой области).
- В URL-источнике города передавайте выбранную область параметром:
?region={{ data.region }}— так сервер отдаст только подходящие города.
Включите Lazy Load Data у обоих списков, чтобы справочники грузились только при открытии, а не при загрузке формы.
✅ Сценарий 3. Чекбокс согласия на обработку данных
- Добавьте Флажок (Чекбокс) с меткой «Я даю согласие на обработку персональных данных».
- Во «Вкладке Валидация» включите Обязательно для заполнения и задайте текст ошибки: «Требуется согласие на обработку персональных данных».
- Поставьте флажок последним полем перед кнопкой отправки; ссылку на политику добавьте через Текстовый блок (Контент) над чекбоксом.
Не ставьте флажку «Значение по умолчанию = включено»: согласие должно быть осознанным действием.
💾 Сценарий 4. Кнопка «Сохранить черновик»
- Добавьте Кнопку рядом с основной кнопкой отправки.
- В «Действии» выберите Сохранить в состоянии и укажите имя состояния, например
draft. - Выключите Show Validations и Блокировать при ошибках в форме — черновик должен сохраняться даже с незаполненными обязательными полями.
- Задайте тему кнопки «secondary», чтобы визуально отличать от основной кнопки отправки.
Для периодических форм черновики работает вместе с настройкой «Продолжать текущий отчёт» — респондент сможет дозаполнять анкету в течение периода. Подробности: Периодическая отчётность.
👨👩👧 Сценарий 5. Таблица «Члены семьи» с лимитами
- Добавьте Сетку данных (Таблицу) «Члены семьи».
- Внутрь перетащите поля: ФИО (Текстовое поле), дата рождения (Дата и время), степень родства (Выпадающий список из словаря).
- Во «Вкладке Валидация» задайте Минимум/Максимум строк — например, минимум 1, максимум 10.
- В «Add Another Text» напишите «+ Добавить члена семьи», в «Number of Rows» поставьте 1.
В выгрузке Excel каждая строка таблицы попадёт в ответ как отдельный объект массива family_members — одинаковые ключи полей внутри строк обязательны.
📚 Сценарий 6. Выпадающий список из словаря платформы
- Создайте Выпадающий список, источник данных — URL.
- Укажите адрес словаря:
/api/v1/dictionaries/{код словаря}— данные управляются в справочнике записей, без пересборки формы. - Задайте Поле для сохранения (Value Property) по структуре словаря (например,
code), а подпись настройте Шаблоном отображения варианта. - Включите Проверку «Разрешены только варианты из списка», чтобы респондент не отправил значение вне словаря.
При обновлении справочника форма подхватит новые варианты автоматически — ревизия формы не требуется.
Валидация данных и условная логика 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 | Полный объект отправки. |
component | JSON текущего компонента. |
instance | Экземпляр текущего компонента (API поля). |
value | Текущее значение компонента. |
moment | Библиотека работы с датами (например, moment().subtract(10, 'days')). |
_ | Lodash. |
utils / util | Утилиты платформы для работы с формами. |
Ссылайтесь на другие поля по их Property Name (вкладка «Свойства API»), а у Переключателей, Списков и Групп флажков — по значению варианта, а не по его метке.
Все точки входа JavaScript
| Свойство (где находится) | Что пишется |
|---|---|
| JSON-условие показа |
Булево выражение, начинающееся с show =. Пример: поле видно только для одиноких/вдовцов с доходом ниже 45 000: |
| Кастомное значение по умолчанию (JS) |
Вычисляет значение по умолчанию при загрузке формы, например предзаполнение даты: value = moment().format('DD.MM.YYYY'); |
| Калькулируемое значение (JS) |
Присваивание в value; пересчитывается при изменении исходных полей. Пример суммы по строкам таблицы:Рядом: «Вычислять на сервере», «Разрешить ручное изменение». |
| Кастомная JS-валидация |
Выражение, начинающееся с valid =; текущее значение поля — в переменной input; true — поле валидно, строка — текст ошибки. Пример подтверждения email: |
| Триггер «Javascript» |
Условие срабатывания правила — тот же контекст, что и у условий показа; возвращает булево значение. |
| Действие «Значение (Javascript)» |
Изменяет значение поля при срабатывании триггера; доступны row, data, component и result. |
| Действие «Custom Action (Javascript)» |
Произвольный код по событию: скрыть/показать блоки, изменить несколько полей, вызвать событие формы. |
| Своя логика кнопки (Custom) |
Код, выполняемый при нажатии кнопки — например, валидация группы полей и показ диалога. |
| Кастомный источник вариантов |
Заполняет варианты списка из данных формы или внешнего запроса (может вернуть Promise): |
| Условная кнопка добавления строки |
Условие (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 цифр, допустимы пробелы между группами. |
⚠️ Персональные данные
Не запрашивайте ИИН, паспортные данные и реквизиты карт без необходимости: публикация с такими полями должна иметь осмысленное правовое основание и ограниченный круг респондентов (доступ по ролям).