Внедрение подсказок dadata на сайт

Введение

В формах можно использовать подсказки dadata как поле формы. 

Пример на демостенде - https://demo.web-automation.ru/list/watch/dadata-suggestions---primery-podskazok-cherez-pole-formy-tipa-dadata---1126

Вы можете использовать подсказки для заполнения адресов, данных по фирмам, странам, ФИАС, email, имена и др.

Как работает механизм подсказок dadata.ru - https://dadata.ru/suggestions/

ВАЖНО. Dadata - внешний платный сервис, имеющих ежедневный лимит в 10 тыс запросов (300 заполнений). Оплата данного сервиса производится отдельно в личном кабинете Dadata.  Тарифы Dadata - https://dadata.ru/pricing/

Как настроить использование подсказок dadata в форме

В GetLayout в SELECT 1 указываем в параметре DadataPublicToken ключ от сервиса dadata (он будет доступен посетителям в скрытом поле as-dadataToken на странице).  

Тип поля формы - dadata (например, поле с кодом f1)

В GetItem формы указываем какой тип подсказок будем извлекать. Все типы подсказок https://dadata.ru/suggestions/usage/#dictionaries

CREATE PROCEDURE [dbo].[fm_ddt_getItem]
    @itemID int,	
	@username nvarchar(256)
AS
BEGIN
  select 'some value'  f1, 
     '{"type": "party"}' options_f1,  
     '{"type": "country"}' options_f2, 
     '{"type": "metro"}' options_f3, 
     '{"type": "email"}' options_f4
  
END

ВАЖНО. В качестве значения необходимо передавать JSON, который мы ранее принимали от Dadata (если там не будет JSON, то поле при загрузке будет выводить значение поля, а внутренним значением поля будет {value: 'текущее значение'}).

В после выбора и сохранения формы. Извлекаем поле f1, в нем будет JSON структура со всеми данными по найденному элементу. 

CREATE PROCEDURE [dbo].[fm_ddt_saveItem]
   @username nvarchar(256), 
   @itemID int,
   @parameters ExtendedDictionaryParameter READONLY	
 
AS
BEGIN
  declare @pf1 nvarchar(max)
  select @pf1 = Value2 from @parameters where [key]='f1'

  print @pf1  -- здесь весь JSON
 
  declare @value nvarchar(max) =  JSON_VALUE (@pf1  , '$.value' ) 
  print @value  -- а здесь извлекаем одно поле. 
END

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

Как вызвать JS коллбек при выборе значения

Иногда требуется что-то сделать при выборе значения из подсказок Dadata (например, заполнить другие поля). 

Для этого прописываем в настройках поля код коллбека и реализуем JS функцию. 

GetItem SQL:

select '' f1, 
  '{"type": "party","callback": "callf1"}' options_f1

JS:

as.callbacks["callf1"] = function(suggestion){
	console.log("sug", suggestion);
}

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

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

Falcon Space

Это снижение стоимости владения

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

Это быстрое внесение изменений

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

адаптация под мобильные устройства. Про юзабилити платформы