Дискретные подсказки для адреса
Кроме подсказок по контактным данным физических лиц Ахантер позволяет организовать быстрое заполнение форм с реквизитами юридических лиц или индивидуальных предпринимателей. Кроме скорости заполнения, подсказки по компаниям помогают вводить информацию без ошибок, а также определять, действует ли юридическое лицо или ИП в настоящий момент и не находится ли оно в процессе ликвидации. Эти данные Ахантер берёт из ЕГРЮЛ и ЕГРИП.
При использовании подсказок предполагается, что приложение пользователя или веб-сайт содержит некоторую форму, в которой есть одно или несколько полей для ввода реквизитов юридического лица или индивидуального предпринимателя. Основными сведениями, по которым выполняется поиск компании в ЕГРЮЛ и предпринимателей в ЕГРИП, являются название, ОГРН, ИНН, ФИО руководителя, а также адрес регистрации. Полагается, что при вводе этих сведений, пользователь находит нужную компанию среди предложенных подсказок, выбирает её, после чего получает расширенный набор сведений, имеющийся в ЕГРЮЛ или в ЕГРИП.
К таким сведениям относятся информация о регистрации в ФНС, ПФР и ФСС, коды КПП и ОКВЭД, информация об имеющихся лицензиях. Для юридических лиц дополнительно можно получить перечень учредителей, информация о структуре уставного капитала, ФИО руководителей, а также сведения о филиале или представительстве.
Для получения подсказок при заполнении реквизитов компаний мы добавили в API Ахантера специальную функцию, выполняющую поиск юридических лиц в ЕГРЮЛ по их ОГРН, ИНН, названиям, адресам и ФИО руководителей, а также поиск индивидуальных предпринимателей в ЕГРИП по их ОГРНИП, ИНН, адресам и ФИО. По некоторому, частично введённому, фрагменту этих сведений данная функция предлагает список из нескольких наиболее подходящих компаний. Все эти сведения можно вводить одновременно в одно общее поле. Также есть возможность вводить эти данные в разные поля, для этого в Ахантере есть дискретные подсказки по ЕГРЮЛ и ЕГРИП.
Чем больше сведений об искомой компании пользователь уже ввёл, тем более точные подсказки предлагает Ахантер. Однако следует помнить, что в ЕГРЮЛ и ЕГРИП есть много одноимённых компаний, поэтому часто для успешного поиска кроме названия желательно частично указать адрес компании или фрагмент её ИНН/ОГРН.
Приведенная ниже форма демонстрирует работу данной функции. Для отображения подсказок достаточно начать вводить какие-нибудь сведения об искомой компании.
Здесь для отображения подсказок используется наш JavaScript-модуль ahunter_suggest.js, скачать его можно по следующей ссылке. Модуль использует библиотеку jQuery, поэтому, чтобы запустить подсказки у вас на сайте, в дополнение к ahunter_suggest.js нужно будет установить свежую версию jQuery.
Чтобы всё это заработало, мы использовали здесь следующий JavaScript-код.
//готовим опции модуля var options = { id : 'js-CompanyField', limit : 6 }; //запускаем модуль AhunterSuggest.Company.Solid( options );
Детальное описание этого кода, а также описание подготовки вашего сайта к использованию подсказок приводится далее в этой статье.
В большинстве случаев для работы с подсказками бывает достаточно использовать модуль ahunter_suggest.js. Однако если вам нужно встроить подсказки в отдельное приложение, либо если у вас есть своё JavaScript решение для отображения подсказок, то для получения подсказок от Ахантера нужно будет использовать напрямую его REST API. Соответствующее описание приводится во второй части данной статьи.
Чтобы добавить подсказки для юридических лиц и индивидуальных предпринимателей на сайт, как и в случае с адресными подсказками, необходимо выполнить подготовку сайта. А именно, нужно установить jQuery, установить наш JavaScript-модуль ahunter_suggest.js, а также настроить таблицу стилей, чтобы подсказки отображались красиво.
Все эти процедуры детально описаны в подсказках для почтовых адресов по следующей ссылке: suggest/address.
Поскольку подсказки по компаниям содержат много дополнительной информации, в таблице стилей для этого вида подсказок предусмотрены следующие дополнительные классы.
.u-AhunterSuggestionSubValue { font-size: 11px; padding-top: 1px; padding-bottom: 2px; }
.u-AhunterSpecialSuggestion { opacity: 0.7 }
Чтобы запустить подсказки, на вашем сайте должна присутствовать форма с полем для ввода информации о компании. Этому полю должен быть присвоен идентификатор, чтобы по нему наш модуль ahunter_suggest.js смог найти его на странице и запустить для него подсказки. Например, в простейшем случае HTML-разметка с таким полем может иметь следующий вид.
<div> <input id="js-CompanyField" placeholder="Компания ..."> </div>
Теперь, чтобы запустить подсказки, достаточно где-нибудь на странице добавить следующий инициализирующий скрипт:
<script> //готовим настройки модуля var options = { id : 'js-CompanyField' }; //запускаем модуль подсказок AhunterSuggest.Company.Solid( options ); </script>
Здесь выполняется заполнение опций options, которые затем передаются модулю подсказок посредством вызова AhunterSuggest.Company.Solid( options ). Этот вызов привяжет функционал подсказок к полю с идентификатором js-CompanyField, после чего ввод в этом поле будет приводить к отображению подсказок по компаниям из ЕГРЮЛ и ЕГРИП.
Объект options, через который передаётся идентификатор поля, для которого будут формироваться подсказки, позволяет указать и другие опции, влияющие на поведение и внешний вид подсказок. Рассмотрим их подробнее.
Чуть выше было показано, что при запуске нашего модуля подсказок вам нужно подготовить и передать объект options с параметрами, влияющими на поведение модуля. Основные параметры можно посмотреть в подсказках по почтовым адресам здесь. Кроме них, в подсказках по компаниям можно задействовать следующие:
Ниже приведён пример инициализации модуля подсказок по компании, вводимой в одно поле, с помощью дополнительных параметров.
//Готовим опции для модуля подсказок var options = { //Наше поле, куда пользователи будут вводить информацию о компании id: "js-CompanyField", //Веб-адрес облачной версии сервиса ahunter_url : "https://ahunter.ru/", //Не будем показывать предупреждающее сообщение, когда подсказок нет empty_msg : "", //Будем показывать только 5 топовых подсказок limit : 5, //Не будем показывать подсказки при возврате фокуса в поле ввода suggest_on_focus : false, //Фильтр с АБР-кодом города Екатеринбурга //Будем возвращать подсказки для компаний из этого города filter : ["66c1"], //При выборе подсказки будем выводить её в отладочную консоль on_fetch : function( Suggestion, Company ) { console.log( Suggestion, Company ); }, //Указываем свой открытый API-токен, чтобы работал on_fetch user : "demotoken" }; //Запускаем модуль подсказок AhunterSuggest.Company.Solid( options );
После выполнения этой инициализации всякий раз, когда пользователи будут редактировать поле js-CompanyField, на экране будут появляться подсказки с информацией о подходящих юридических лицах по ЕГРЮЛ и о подходящих индивидуальных предпринимателях по ЕГРИП.
В данном примере показано, как можно сконструировать адресный фильтр с помощью подсказок Ахантера для почтовых адресов. После конструирования такого фильтра далее он используется для фильтрации подсказок по второму полю, куда пользователь вводит информацию о компании. Данная форма имеет следующую разметку.
<div> <input id="js-AddressField" placeholder="Добавить адрес в фильтр"/> <pre id="js-AddressFilter"></pre> <input id="js-CompanyField" placeholder="Компания ..."/> </div>
В этой форме первое поле с идентификатором js-AddressField используется, чтобы с помощью подсказок получить АБР-код для города или региона РФ, чтобы добавить его в адресный фильтр компаний. При редактировании этого поля Ахантер предлагает адресные подсказки, при выборе которых соответствующий АБР-код адресного объекта из подсказки захватывается и запоминается в адресном фильтре.
Элемент с идентификатором js-AddressFilter используется для отладки, в нём отображается весь массив адресного фильтра, сконструированный к настоящему моменту.
Поле с идентификатором js-CompanyField демонстрирует непосредственно подсказки по компаниям, к которым применяется полученный фильтр.
Конфигурация для этой формы будет иметь следующий вид.
//Список с выбранными АБР-кодами адресов, включённых в фильтр AddressFilter = []; //Опции для подсказок по адресу var AddressOptions = { //Будем подсказывать только города, районы и регионы fields: [ { id: 'js-AddressField', levels: ['Region','District','City'] } ], //При выборе подсказки по адресу будем запоминать АБР-код адреса //в массиве адресного фильтра AddressFilter on_choose : function( _Suggestion ) { //Запоминаем АБР-код в массиве фильтра AddressFilter.push( _Suggestion.sign ); //Обновляем отладочный текст с содержимым фильтра $('#js-AddressFilter').text( 'filter = ' + JSON.stringify(AddressFilter) ); } }; //Запускаем подсказки в поле с почтовым адресом AhunterSuggest.Address.Discrete( AddressOptions ); //Запускаем подсказки в поле с компанией, //В параметре filter передаём массив АБР-кодов адресного фильтра var CompanyOptions = { id: 'js-CompanyField', filter : AddressFilter }; AhunterSuggest.Company.Solid( CompanyOptions );
Ниже показан пример того, как это будет работать.
Чтобы заполнить фильтр, вводите адреса в поле сверху и выбирайте их. Можно добавить не более 5 адресов.
Если вам нужно встроить подсказки для компаний не на веб-сайте, а в ваше приложение, либо если вы по каким-то причинам не можете подключить наш JavaScript-модуль подсказок ahunter_suggest.js, то в этом случае вам следует использовать API-команду suggest/company для получения подсказок напрямую от Ахантера по заданному запросу.
Использование команды suggest/company полагает, что пользователь в режиме реального времени заполняет какое-то одно поле вашей формы, соответствующее названию компании, для которой требуется получить полный набор сведений и реквизитов. В это поле пользователь может вводить как название компании, так и её адрес, а также ОГРН, ИНН и ФИО руководителя. Каждый раз, когда пользователь вводит очередной символ, увеличивается количество информации, на основе которой сервис может сформировать подходящие подсказки.
Поэтому при вводе пользователем каждого нового символа ваше приложение должно отсылать сервису новый запрос, дополненный этим новым символом, чтобы получить подсказки, учитывающие уже введенную информацию в полном объеме.
Для организации такого взаимодействия ваше приложение должно отслеживать события, возникающие, когда происходят изменения в поле формы, куда вводится информация о компании. При возникновении такого события приложение должно отсылать текст, введенный к настоящему моменту в этом поле, нашему сервису. В качестве ответа ваше приложение получит массив подсказок с найденными подходящими компаниями.
Получив ответ от Ахантера, ваше приложение должно извлечь из него предложенные подсказки и показать их пользователю, предоставив тем самым возможность выбрать подходящую компанию.
После того, как пользователь выбрал подходящую подсказку, ваше приложение может запросить у Ахантера полную информацию об этом юридическом лице или индивидуальном предпринимателе: сведения о регистрации в ФНС, ПФР и ФСС, коды ОКВЭД, информацию о лицензиях компании, сведения о ликвидации, структуре уставного капитала, учредителях и руководителях. Для этого каждая подсказка снабжается уникальным идентификатором-сигнатурой sign. Когда пользователь вашего приложения выбирает подсказку, ваше приложение может брать соответствующую ей сигнатуру и отсылать её с помощью команды fetch/company. В качестве ответа сервис вернёт полный описатель со всей информацией о компании, извлечённой из ЕГРЮЛ или ЕГРИП.
Приведенный ниже запрос отсылает сервису фрагмент "ооо", введенный к настоящему моменту пользователем, по которому сервис должен найти подходящие компании и вернуть их в качестве подсказок.
В данном запросе используются следующие параметры.
Рассмотрим более подробно все параметры, которые сервис может получать в рамках данной команды.
Обязательные параметры для выполнения запроса.
Опциональные параметры
Приведенный ниже запрос отсылает сервису на обработку фрагмент информации о компании "сберб" с дополнительными параметрами.
В данном запросе используются следующие параметры.
Ниже приведен ответ сервиса с результатом формирования подсказок по фрагменту компании "екатеринбург сберб". Полагается, что пользователь ищет отделения Сбербанка в Екатеринбурге.
Результирующий JSON-ответ получен с использованием опции output=json|pretty, позволяющей выполнить «красивое» форматирование JSON-текста.
{ "query" : "екатеринбург сберб", "request_process_time" : 0, "status" : { "egrul": 0, "egrip": 1 }, "suggestions" : [ { "address" : "г Екатеринбург, ул Куйбышева, ДОМ 67", "inn" : "7707083893", "name" : "УРАЛЬСКИЙ БАНК ПАО СБЕРБАНК", "ogrn" : "1027700132195", "person" : "ГРЕФ ГЕРМАН ОСКАРОВИЧ", "sign" : "c1027700132195b126498", "state" : 0 }, { "address" : "г Екатеринбург, ул Бориса Ельцина, ДОМ 3\/2", "inn" : "7707083893", "name" : "СВЕРДЛОВСКОЕ ОТДЕЛЕНИЕ №7003 ПАО СБЕРБАНК", "ogrn" : "1027700132195", "person" : "ГРЕФ ГЕРМАН ОСКАРОВИЧ", "sign" : "c1027700132195b126553", "state" : 0 } ] }
Результатом формирования подсказок для вводимой компании является JSON-объект со следующими элементами.
Ниже приведено детальное описание этих элементов.
Поскольку при формировании подсказок полагается, что информация о компании введена не полностью, то вариантов с подсказками для вводимой компании в общем случае может быть несколько. Каждому предлагаемому сервисом варианту соответствует отдельный элемент suggestions[i] JSON-массива suggestions. Количество предлагаемых вариантов может лимитироваться с помощью опционального параметра companylim, передаваемого в рамках запроса.
Пример JSON-объекта, соответствующего одному варианту подсказок suggestions[i] для вводимой компании приведен ниже.
{ "address" : "г Екатеринбург, ул Куйбышева, ДОМ 67", "inn" : "7707083893", "name" : "УРАЛЬСКИЙ БАНК ПАО СБЕРБАНК", "ogrn" : "1027700132195", "person" : "ГРЕФ ГЕРМАН ОСКАРОВИЧ", "sign" : "c1027700132195b126498", "state" : 0 }
Каждый элемент suggestions[i] представляет собой JSON-объект со следующими элементами.
Поскольку формирование подсказок происходит в режиме реального времени, никакой дополнительной информации по каждой подсказке сервис не возвращает. Это обусловлено необходимостью минимизировать сетевой трафик и время отклика сервиса.
Чтобы получить исчерпывающую информацию по выбранной пользователем компании, вашему приложению следует использовать команду fetch/company, которая позволяет получить полные сведения из ЕГРЮЛ и ЕГРИП по сигнатуре подсказки sign.
Назначение возвращаемых в XML-ответе элементов аналогично JSON-элементам, которые мы рассмотрели выше. Для получения ответа в формате XML необходимо в исходном запросе использовать значение параметра output=xml.
XML-ответ сервиса c подсказками по запросу "екатеринбург сберб" имеет следующий вид.
<ProcessSuggestResult> <Suggestion address="г Екатеринбург, ул Куйбышева, ДОМ 67" inn="7707083893" name="УРАЛЬСКИЙ БАНК ПАО СБЕРБАНК" ogrn="1027700132195" person="ГРЕФ ГЕРМАН ОСКАРОВИЧ" sign="c1027700132195b126498" state="0"/> <Suggestion address="г Екатеринбург, ул Бориса Ельцина, ДОМ 3/2" inn="7707083893" name="СВЕРДЛОВСКОЕ ОТДЕЛЕНИЕ №7003 ПАО СБЕРБАНК" ogrn="1027700132195" person="ГРЕФ ГЕРМАН ОСКАРОВИЧ" sign="c1027700132195b126553" state="0"/> <Query val="екатеринбург сберб"/> <Status egrip="1" egrul="0"/> </ProcessSuggestResult>
Ответ с подсказками для компании представляет собой XML-документ со следующими дочерними элементами.
Ниже приведено детальное описание этих XML-элементов.
Элемент Suggestion содержит информацию об одной подсказке из предложенного сервисом перечня подсказок по вводимой компании. Пример данного элемента приведен ниже.
<Suggestion address="г Екатеринбург, ул Куйбышева, ДОМ 67" inn="7707083893" name="УРАЛЬСКИЙ БАНК ПАО СБЕРБАНК" ogrn="1027700132195" person="ГРЕФ ГЕРМАН ОСКАРОВИЧ" sign="c1027700132195b126498" state="0"/>
Данный элемент содержит следующие атрибуты.