Правила преобразования легко потерять внутри workflow: пробелы удаляются в одном параметре, сумма меняет тип в другом узле, а список услуг перестраивается в коде. Тогда заказчику трудно понять, где возникло итоговое значение и что затронет следующая правка.
До сборки сценария составьте матрицу преобразований. Для каждого правила выберите одно основное место выполнения и запишите ожидаемый промежуточный результат. Такой документ не доказывает правильность бизнес-формулы, но делает её доступной для согласования и проверки.
Начать с матрицы преобразований
Сначала перечислите все места, где данные меняются: значение очищается, вычисляется, переименовывается, объединяется, разделяется или получает другой тип. Не выбирайте узлы, пока не определили сами правила.
Для каждого правила заполните поля:
| Поле матрицы | Что записать |
|---|---|
| Идентификатор | Короткое уникальное обозначение правила |
| Вход | Исходное поле, тип и пример значения |
| Операция | Как именно меняется значение или структура |
| Выход | Ожидаемое поле, тип и пример результата |
| Обязательность | Нужно ли значение для продолжения процесса |
| Допустимое отсутствие | Когда поле может отсутствовать или быть пустым |
| Ошибка | Что делать при неверном типе или формате |
| Место реализации | Выражение, Edit Fields, специализированный узел, AI Transform или Code node |
| Причина выбора | Почему это место подходит правилу |
| Промежуточный результат | Что можно сверить до следующего действия |
| Следующий потребитель | Какой шаг использует подготовленное значение |
| Ответственный | Кто утверждает бизнес-правило |
- Поле матрицы
- Идентификатор
- Что записать
- Короткое уникальное обозначение правила
- Поле матрицы
- Вход
- Что записать
- Исходное поле, тип и пример значения
- Поле матрицы
- Операция
- Что записать
- Как именно меняется значение или структура
- Поле матрицы
- Выход
- Что записать
- Ожидаемое поле, тип и пример результата
- Поле матрицы
- Обязательность
- Что записать
- Нужно ли значение для продолжения процесса
- Поле матрицы
- Допустимое отсутствие
- Что записать
- Когда поле может отсутствовать или быть пустым
- Поле матрицы
- Ошибка
- Что записать
- Что делать при неверном типе или формате
- Поле матрицы
- Место реализации
- Что записать
- Выражение, Edit Fields, специализированный узел, AI Transform или Code node
- Поле матрицы
- Причина выбора
- Что записать
- Почему это место подходит правилу
- Поле матрицы
- Промежуточный результат
- Что записать
- Что можно сверить до следующего действия
- Поле матрицы
- Следующий потребитель
- Что записать
- Какой шаг использует подготовленное значение
- Поле матрицы
- Ответственный
- Что записать
- Кто утверждает бизнес-правило
Результат этого этапа — не общая документация workflow, а заполненная матрица места реализации преобразований внутри одной версии сценария.
Разделить подстановку значения и самостоятельный этап
В актуальной документации n8n выражения описаны как способ задать один параметр существующими данными и выполнить лёгкое преобразование или вычисление прямо в поле. Выражение уместно, если значение нужно одному параметру и правило остаётся понятным рядом с ним.
Например, следующий узел может получить подготовленное ранее поле amount_number через выражение. Здесь выражение только подставляет значение, а не скрывает самостоятельную проверку формата суммы.
Если операция имеет отдельный вход и результат, исключения или несколько потребителей, рассмотрите самостоятельный этап. Это проектная рекомендация для проверяемости, а не гарантия n8n: отдельный узел сам по себе не делает формулу правильной.

Разберём ваш рабочий пример и покажем согласованный фрагмент решения до договора и предоплаты.
Выбирать Edit Fields и специализированные узлы по назначению
Документация n8n рекомендует Edit Fields (Set), когда основная задача шага — преобразовать данные с помощью выражений без другой операции. В таком узле можно собрать подготовленный набор полей, изменить или переименовать значения и отдельно увидеть выход шага.
Специализированный узел подходит, когда операция совпадает с его назначением. Например, Split Out предназначен для разделения списка на отдельные элементы, а Aggregate — для их группировки. Эти узлы, как и выражения, доступны в n8n Cloud и Self-hosted согласно предоставленной документации.
Сравнивайте варианты по четырём вопросам:
- Можно ли отдельно увидеть вход и выход правила?
- Понятно ли назначение шага следующему специалисту?
- Что произойдёт при пустом или неверном значении?
- Можно ли проверить результат до внешнего действия?
Отдельный узел не всегда лучше. Простая подстановка для единственного параметра может остаться выражением.
Рассмотреть AI Transform как отдельный вариант
AI Transform генерирует код преобразования по инструкции на естественном языке. В предоставленной актуальной документации n8n этот узел указан как доступный только в Cloud. Перед проектированием всё равно проверьте его фактическую доступность в выбранной редакции и среде.
Сгенерированный код не подтверждает правильность бизнес-правила. Для AI Transform зафиксируйте:
- точную инструкцию;
- входную структуру и контрольные значения;
- ожидаемый выход;
- поведение при пропусках и неверных форматах;
- согласованные ситуации для проверки результата.
Проверяйте полученную логику так же, как написанный вручную код. Текстовая инструкция и успешное выполнение узла не заменяют сверку значений с эталоном.

Использовать Code node для сложных преобразований
Code node в n8n Cloud и Self-hosted предназначен в том числе для сложной перестройки массивов и объектов, обработки множества элементов и собственных алгоритмов. Не требуется сначала доказывать невозможность любого другого способа.
Перед выбором кода сравните понятность, проверяемость и сопровождение вариантов. Затем запишите причину выбора в матрице. До разработки определите:
- входную и выходную структуру;
- правила преобразования;
- возможные ошибки;
- ожидаемый результат для контрольных входов;
- ответственного за поддержку логики.
Code node даёт свободу реализации, но его наличие не доказывает корректность, безопасность или сопровождаемость конкретного алгоритма.
Не распределять одно правило по нескольким местам
Скрытая логика возникает, когда одно значение последовательно меняют в параметре рабочего узла, Edit Fields и Code node. Специалист видит итог, но не может быстро установить, какая операция его сформировала.
Закрепите одно основное место выполнения каждого правила и передавайте дальше подготовленное значение. Свяжите идентификатор правила с названием узла и выходным полем. Если преобразование сознательно повторяется, опишите разные цели операций. Например, очистка телефона для проверки формата и маскирование телефона для журнала — два самостоятельных правила, а не незаметное повторение одного.
Заранее определить обработку пропусков и ошибок
Отсутствующее поле, пустая строка, неверный тип, неоднозначный формат и техническая ошибка требуют разных решений. Для каждого значимого поля заранее выберите подходящее поведение:
- остановить соответствующую ветку;
- передать запись сотруднику;
- оставить поле пустым и добавить явный статус;
- применить заранее согласованное значение.
Универсального режима нет. Проверки, статусы и маршруты исключений нужно спроектировать и испытать. Не подставляйте неподтверждённое значение так, будто оно пришло из исходных данных.
Проверять промежуточные результаты до внешнего действия
Подготовьте контрольные входы по ситуациям, предусмотренным процессом. Выполните только преобразования — без записи в CRM, отправки письма и другого внешнего действия. Затем:
- Сравните каждый промежуточный результат с ожидаемым.
- Установите происхождение значимых значений.
- Проверьте типы, статусы и итоговую структуру.
- Разрешите внешнее действие только после успешной сверки.
Одинаково проверяйте выражения, визуальные узлы, логику AI Transform и пользовательский код. Число примеров определяйте возможными входами и последствиями ошибки, а не произвольной нормой.
Синтетический пример заявки
Ниже — условная демонстрация проектирования, а не клиентский кейс, файл или выполненный тест Switch On AI.
Исходный объект:
name: « Анна Смирнова »
phone: «8 (999) 123-45-67»
amount: «12500.50»
comment: поле отсутствует
services: [«аудит», «прототип»]
Предположим, владелец процесса согласовал такие правила: российский номер из 11 цифр, начинающийся с 8, приводят к формату +7XXXXXXXXXX, а следующему шагу нужна отдельная запись для каждой выбранной услуги.
| Правило | Вход | Ожидаемый выход | Место | Пустое или недопустимое значение |
|---|---|---|---|---|
| T1: убрать внешние пробелы | name со внешними пробелами | name_clean: «Анна Смирнова» | Edit Fields | Пустое имя получает статус проверки и не считается достоверным |
| T2: сохранить и нормализовать телефон | 8 (999) 123-45-67 | phone_raw: «8 (999) 123-45-67», phone_normalized: «+79991234567» | Edit Fields или отдельный этап проверки | Если номер нельзя однозначно привести к согласованному формату, исходное значение сохраняется, а нормализованное не подставляется |
| T3: преобразовать сумму | Строка «12500.50» | amount_number: 12500.50 числового типа | Edit Fields после проверки формата | Недопустимая строка получает статус ошибки, число не выдумывается |
| T4: обозначить отсутствие комментария | Поле отсутствует | comment: null, comment_status: «не передан» | Edit Fields | Отсутствие допустимо и отмечено явно |
| T5: подготовить услуги | [«аудит», «прототип»] | Две записи: одна с услугой «аудит», другая — с услугой «прототип» | Split Out; Code node — для более сложной перестройки | Пустой массив получает статус проверки и не передаётся дальше как заполненный |
- Правило
- T1: убрать внешние пробелы
- Вход
nameсо внешними пробелами- Ожидаемый выход
name_clean: «Анна Смирнова»- Место
- Edit Fields
- Пустое или недопустимое значение
- Пустое имя получает статус проверки и не считается достоверным
- Правило
- T2: сохранить и нормализовать телефон
- Вход
8 (999) 123-45-67- Ожидаемый выход
phone_raw: «8 (999) 123-45-67»,phone_normalized: «+79991234567»- Место
- Edit Fields или отдельный этап проверки
- Пустое или недопустимое значение
- Если номер нельзя однозначно привести к согласованному формату, исходное значение сохраняется, а нормализованное не подставляется
- Правило
- T3: преобразовать сумму
- Вход
- Строка
«12500.50» - Ожидаемый выход
amount_number: 12500.50числового типа- Место
- Edit Fields после проверки формата
- Пустое или недопустимое значение
- Недопустимая строка получает статус ошибки, число не выдумывается
- Правило
- T4: обозначить отсутствие комментария
- Вход
- Поле отсутствует
- Ожидаемый выход
comment: null,comment_status: «не передан»- Место
- Edit Fields
- Пустое или недопустимое значение
- Отсутствие допустимо и отмечено явно
- Правило
- T5: подготовить услуги
- Вход
[«аудит», «прототип»]- Ожидаемый выход
- Две записи: одна с услугой
«аудит», другая — с услугой«прототип» - Место
- Split Out; Code node — для более сложной перестройки
- Пустое или недопустимое значение
- Пустой массив получает статус проверки и не передаётся дальше как заполненный
Простое извлечение amount_number для одного параметра следующего шага можно оставить выражением. Подготовку набора полей удобнее рассмотреть в Edit Fields. В этом примере следующему шагу нужна отдельная запись на каждую услугу, поэтому структурная операция совпадает с назначением Split Out: из массива получатся две записи. Если требуется более сложная перестройка множества элементов или собственный алгоритм, допустим Code node.
AI Transform можно рассматривать в n8n Cloud как способ получить сгенерированную логику из инструкции. В матрице при этом нужно сохранить инструкцию, вход и ожидаемый выход. Результат проходит ту же содержательную проверку, что и ручной код.
Ожидаемый промежуточный результат перед сверкой — две записи с одинаковыми подготовленными полями и разными услугами:
Запись 1
name_clean: «Анна Смирнова»
phone_raw: «8 (999) 123-45-67»
phone_normalized: «+79991234567»
amount_number: 12500.50
comment: null
comment_status: «не передан»
service: «аудит»
validation_status: «ожидает сверки»
Запись 2
name_clean: «Анна Смирнова»
phone_raw: «8 (999) 123-45-67»
phone_normalized: «+79991234567»
amount_number: 12500.50
comment: null
comment_status: «не передан»
service: «прототип»
validation_status: «ожидает сверки»
Это ожидаемый результат учебной последовательности, а не результат запуска n8n. До внешнего действия нужно сверить обе записи с эталоном и отдельно проверить корректный ввод, допустимое отсутствие комментария, недопустимый формат суммы и значимое изменение структуры списка услуг. Только после успешной сверки статус можно изменить на «готово» и разрешить следующее действие.
Сохранить границу с соседними задачами
Выбор места преобразования не заменяет соседние проектные документы:
- контракт данных между этапами описывает структуру обмена, версии и последствия изменения полей;
- руководство по маппингу помогает согласовать соответствие полей разных систем;
- документация workflow описывает уже собранный сценарий.
Матрица из этой статьи отвечает на более узкий вопрос: где внутри одной версии workflow выполняется конкретное преобразование.
Выбранный способ не доказывает правильность бизнес-формулы. Визуальная схема не заменяет эталон, успешное выполнение узла не подтверждает достоверность результата, а документация продукта не свидетельствует о внедрении у клиента.
Что передать исполнителю до разработки
Передайте обезличенный пример входных данных, перечень требуемых полей, матрицу преобразований и описание следующего рабочего действия. Этого достаточно, чтобы обсудить границы сценария и проверки до подключения рабочих систем.
Switch On AI занимается разработкой и внедрением автоматизации. На странице услуг можно выбрать подходящий формат и обсудить интеграцию как передачу данных и действий между существующими системами. Мы можем помочь составить матрицу и подготовить бесплатный прототип ключевого сценария. Прототип не равен полноценному внедрению: состав работ, доступность функций в выбранной редакции n8n, подключения, трудозатраты, эксплуатационные расходы и передача решения согласуются отдельно.
Вопросы по этой задаче
Что выбрать для одного вычисляемого поля: выражение или Edit Fields?
Если значение нужно только параметру текущего действия и преобразование остаётся лёгким, можно использовать выражение. Если подготовка поля стала самостоятельной операцией или результат нужно проверить отдельно, рассмотрите Edit Fields.
Всегда ли отдельный узел понятнее выражения?
Нет. Он полезен, когда делает самостоятельное правило и его результат видимыми. Простая подстановка в единственный параметр может остаться выражением.
Когда использовать Code node?
При сложной перестройке массивов и объектов, обработке множества элементов или собственном алгоритме. Причину выбора нужно зафиксировать, а вход, выход и ошибки — проверить на согласованных примерах.
Когда рассматривать AI Transform?
Когда используется n8n Cloud и нужен черновик логики преобразования из текстовой инструкции. Доступность узла в конкретной среде проверяют отдельно, а сгенерированный результат сверяют с теми же бизнес-правилами, что и ручной код.
Доказывает ли успешное выполнение узла правильность данных?
Нет. Техническое завершение шага не подтверждает, что значения соответствуют согласованной формуле. Нужна сверка промежуточного и итогового результата с ожидаемым.
