Формы. Как сделать поиск для поля, т.е. список с поиском через обращение к БД (autocomplete. search-select)

В настройках столбца формы указываем Список-поиск (select-search).

В GetItem поле извлекается как название сущности, а не ключ.

Реализуем процедуру вида fm_formCode_fieldCode_dict (редактируем через интерфейс).

CREATE PROCEDURE [dbo].[fm_isp_region_dict]
  @username nvarchar(256),
  @itemID nvarchar(128),
  @q nvarchar(128) = ''

AS
BEGIN
    if(isnull(@q, '')='') begin  -- (для обычного select)
        select ' Не выбрано ' Text, 0 Value, 0 Selected
        union
        SELECT gr.name Text, gr.id Value, 0 Selected
        FROM dbo.as_geo_regions gr        
        order by Text
    end
    else begin
        select ' Не выбрано ' Text, 0 Id, getdate() date, '' [desc], 0 type
        union
        SELECT gr.name Text, gr.id id, getdate() date, '' [desc], 0 type
        FROM dbo.as_geo_regions gr
    where name like '%'+@q+'%'
    order by Text
    end
END

Важное отличие - сюда дополнительно передается необязальный параметр @q nvarchar(128)=’’.

В сохранении поля SaveItem нам передается название сущности (а не внешний ключ число):

CREATE PROCEDURE [dbo].[fm_profile_saveItem]
   @username nvarchar(256),
   @itemID  nvarchar(256),
   @fieldemail nvarchar(256) = '',
   @fieldphone nvarchar(256) = '',
   @fieldcity nvarchar(256) = '' -- на входе текст а не ключ-число
AS
BEGIN
    update as_users
    set
        email=@fieldemail,
        phone=@fieldphone,
        regionID=(select top 1 id from as_geo_regions where name=@fieldcity)
    select 1 Result, 'Сохранено' Msg
END

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

Примечание