Внедрение подсказок 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

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

ВАЖНО. Если у вас что-то не отображается (например, в подсказках компании Адрес или ИНН), проверьте написание типа по документации. Например, необходимо писать PARTY, а не party (если написать party, то список работает, но не показывает дополнительные данные).  

Как вызвать 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

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

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

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

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

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

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

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