# Блок: Проверка параметров

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FPnvouH3wTxgOYFuxWZe2%2Fimage.png?alt=media&#x26;token=41c015c2-7c5d-47cb-8e60-301be90e564c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2F78lswy1oXmXVJD1rhbzU%2Fimage.png?alt=media&#x26;token=e67fb222-25d8-4cfd-a7ea-5275f767d53d" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FBLRjRJBuAsYMFQboeZcl%2Fimage.png?alt=media&#x26;token=a4116035-0a82-44e3-bdde-f5b90449893b" alt=""><figcaption></figcaption></figure>

* **Назначение блока:**\
  Этот блок используется для проверки параметров, введённых пользователем, на соответствие требованиям, заданным в блоке "Старт" и программируемых функциях. Он помогает убедиться, что все обязательные параметры указаны, и при необходимости запрашивает недостающие данные.

  #### **Функционал блока**

  1. **Пример проверки входных данных:**
     * Блок анализирует параметры, которые передал пользователь (например, `model`, `minPrice`, `maxPrice`, `color`, `minYear`).
       * Проверяется, соответствуют ли введённые данные обязательным требованиям функций.
  2. **Работа с переменными:**
     * Блок позволяет указать, какие параметры являются обязательными на текущем шаге и должны быть предоставлены для продолжения сценария. Напоминаем, что переменные вы настраиваете в рамках функций в стартовом блоке.
     * Пример переменных :
       * **model** — Модель автомобиля.
       * **minPrice** — Минимальная цена.
       * **maxPrice** — Максимальная цена.
       * **color** — Цвет автомобиля.
       * **minYear** — Год выпуска.
  3. **Дозапрос недостающих данных:**
     * Если пользователь не указал один или несколько параметров, которые вы выбрали в блоке "Проверка параметров блок автоматически отправляет уточняющие вопросы.
     * Пример вопроса: "Какой цвет автомобиля вас интересует?"

  #### **Пример работы**

  1. **Ввод пользователя:**\
     "Мне нужна Лада Веста за 1 000 000 рублей."
     * Введённые параметры:
       * **model:** Лада Веста.
       * **minPrice:** 1 000 000.
     * Отсутствуют параметры:
       * **color**.
  2. **Действия блока:**
     * Блок определяет, что отсутствуют параметры `color` .
     * Отправляет уточняющие вопросы:
       * "Какого цвета должен быть автомобиль?"
  3. **Результат:**
     * После получения недостающих данных параметры передаются в следующий блок или функцию для обработки запроса.

  #### **Преимущества блока**

  * **Гибкость сценария:** Проверяет соответствие введённых данных и дозапрашивает недостающие.
  * **Повышение точности:** Гарантирует, что все необходимые параметры будут получены перед выполнением функции.
  * **Автоматизация:** Исключает ручную проверку данных, обрабатывая их динамически.

### Дополнительная логика работы блока "Проверка параметров"

1. **Проверка нескольких параметров:**

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

   **Пример:**

   * Требуемые параметры: `model`, `color`, `minPrice`.
   * Пользователь ввёл только `model` = "Лада Веста".
   * Блок сначала проверяет `model`, затем переходит к `color` и обнаруживает, что он отсутствует.
   * Запрашивает: "Какой цвет автомобиля вас интересует?"
2. **Все параметры указаны:**

   * Если пользователь указал **все обязательные параметры**, блок не делает дополнительных запросов.
   * Сценарий переходит к следующему блоку в цепочке для дальнейшей обработки.

   **Пример:**

   * Пользователь ввёл `model` = "Лада Веста", `color` = "белый", `minPrice` = 1 000 000.
   * Блок проверяет и подтверждает, что все параметры заполнены.
   * Переход к следующему блоку (например, вызов API для поиска доступных автомобилей).

***

**Итог:**

* **Если параметры отсутствуют:** Запрашивается первый неуказанный параметр.
* **Если все параметры указаны:** Логика сценария продолжается в следующем блоке без дополнительных запросов.

### Примеры реализации

* **Пример вариант №1**

  <figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FRb7jGDf9h0CBqXdIZ83G%2Fimage.png?alt=media&#x26;token=9d6945af-bf75-4c24-a876-d1e29f6fb32b" alt=""><figcaption></figcaption></figure>

  <figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FL3JyT2oxprcvErwK1Z9B%2Fimage.png?alt=media&#x26;token=780ada7e-263f-4557-95a8-b15a3b6affc7" alt=""><figcaption></figcaption></figure>

* **Пример варианта №2**

  <figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FGFENhbhfaSps86ZJMh6F%2Fimage.png?alt=media&#x26;token=0e2570ce-8dfb-41b8-ab28-ff1098165ca8" alt=""><figcaption></figcaption></figure>

  <figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FKvw8FoBg2rdOPD4hP1RW%2Fimage.png?alt=media&#x26;token=b5ff9539-2c2d-422a-bf1c-6e43c0266901" alt=""><figcaption></figcaption></figure>

  <figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2Fp1ffXwcVAi0Wk5agM95o%2Fimage.png?alt=media&#x26;token=3b047988-f55a-4b86-894f-b48c67472ab9" alt=""><figcaption></figcaption></figure>

  <figure><img src="https://1141222632-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvdtSkqUDuO5XM96AcLMV%2Fuploads%2FofHo6MTzhgqHAjkGTTSl%2Fimage.png?alt=media&#x26;token=ac49163a-06aa-4769-86df-2c71b9758dfe" alt=""><figcaption></figcaption></figure>
