Формы. Как добавить новый элемент, если в списке на форме его нет

Вариант 1. Использование полей списка типа select2 с tags=true

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

1. Для поля ставим тип Список 2 (select2).

2. Указываем в GetItems для поля настройку tags=true

-- SELECT 1 в GetItem формы
select '{"tags": true}' options_s47

3. При обработке значений в SaveItem можно делать разбор значения поля. Если это существующий элемент, то просто сохранять поле. Если это несуществующий элемент, то добавлять его сначала в справочник, а затем делать привязку

Примечание: 

При добавлении элемента у него value будет такое как и text. Если у вас для value используются числовые id, то при сохранении проверяйте что пришло, число или нет

if(try_cast(@value as int)=null ) begin 
  -- it's string, new value from user
end else begin 
  -- it's int
end

Вариант 2. Использование Popover формы

Для этого используем формы во всплывающем окне (форма на popover окне).

Через кастомную разметку формы рядом с комбиком элементов добавляем кнопку:

<a href="#" class="as-popover btn btn-secondary btn-lg" data-content="" data-title="Заголовок" data-trigger="click" data-type="primary" data-size="lg" data-formcode="newForm" data-formitemid="">Новый элемент</a>

Также используйте частичное обновление страницы через параметр refreshContainer при сохранении формы

select 1 Result, '' msg, 'body' refreshContainer

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.
Сайт использует Cookie. Правила конфиденциальности OK