Работа с формами

Компонент Форма

Форма позволяет вывести некую информацию о некотором объекте (например, карточка клиента). Форма может иметь некоторые поля и кнопки выполнения операции (например, Сохранить).

 

Способы вывода формы на странице

Форму можно вывести в следующих вариантах: 

1. Просто сразу на странице в виде сниппета div с классом as-form

<div class="as-form" data-code="x1" data-itemid="0"></div>

2. Как ссылка на модальную форму. Подробнее про форму в модальном окне.

3. Как контекстное окно рядом с кнопкой (окно закрывается по нажатию на крестик). Подробнее про popover формы.

4. Как выпадающее окно рядом с кнопкой (окно закрывается по нажатию вне окна). Подробнее про dropdown формы.

5. Загрузка формы по ссылке в некий контейнер на странице. Подробнее про загрузку форм по ссылке.  

 
Пример форм можно посмотреть на демостенде компонентов.
 
Формы используются для создания сущностей (передан itemID=0), а также для редактирования параметров некой сущности (itemID>0).
Форма может содержать либо стандартную, либо кастомную разметку (в форму можно помещать другие компоненты, например таблицы, формы, файлы и т.д.).

Howto по формам можно посмотреть здесь - howto по формам Falcon Space.
 
Есть отдельное пошаговое руководство как создать форму

Настройка хранимых процедур для формы

Какие есть процедуры у формы: 

Как создать форму по шагам

Для создания формы необходимо сделать следующее:

Работа с внешним источником API в форме

Среди настроек формы есть 3 параметра подключения внешних источников (коды API запросов через запятую, для выполнения исходящих запросов при различных событиях формы):

Результат ответ запроса API передается в хранимую процедуру через параметр @parameters ExtendedDictionaryKey (в Key пишется код запроса). 

Документация по запросам API

Решение проблем

Не получается корректно сохранить скрипт в форме

При использовании script

при кастомной разметке формы возникает проблема вложенных тегов script. Поэтому не используйте для формы кастомную разметку в случае если планируется эту форму использовать для редактирования каких-либо скриптов (теги script, например счетчики). 

Ошибка при начальной загрузке формы

fm_{code}_getItem - всегда должен возвращаться какой-то результат. Если ваша форма на добавление, то можете просто возвращать select 1.

Криво выводятся подписи для элементов формы

Используйте разметку bootstrap для скелета формы (классы row, col-md-X и т.д.). Для меток используйте тег label с классом as-form-cap.

Множественный вызов GetItem процедуры

Дело в том, что процедура GetItem вызывается не только при первичной загрузке формы, но и при выполнении значимых действий (инициализация объекта формы) - при сохранении, при отслеживании изменения поля или сохранения одиночного поля и т.д.

Если вам необходимо отследить первый инициализирующий запуск GetItem, то используйте параметр isMainLoadForm в @parameters.

Пример: 

CREATE PROCEDURE [dbo].[fm_myForm_getItem]    
@itemID nvarchar(256), 
@username nvarchar(256),    
@parameters ExtendedDictionaryParameter readonly
AS
BEGIN 
    declare @isMainLoadForm bit = (select try_cast(value2 as bit) from @parameters where [Key]='isMainLoadForm')
    print @isMainLoadForm
END

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

Дополнительные материалы

  1. Как создать форму для редактирования сущности
  2. Как сделать кастомную HTML разметку для формы
  3. Как установить некоторые поля в форме по умолчанию при загрузке
  4. Как сделать модальную форму 
  5. Как вывести форму во всплывающем окне рядом с кнопкой (popover)
  6. Как передать в форму скрытый параметр
  7. Загрузка формы по ссылке
  8. Формы с множественным входными данными (несколько data-itemID)
Страница-источник на сайте falconspace.ru