Чистка данных в ФИО через dadata. Подключение к Dadata API. Коррекция ввода данных человека

Впишите ФИО в первое поле и смените фокус - остальные поля подгрузятся автоматически на основе данных dadata

Dadata накладывает лимит (возможно форма не будет выдавать результата из-за превышения лимита API)

Как реализовать 

1. Создаем исходящий метод API dadataFIO (формат JSON, метод POST).

Request процедура: 

CREATE PROCEDURE [dbo].[api_dadataFIO_request]
	@parameters ExtendedDictionaryParameter READONLY,  -- входящие параметры для внутренней обработки (используйте Key, Value2)
	@username nvarchar(32)  -- текущий пользователь.
AS
BEGIN
	declare @val nvarchar(max) = ''
    select @val = Value2 from @parameters where [Key]='val'
    
	-- SELECT 1  Msg, Result, Url (адрес, куда будет идти запрос)
	select '' Msg, 1 Result, 'https://cleaner.dadata.ru/api/v1/clean/name' Url  --, 'application/json' ContentType

	-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
    select 'Authorization' name, 'Token '+ '__________API TOKEN ________________' value, 'header' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL  
    union
    select 'X-Secret' name, '____________SECRET KEY _________________' value, 'header' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL  
   union
    select 'json' name, '["'+@val+'"]' value, 'json' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL  
END

Response процедура без изменений: 

CREATE PROCEDURE [dbo].[api_dadataFIO_response]
	@response nvarchar(max),
	@parameters ExtendedDictionaryParameter READONLY, 
	
	@username nvarchar(32)
AS
BEGIN
	-- SELECT 1
	select '' Msg, 1 Result, @response Response
END

2. Размещаем на странице элементы: 

<input type="text" class="form-control as-dadataFio" value="Сергей Иванович Маховико">
<input type="text" class="form-control genitiveFIO" value="" placeholder="Кого">
<input type="text" class="form-control dativeFIO" value="" placeholder="Кому">
<input type="text" class="form-control ablativeFIO" value="Кем">
<input type="text" class="form-control surnameFIO" value="" placeholder="Фамилия">
<input type="text" class="form-control nameFIO" value="" placeholder="Имя">
<input type="text" class="form-control patronymicFIO" value="" placeholder="Отчество">
<input type="text" class="form-control genderFIO" value="" placeholder="Пол">

3. Создаем JS с Request JS: 

<script>
$(function(){
  	$(document).on('change', '.as-dadataFio', function (e) {
      var el = $(this);
      var val = $(this).val();
      if(!val) return;      
      as.sys.request("dadata", "fio", {
            data: { val: val },
            onSuccess: function (data) {
              try{
                console.log("Data from RequestJS", data)
              	var s = JSON.parse(data.additionalData);
                var items  = s[0].items;
                console.log("items", items);
                for(var i = 0; i<items.length;i++){
                  	console.log("items[i]", items[i])
                	if(items[i].key =='response'){
                    	var apiInfo = JSON.parse(items[i].value2)[0]; 
                      	console.log("apiInfo", apiInfo)
                        
                      $('.genitiveFIO').val(apiInfo.result_genitive);
                      $('.dativeFIO').val(apiInfo.result_dative);
                      $('.ablativeFIO').val(apiInfo.result_ablative);
                      $('.surnameFIO').val(apiInfo.surname);
                      $('.nameFIO').val(apiInfo.name);
                      $('.patronymicFIO').val(apiInfo.patronymic);
                      $('.genderFIO').val(apiInfo.gender);
                    }
                }
              }catch(ex){              
              }
            }   
      });		
    });   
});  
</script>

4. Создаем процедуру-обработчик для RequestJS: 

create or alter PROCEDURE [dbo].[request_dadata_fio]
	@parameters ExtendedDictionaryParameter READONLY,  -- or ExtendedDictionaryParameter
	@username nvarchar(32)
AS
BEGIN
	declare @val nvarchar(max) = ''
	select @val = isnull(Value2, Value) from @parameters where [Key]='val'

    -- SELECT 1 Msg, Result
	select 'OK' Msg, 1 Result

    -- SELECT 2 Основные данные в виде произвольной таблицы
    select 1 t1

     -- SELECT 3 Внешние действия
	 select 'apirequest' type, 
		'dadataFIO' code, 
		'val' p1_name, @val p1_value
END

Другие модули

Последние обновления

SQL-инструмент для создания личных кабинетов на сайте

Суть подхода и история создания Falcon Space

Платформа Falcon Space

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

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

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

по ходу эксплуатации программы

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

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