# Логика IF/THEN

## Технический обзор и возможности

{% columns %}
{% column %}
Отчёт **Логика IF/THEN** узел создает интеллектуальные точки ветвления, которые направляют входящие данные по разным путям на основе логических условий. Он получает данные от других узлов, проверяет их по заданным вами условиям и направляет результаты по разным путям в зависимости от того, прошла проверка или нет. Узел позволяет создавать рабочие процессы IF->THEN/ELSE, в которых разные действия выполняются автоматически на основе условий данных в реальном времени.
{% endcolumn %}

{% column %}

<figure><img src="/files/52e22e8de78dcbbb693a1e41f4dc9491fcd6c71b" alt="IF/THEN Logic node tile"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

{% hint style="info" %}
Отчёт **Логика IF/THEN** узлы настраиваются отдельно для каждого потока в пользовательском интерфейсе платформы Navixy. Каждый узел содержит только одну логическую формулу, опираясь на [Navixy IoT Logic Expression Language](/docs/iot-logic-api/technologies/navixy-iot-logic-expression-language.md).\
Для конкретных вариантов синтаксиса, связанных с логическими выражениями, см. [Выражения и синтаксис логики IF/THEN](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md).
{% endhint %}

<figure><img src="/files/611405f443deab3885050aa571df0ebb884e6b68" alt="IF/THEN Logic node positioning in the flow architecture (with inbound and outbound connections)"><figcaption></figcaption></figure>

### Как работают узлы логики IF/THEN

Когда данные впервые поступают в **Логика IF/THEN** узел, система создает пользовательский логический атрибут, который хранит результаты вычисления. Каждый последующий пакет данных оценивается по вашему логическому выражению, обновляя значение этого атрибута и соответствующим образом направляя данные по разным путям:

* **Истинные результаты**: Данные проходят через соединение THEN (зеленое), при этом логический атрибут установлен в значение `true`
* **Ложные результаты**: Данные проходят через соединение ELSE (красное), при этом логический атрибут установлен в значение `false`

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

### Интеграция в архитектуру потока

Логические атрибуты, создаваемые **Логика IF/THEN** узлами, выходят за рамки маршрутизации потока и интегрируются с более широкими возможностями мониторинга Navixy. Поскольку это пользовательские атрибуты, их можно:

* **Мониторить в реальном времени**: Просматривать результаты вычисления в [Data Stream Analyzer](/docs/user/ru/guide/account/iot-logic/data-stream-analyzer.md) для устранения неполадок с условиями и проверки логики
* **Добавлять как пользовательские датчики**: Интегрировать с основным интерфейсом Navixy для постоянного мониторинга

Как пользовательские датчики, эти атрибуты открывают две ключевые возможности:

* **Запускать оповещения**: Вы можете создавать пользовательские правила на основе значения датчика, чтобы получать уведомления в случае отклонений. Подробности о создании правил см. [Правила и уведомления](/docs/user/ru/guide/events-and-notifications.md).
* **Мониторинг сущностей**: Вы можете добавить атрибут в [Список объектов](/docs/user/ru/guide/tracking/objects-list.md) виджет, чтобы отслеживать его значение вместе с другими показаниями устройства. Подробности о том, как создать пользовательский датчик из атрибута IoT Logic, см. [Отображение новых вычисленных атрибутов на платформе Navixy](/docs/user/ru/guide/account/iot-logic/nodes/initiate-attribute-node/displaying-new-calculated-attributes-on-the-navixy-platform.md).

{% hint style="info" %}
Отчёт **Логика IF/THEN** узел требует подключения как минимум к одному предыдущему узлу (**Источник данных** или к другим узлам обработки), чтобы получать входные данные для проверки.
{% endhint %}

### Возможности узла

Отчёт **Логика IF/THEN** узел предлагает:

* **Условную маршрутизацию данных**: Создавайте рабочие процессы с ветвлением, которые автоматически направляют данные на основе логических выражений, возвращающих истинные или ложные результаты.
* **Проверку в реальном времени**: Проверяйте входящие данные устройства на соответствие бизнес-правилам и эксплуатационным порогам по мере их поступления.
* **Поддержку сложных условий**: Объединяйте несколько параметров с помощью логических операторов (AND, OR и т. д.) для принятия более сложных решений.
* **Условия на основе геозон**: Ссылайтесь на именованные геозоны Navixy напрямую в выражениях с помощью `inGeofence()`, `enterGeofence()`и `leaveGeofence()` функций, без ручного сравнения координат. См. [Функции геозоны](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/geofence-functions.md).
* **Создание атрибутов**: Создавайте логические атрибуты, которые записывают результаты проверки для использования в других узлах, системах мониторинга Navixy и сторонних сервисах.
* **Гибкие выходные пути**: Направляйте данные через соединения THEN (истина) и ELSE (ложь), чтобы запускать разные последующие действия.

## Параметры настройки

{% columns %}
{% column valign="middle" %}
Отчёт **Логика IF/THEN** узел позволяет вам задавать условные выражения, которые оценивают входящие данные и создают ветвящиеся пути в вашем потоке на основе результатов.
{% endcolumn %}

{% column %}

<figure><img src="/files/37ff5afa49ab7ae4a1955f31f8473528756263d4" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

Давайте посмотрим, какие элементы использует этот узел и что можно настроить при работе с ним.

### Этапы настройки

{% stepper %}
{% step %}
**Укажите имя узла**

Введите описательное имя для этого **Логика IF/THEN** .

* Используйте имя, которое ясно определяет цель проверки (например, *Проверка тревоги по температуре*, *Обнаружение превышения скорости*).
* Это имя будет отображаться на схеме потока для удобства идентификации.
  {% endstep %}

{% step %}
**Задайте имя выражения**

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

* Этот атрибут будет отображаться в [Data Stream Analyzer](/docs/user/ru/guide/account/iot-logic/data-stream-analyzer.md) и станет доступен для использования в последующих узлах.
* Используйте описательные имена, например *high\_temperature\_alert* или speed\_violation\_detected.
* Если имя не указано, система автоматически сгенерирует имена вроде *logic\_1*, *logic\_2* .
  {% endstep %}

{% step %}
**Создайте условное выражение**

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

* Используйте [логические операторы в соответствии со синтаксисом Navixy Expression Language](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md) для ссылки на параметры устройства и вычисленные атрибуты.
* Для корректной работы узла выражение должно возвращать логическое значение (true/false).
* Используйте [функцию автодополнения](/docs/user/ru/guide/account/iot-logic/nodes/initiate-attribute-node/managing-attributes.md#autofill-attribute-names) для выбора доступных атрибутов из подключенных источников данных.
* Чтобы сослаться на геозону Navixy как на условие, используйте [выбор геозоны](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/geofence-functions.md) в поле выражения.
  {% endstep %}

{% step %}
**Сохраните конфигурацию узла**

Нажмите **Примените изменения** чтобы завершить создание узла.
{% endstep %}

{% step %}
**Подключите выходные пути**

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

* **Соединение THEN** (зеленое): Подключается к узлам, которые должны обрабатывать данные, когда выражение оценивается как истинное.
* **Соединение ELSE** (красное): Подключается к узлам, которые должны обрабатывать данные, когда выражение оценивается как ложное или null.
* Соединение THEN обязательно, а соединение ELSE — необязательно.
  {% endstep %}
  {% endstepper %}

{% hint style="info" %}
Когда логические выражения не могут быть вычислены из-за значений null, недопустимых типов данных или синтаксических ошибок, результат считается `false`, и данные проходят по пути ELSE.
{% endhint %}

Для подробной информации о синтаксисе выражений, операторах и поведении потока данных см. [Выражения и синтаксис логики IF/THEN](/docs/user/ru/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md).

## Выходные соединения и поток данных

Отчёт **Логика IF/THEN** узел создает два отдельных выходных пути на основе результатов вычисления выражения.

<figure><img src="/files/59c0b464e8e917fe76fb487bcf250071eadafa02" alt="IF/THEN Logic node showing THEN and ELSE connections with green and red color coding"><figcaption></figcaption></figure>

### Соединение THEN (<mark style="color:green;">green</mark>)

* **Активируется, когда**: Логическое выражение возвращает `true`.
* **Требование к соединению**: Обязательно — каждый узел логики IF/THEN должен иметь как минимум один выход THEN.
* **Несколько соединений**: Может подключаться к нескольким последующим узлам для параллельной обработки.
* **Типичные варианты использования**: Запуск оповещений, специальная обработка, условные вычисления или направление данных к определенным конечным точкам.

### Соединение ELSE (<mark style="color:красное;">красное</mark>)

* **Активируется, когда**: Логическое выражение возвращает `false`, `null`, или возникают ошибки вычисления.
* **Требование к соединению**: Необязательно — используйте только тогда, когда нужно обработать отрицательные результаты.
* **Обработка ошибок**: Обрабатывает случаи, когда выражения не могут быть вычислены из-за отсутствующих данных или синтаксических ошибок.
* **Типичные варианты использования**: Ведение журналов неудачных проверок, маршрутизация данных по альтернативным путям обработки или продолжение обычной работы.

### **Требование к терминальному узлу**

При подключении к терминальным узлам ([Действие](/docs/user/ru/guide/account/iot-logic/nodes/action-node.md), [Webhook](/docs/user/ru/guide/account/iot-logic/nodes/webhook-node.md)) , которые не поддерживают исходящие соединения, создайте параллельные соединения, чтобы и терминальный узел, и конечная точка вывода получали данные:

<figure><img src="/files/daa40016ed78a478edb3c1fd04e698029f0e5cc2" alt=""><figcaption></figcaption></figure>

**Почему обе ветви должны иметь конечные точки вывода:**

* Обеспечивает сохранность данных и видимость системы
* Позволяет выполнять проверку потока
* Обе ветви могут использовать один и тот же узел Output Endpoint

{% hint style="danger" %}
**Ошибка проверки:** Потоки без конечных точек вывода на всех ветвях не удастся сохранить, и будет выдана ошибка.
{% endhint %}

## Часто задаваемые вопросы

#### Могу ли я использовать атрибуты, созданные другими узлами, в выражениях логики IF/THEN?

Да. **Логика IF/THEN** узлы могут ссылаться на любые атрибуты, доступные из подключенных источников данных, включая исходные параметры устройства и атрибуты, вычисленные предыдущими **Инициировать атрибут** узлами. Функция автодополнения помогает выбирать из всех доступных атрибутов.

#### Что произойдет, если в моем выражении есть синтаксические ошибки?

Если выражение содержит синтаксические ошибки или не может быть вычислено, **Логика IF/THEN** узел считает результат как `false` и направляет данные через соединение ELSE. Проверьте синтаксис выражения и убедитесь, что все упомянутые атрибуты существуют в вашем потоке данных.

#### Могу ли я подключить несколько узлов к одному выходу узла логики IF/THEN?

Да. И соединения THEN, и ELSE поддерживают несколько исходящих соединений, позволяя запускать несколько разных действий на основе одного и того же логического условия. Это обеспечивает параллельную обработку для сложных бизнес-процессов.

#### Как мне отслеживать результаты узла логики IF/THEN?

Результаты узла логики IF/THEN отображаются как логические атрибуты в [Data Stream Analyzer](/docs/user/ru/guide/account/iot-logic/data-stream-analyzer.md) таблице. Выберите свои устройства и найдите имя атрибута, которое вы указали в поле имени выражения. Значения будут отображаться как `true` или `false` в зависимости от результатов вычисления.

#### Можно ли соединять несколько узлов логики IF/THEN последовательно?

Да. Вы можете последовательно соединять **Логика IF/THEN** узлы, чтобы создавать сложные деревья решений. Каждый **Логика IF/THEN** узел может ссылаться на логические атрибуты, созданные предыдущими **Логика IF/THEN** узлами, что позволяет создавать сложные многоэтапные рабочие процессы проверки.

<figure><img src="/files/a3355bdf291ab78fd7ab1d6be1d86a5c6cf3c9ac" alt="Example flow showing multiple IF/THEN Logic nodes connected in sequence for complex decision trees"><figcaption></figcaption></figure>

#### Почему ветви логики IF/THEN должны подключаться к конечным точкам вывода?

Каждая ветвь логики IF/THEN должна завершаться в конечной точке вывода для проверки потока данных и видимости системы. При использовании терминальных узлов (Action, Webhook), которые не поддерживают исходящие соединения, создайте параллельное соединение от узла логики IF/THEN напрямую к конечной точке вывода. При необходимости обе ветви могут использовать одну и ту же конечную точку вывода.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://navixy.com/docs/user/ru/guide/account/iot-logic/nodes/logic-node.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
