Пока только "организации".
Настройка:
1. Указать ваш ключ "DaData" (бесплатно получается в личном кабинете сервиса).
2. Сопоставить переменные DaData с вашими id полей (указываются просто числом):
- поле для поиска (оно же "выпадашка", в него же будет сохраняться "наименование")
- остальные поля формы для заполнения (в неиспользуемых оставляется ноль).
Работа:
DaData "Организации":
Код: Выделить всё
///////////// https://dadata.ru/suggestions/usage/party////////////////
/******/ var Дадата = new Object(); Дадата.Поля = new Object();/******/
///////////////////////////////////////////////////////////////////////
// //
// ЗАПОЛНИТЕ ПЕРЕМЕННЫЕ НИЖЕ //
// Строго по шаблону не трогая запятые и двоеточия! //
// Последнее значение массива должно быть без запятой //
// //
// //
///////////////////////////////////////////////////////////////////////
Дадата.Токен = '8c6ee..ваш токен DaData...1ff77dfb';
Дадата.Поле_поиска = 566; // = "Наименование компании" (value)
// Формат заполнения - "Поле дадата: id вашего поля в форме"
Дадата.Поля = {
ИНН: 563,
КПП: 568,
ОГРН: 569,
Дата_выдачи_ОГРН: 603,
Тип_организации: 604,
Полное_наименование: 605,
Краткое_наименование: 606,
Фамилия_ИП: 607,
Имя_ИП: 608,
Отчество_ИП: 609,
ОКАТО: 610,
ОКТМО: 611,
ОКПО: 612,
ОКОГУ: 613,
ОКФС: 614,
ОКВЭД: 615,
Версия_ОКВЭД_год: 616,
ОКОПФ: 617,
Полное_название_ОПФ: 618,
Краткое_название_ОПФ: 619,
Версия_справочника_ОКОПФ_год: 620,
ФИО_руководителя: 582,
Должность_руководителя: 581,
Количество_филиалов: 621,
Тип_подразделения: 622,
Адрес_одной_строкой: 623,
Адрес_полный_с_индексом: 624,
// Гранулярный_адрес["postal_code"]: 625, // пока недоступен
/* Примеры:
Гранулярный_адрес["postal_code"] = 123, // 308002
Гранулярный_адрес["country"] = 456, // Россия
//... и так далее, по схеме:
Гранулярный_адрес["параметр"] = id поля в форме
Весь список параметров можно найти тут: https://dadata.ru/api/suggest/address/
*/
Адрес_как_в_ЕГРЮЛ: 564,
Код_проверки_адреса: 626,
Дата_последних_изменений: 627,
Дата_регистрации: 628,
Дата_ликвидации: 629,
Cтатус_организации: 630
}
///////////////////////////////////////////////////////////////////////
/// Часть скрипта ниже - обновляемая и может быть скопирована в ваш //
/// код отдельно (чтобы не трогать уже заполненные выше параметры) //
///////////////////////////////////////////////////////////////////////
</script>
<link href = "https://cdn.jsdelivr.net/npm/suggestions-jquery@21.6.0/dist/css/suggestions.min.css" rel = "stylesheet"/>
<script src = "https://cdn.jsdelivr.net/npm/suggestions-jquery@21.6.0/dist/js/jquery.suggestions.min.js" ></script>
<script>
$("#fields_" + Дадата.Поле_поиска).focus(function() { // focusin
// console.log('focusin');
// таймаут
var waitSuggestions = function(){
if( typeof($("#fields_" + Дадата.Поле_поиска).suggestions) != 'undefined'){
$("#fields_" + Дадата.Поле_поиска).suggestions({
token: Дадата.Токен,
type: "PARTY",
count: 4,
onSelect: function(suggestion) {
clearFields();
function ff(loc,remote){
if (loc > 0){
try {
return $("#fields_" + loc).val(remote).blur();
} catch(e){
console.log(e);
}
}
}
function ts_to_date_str(timestamp){
if (!timestamp) {return null} else {
return new Date(timestamp).toLocaleDateString();
}
}
ff(Дадата.Поле_поиска, suggestion.value);
with (Дадата.Поля) {
with (suggestion) {
try {ff(ИНН, data.inn); } catch(e){}
try {ff(КПП, data.kpp); } catch(e){}
try {ff(ОГРН, data.ogrn); } catch(e){}
try {ff(Дата_выдачи_ОГРН, ts_to_date_str(data.ogrn_date)); } catch(e){}
var ddt_dt = '';
try {
if (data.type == 'LEGAL'){ddt_dt = "Юридическое лицо"} else
if (data.type == 'INDIVIDUAL'){ddt_dt = "Индивидуальный предприниматель"}
ff(Тип_организации, ddt_dt);
} catch(e){}
try { ff(Полное_наименование, data.name.full_with_opf); } catch(e){}
try { ff(Краткое_наименование, data.name.short_with_opf); } catch(e){}
try { ff(Фамилия_ИП, data.fio.surname); } catch(e){}
try { ff(Имя_ИП, data.fio.name); } catch(e){}
try { ff(Отчество_ИП, data.fio.patronymic); } catch(e){}
try { ff(ОКАТО, data.okato); } catch(e){}
try { ff(ОКТМО, data.oktmo); } catch(e){}
try { ff(ОКПО, data.okpo); } catch(e){}
try { ff(ОКОГУ, data.okogu); } catch(e){}
try { ff(ОКФС, data.okfs); } catch(e){}
try { ff(ОКВЭД, data.okved); } catch(e){}
try { ff(Версия_ОКВЭД_год, data.okved_type); } catch(e){}
try { ff(ОКОПФ, data.opf.code); } catch(e){}
try { ff(Полное_название_ОПФ, data.opf.full); } catch(e){}
try { ff(Краткое_название_ОПФ, data.opf.short); } catch(e){}
try { ff(Версия_справочника_ОКОПФ_год, data.opf.type); } catch(e){}
try { ff(ФИО_руководителя, data.management.name); } catch(e){}
try { ff(Должность_руководителя, data.management.post); } catch(e){}
try { ff(Количество_филиалов, data.branch_count); } catch(e){}
var ddt_dbt ='';
try { if (data.branch_type == "MAIN") {ddt_dbt = "Головная организация"} else
if (data.branch_type == "BRANCH") {ddt_dbt = "Филиал"}
ff(Тип_подразделения, ddt_dbt); } catch(e){}
try { ff(Адрес_одной_строкой, data.address.value); } catch(e){}
try { ff(Адрес_полный_с_индексом, data.address.unrestricted_value); } catch(e){}
try { ff(Гранулярный_адрес, data.address.data); /*console.log(data.address.data)*/} catch(e){}
try { ff(Адрес_как_в_ЕГРЮЛ, data.address.data.source); } catch(e){}
try { ff(Код_проверки_адреса, data.address.data.qc); } catch(e){}
try { ff(Дата_последних_изменений, ts_to_date_str(data.state.actuality_date)); } catch(e){}
try { ff(Дата_регистрации, ts_to_date_str(data.state.registration_date)); } catch(e){}
try { ff(Дата_ликвидации, ts_to_date_str(data.state.liquidation_date)); } catch(e){}
var ddt_dts = '';
try {
if (data.state.status == 'ACTIVE'){ddt_dts = 'Действующая'} else
if (data.state.status == 'LIQUIDATING'){ddt_dts = 'Ликвидируется'} else
if (data.state.status == 'LIQUIDATED'){ddt_dts = 'Ликвидирована'} else
if (data.state.status == 'BANKRUPT'){ddt_dts = 'Банкротство'} else
if (data.state.status == 'REORGANIZING'){ddt_dts = 'В процессе присоединения к другому юрлицу, с последующей ликвидацией'}
ff(Cтатус_организации, ddt_dts);
} catch(e){}
}
}
},
onSearchComplete: function(query, suggestions) {
$(".suggestions-promo").css("display", "none");
},
onSearchError: function(query, jqXHR, textStatus, errorThrown) {
$(".suggestions-promo").css("display", "none");
},
onSuggestionsFetch: function(suggestions) {
$(".suggestions-promo").css("display", "none");
} ,
onSelectNothing : function (query) {
}
});
} else {
setTimeout(waitSuggestions, 1000);
}
}
waitSuggestions();
// таймаут
});
function clearFields(){
for (let i = 0; i < Object.keys(Дадата.Поля).length; i++) {
$("#fields_" + Дадата.Поля[Object.keys(Дадата.Поля)[i]])
.val(null)
.removeClass('unique-error error')
.next(".error").remove();
}
}
$("#fields_" + Дадата.Поле_поиска).on("input", function() {
if ($("#fields_" + Дадата.Поле_поиска).val() == "") {
clearFields();
}
});
</script>
<script>