Добавление полей формы
========================

На этом шаге мы наполняем форму полями ввода.
Поля добавляются в соответствии со структурой данных ордера.

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

.. note::

 Важно отметить, что при создании формы обязательным является присвоение компонентам интуитивно понятного кода.
 Для того, чтобы сменить автоматически сгенерированный системой код компонента, необходимо выделить нужный компонент и поменять его код в поле «код компонента» - предпочтительно в виде «тип_название»


Общий принцип добавления полей
------------------------------

Добавление любого поля на форму выполняется по одному и тому же принципу:

1. Выделяется нужная ячейка таблицы.
2. В панели **«Компоненты»** кликом выбирается необходимый компонент.
3. Компонент добавляется в выбранную ячейку.
4. В свойствах компонента выполняется его настройка.

**Здесь мы рассмотрим создание полей на нескольких примерах прямо из ордера.**

Шаги добавления полей на форму
------------------------------
**Шаг 1.** В левую колонку таблицы добавляем компонент **«Неизменяемый текст»**. Для ускорения процесса можно добавить сначала сразу все наименования полей, затем перейти к компонентам. 

**Шаг 2.** В правую колонку добавляем компонент в зависимости от типа данных, указанного в ордере:

* Номер заявки — компонент **«Номер»**.
* Справочные значения — **«Выпадающий список»**.
* Выбор одного варианта — **«Переключатель вариантов»**.
* Текстовые данные — **«Однострочное поле»**.
* Комментарии — **«Многострочный текст»**.
* Файлы - компонент **«Файл»**

**Шаг 3.** Для каждого поля во вкладке **«Свойства»**:

* Задаем код поля (читаемый и содержащий смысловую нагрузку предназначения поля)
* При необходимости отмечаем обязательность 

Поле 1. Порядковый номер заявки
-------------------------------

**Шаг 1.** В левой ячейке таблицы добавляем компонент **«Неизменяемый текст»**,
который используется для отображения названия поля.

В поле **«Надпись»** указывается название 
**«Порядковый номер заявки»**. При необходимости добавляем перевод.

.. figure:: ../resources/img/field_label_static_text.png

   Название поля с использованием компонента «Неизменяемый текст»

**Шаг 2.** В правой ячейке добавляется компонент **«Номер»** из раздела
**«Специальные»**.

Данный компонент будет использовать шаблон номера,
к созданию которого мы перейдем позже.

.. figure:: ../resources/img/field_counter.png

   Компонент «Номер» для порядкового номера заявки

Не забываем поменять код поля на читаемый и содержащий смысл.


Добавление строк в таблицу
--------------------------

Для добавления следующего поля необходимо добавить новую строку в таблицу.

Добавление строки выполняется с помощью стрелки **«вниз»**,
расположенной внизу таблицы.

.. figure:: ../resources/img/add_table_row.png

   Добавление новой строки в таблицу


Настройки текстового поля
-------------------------

Для компонента «Однострочное поле» доступны следующие настройки:

* **Обязательное поле** — делает поле обязательным для заполнения;
* **Заблокировать от изменений** — запрещает пользователю изменять значение;
* **Шифровать данные** — шифрует введенные значения;
* **Маска ввода** — ограничивает формат вводимых данных;
* **Плейсхолдер** — отображает подсказку внутри пустого поля.

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


Поле 2. Статус заказа
--------------------

Поле «Статус заявки» имеет тип данных **«Справочник»**.

**Шаг 1.** В левую ячейку добавляем компонент **"Неизменяемый текст"** и указываем название поле "Статус заявки"

**Шаг 2.** В правую ячейку из раздела "Элементы выбора" добавляем компонент **"Выпадающий список"**


.. figure:: ../resources/img/field_dropdown.png

   Компонент «Выпадающий список»

Настройка возможных значений выполняется во вкладке **«Элементы»**.

Список значений может быть:

* создан вручную с помощью кнопки «Добавить ряд данных»;
* выбран из уже существующих справочников системы.

В режиме заполнения пользователю отображаются значения из столбца
«Наименование», а системным значением является значение из столбца
«Значение».


.. note::
    Компонент «Выпадающий список» имеет следующие настройки:
    
    * «Обязательное поле» - пока не работает
    * «Заблокировать от изменений пользователем» - блокирует выбор значения из справочника пользователем во время редактирования заявки.
    * «Шифровать данные» используется для защиты конфиденциальной информации. Если опция включена, значения поля сохраняются в системе в зашифрованном виде и недоступны для чтения вне платформы. Шифрование включается галочкой в настройках компонента формы. Для пользователей работа с полем не меняется - данные автоматически шифруются при сохранении и расшифровываются при просмотре. Примечание: Для работы функционала необходимо попросить администратора платформы включить использование шифрования.
    * «Позволять поиск» позволяет найти нужное значение в справочнике
    * «Связь с компонентом» позволяет связывать справочники между собой, для фильтрации определенных значений в зависимости от другого справочника.

Убрать
-------------

Компонент «Однострочное поле» используется для ввода и отображения
произвольного текстового значения в одну строку.

.. figure:: ../resources/img/field_text_input.png

   Компонент «Однострочное поле»


Продолжение добавления полей
----------------------------

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

Для каждого поля:

* выбирается соответствующий тип компонента;
* добавляется название поля;
* настраиваются свойства компонента в соответствии с типом данных.

После добавления всех полей форма полностью соответствует
структуре данных ордера и готова к дальнейшей настройке.

.. seealso::

   Дополнительную информацию касательно всех полей и их особенностей можно найти в официальной документации:
   http://rtd.lan.arta.kz/docs/docs-po-platforme-arta-synergy/ru/latest/form/components.html




Результат этапа
---------------

По завершении данного этапа:

* все поля заявки добавлены на форму;
* каждому полю соответствует правильный тип компонента;
* форма готова к настройке форматных ограничений и логики отображения.

В следующем этапе будет выполнена настройка форматов ввода
и масок для отдельных полей.

