Создание строки в таблице - FastCreate

В таблцие есть возможность добавиь кнопку для добавления строки в таблицу по 1 полю - пользователь вводит некий текст (например, название) и создается строка на основе этого текста.

У таблицы ставим галку Быстрое добавление.

За создание строки отвечает процедура FastCreate.

На входе: 

Возвращает модель:

SELECT 1

SELECT 2 Внешние действия

CREATE PROCEDURE [dbo].[crud_newTableTest_fastCreate]
	@filters CRUDFilterParameter READONLY,
	@text nvarchar(256),
	@username nvarchar(32)
AS
BEGIN
	-- создание сущности в таблице по 1 полю @text
	-- извлечение параметров из URL
	declare @filterItemID int
	select @filterItemID = try_cast(Value as int) from @filters where [Key] = 'itemID'


	-- проверки
	declare @id int
	select @id = id from as_trace where code = @text
	if(@id>0) begin
		select 'Элемент с таким кодом уже существует в таблице' Msg, 0 Result
		return
	end


	-- добавление элемента в таблицу
	insert into as_trace(header, code)
	values(@text, @text )

        -- SELECT 1
        select 'Элемент создан' Msg, 1 Result

        -- SELECT 2  Внешние действия

END
 

Создание элемента с поиском по базе (autocomplete) 

Если необходимо реализовать быстрое добавление с выбором данных из справочника (через поиск по БД в autocomplete вместо текстового поля),
то необходимо установить в SELECT 3 GetItems параметр FastCreateSearch = 1 и реализовать (создать через Быстрые действия / RunSQL) дополнительно процедуру следующего вида: 

-- имя содержит префикс _search. Вместо productsForSupplier код вашей таблицы
CREATE  PROCEDURE [dbo].[crud_productsForSupplier_fastCreate_search]
/*На входе строка поиска username, itemID оставлен для
                        совместимости и неиспользуется*/
   @q nvarchar(256),
   @itemID nvarchar(128),
   @username nvarchar(256)
AS
BEGIN
	CREATE TABLE dbo.#result (id int, [text] nvarchar(256), [desc] nvarchar(1024), [type] nvarchar(256), [date] date)

	insert into #result
	select id, name, '', '', getdate()
	  from as_cat_products p

	where name like '%'+@q+'%' and id >2
	-- на выходе - модель id, text, desc, type, date
	select * from #result
	drop table #result
END
go

ВАЖНО! В процедуру FastCreate в итоге приходит не числовой внешний ключ выбранной сущности, а ее текстовое название. 

В процедуру search передается itemID - он заполняется из атрибута data-itemID от сниппета таблицы. 

Добавление элементов с многострочным полем

Если нужен Textarea (многострочное поле) в FastCreate, то ставим в GetItems в SELECT 3 параметр FastCreateTextarea = 1
 
Можно этот вариант использовать для массового создания строк в таблице (одна строка - 1 запись). В FastCreate можно использовать такой код:
insert into t1 
select value from dbo.split(@text, char(10))
where len(value)>0

Либо чуть усложнить вариант ввода, когда пользовать указывает каждую строку в форме 111/222: 

insert into t1 (v1,v2)
select dbo.str_splitPart(value, 1), dbo.str_splitPart(value, 2)  from dbo.split(@text, char(10))
where len(value)>0
В итоге мы создаем множество записей с 2 полями. 
С помощью  FastCreateDialogHeader, FastCreateDialogPlaceholder в SELECT 3 можно подсказать пользователю как надо вводить поле (указать формат ввода или что мы вводим).

Добавление элементов с выбором из некого списка

Если нужен список с несколькими элементами для выбора, то ставим  в GetItems в SELECT 3 параметр FastCreateSelectCol = 'код колонки', где идет код колонки с типом Список (тип редактирования).

Если у вас это поле должно быть нередактируемым в таблице, то создайте дополнительное поле с типом редактирования Список и его используйте только для создания (а на таблице не выводите). 
 
 
Примечание: 

Кастомизация для FastCreate

Используйте в 3 запросе GetItems переменные для переименования основных меток: 

Страница-источник на сайте falconspace.ru