Сквозной проект: обработка заявки

Чистые данные: нормализация и валидация

Содержание курса

Сборка полного workflow: нормализация → валидация → остановка

Теперь собираем всё в одну цепочку. Никаких новых узлов — только то, что уже разобрано, в правильном порядке.

Шаг 1. Form Trigger

Откройте workflow из предыдущего урока. Form Trigger уже настроен: поля «Имя», «Email», «Описание». Если Email помечен как Required, снимите пометку на время теста — нужно проверить, что валидация в IF работает даже когда форма пропускает пустое поле.

Шаг 2. Edit Fields — нормализация

Добавьте узел Edit Fields сразу после Form Trigger и подключите его. Создайте три поля, используя тернарный оператор из предыдущего раздела — он защищает от отсутствующего ключа:

  • name → Expression: {{ $json['Имя'] ? $json['Имя'].trim() : '' }}
  • email → Expression: {{ $json['Email'] ? $json['Email'].trim().toLowerCase() : '' }}
  • description → Expression: {{ $json['Описание'] ? $json['Описание'].trim() : '' }}

После сохранения узла запустите тест формы с корректными данными и проверьте Output Edit Fields — там должны быть уже приведённые значения: без лишних пробелов, email строчными буквами.

Шаг 3. IF — проверка валидности

Добавьте узел IF и подключите его к Edit Fields. В разделе Conditions добавьте условие с типом Expression:

{{ !$json.email || $json.email.trim() === '' }}

Ветка true — невалидный item, ветка false — данные в порядке. Если нужно проверять несколько полей сразу, добавьте второе условие и объедините через OR:

{{ !$json.name || $json.name.trim() === '' }}

Шаг 4. Stop and Error — ветка true

Добавьте узел Stop and Error и подключите его к выходу true узла IF. В поле Error Message напишите конкретное сообщение:

Email обязателен — заявка не принята

Ветку false оставьте пока незаполненной — туда в следующем уроке подключится маршрутизация.

Шаг 5. Тестовый запуск с невалидными данными

Откройте форму по тестовой ссылке Form Trigger и отправьте заявку с пустым Email:

{ "Имя": "  алексей ", "Email": "", "Описание": "Не работает вход" }

Что должно произойти:

  1. Edit Fields обработает item, поле email станет пустой строкой ''.

  2. IF получит item: условие !$json.email || $json.email.trim() === '' вернёт true.

  3. Item уйдёт в ветку true → достигнет Stop and Error.

  4. Узел Stop and Error окрасится в красный, в панели Output появится текст «Email обязателен — заявка не принята».

Это ожидаемый результат. Красный узел — не поломка, а подтверждение: валидация работает, некорректный item остановлен, дальше по цепочке ничего не пошло.

Для полноты картины отправьте форму ещё раз с заполненным Email. IF должен отправить item в ветку false — она пока ни к чему не подключена, и n8n просто не будет делать ничего дальше. Главное — Stop and Error при этом не срабатывает.

Цепочка готова. В уроке 6 к ветке false IF подключится логика маршрутизации — нормализованные и проверенные данные будут использоваться для разделения заявок на обычные и приоритетные.

Поток нормализации, валидации и остановки невалидной заявки

Поток нормализации, валидации и остановки невалидной заявки.