Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Внедрение подсказок 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 на странице).
Важно. Если вы используете форму на ленде, то эта настройка DadataPublicToken не добавляет нужное поле hidden, и его надо прописать вручную (перед закрывающим тегом body):
<input type="hidden" class="as-dadataToken" value="..тут ваш токен...">
Тип поля формы - 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, то список работает, но не показывает дополнительные данные).
Если возникает ошибка чтения JSON, необходимо отключить стандартную обработку поля в плане атаки XSS и использовать ее облегченный вариант через функцию dbo.as_antiXSSLite
Как вызвать JS коллбек при выборе значения
Иногда требуется что-то сделать при выборе значения из подсказок Dadata (например, заполнить другие поля).
Для этого прописываем в настройках поля код коллбека и реализуем JS функцию.
GetItem SQL:
select '' f1,
'{"type": "party","callback": "callf1"}' options_f1
JS:
as.callbacks["callf1"] = function(suggestion){
console.log("sug", suggestion);
}
Ограничение выборки адресов по стране
Для того, чтобы искать адреса других стран, необходимо указать спец поле as-dadataCountry на странице:
<input type="hidden" class="as-dadataCountry" value="Казахстан">
Значение поля - название страны (Казахстан, Берарусь и т.д.).
Для снятия ограничения по стране можно использовать значение "*".
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта