Автоматическое заполнение реквизитов по ИНН на Javascript

Автоматическое заполнение реквизитов по ИНН

Если вы работаете с юридическими лицами, то вам постоянно приходится заполнять реквизиты контрагентов. И скорей всего мечтаете о волшебной кнопочке, которая заполнит все за вас. В данной статье я расскажу как реализовать автоматическое заполнение реквизитов по ИНН или любым другим данным организации.

Есть замечательный сервис DaData.ru, который умеет не только исправлять контактные данные типа ФИО, адреса, телефона и т.п., удалять дубликаты, но и ищет реквизиты организаций и ИП.

Данный сервис предоставляет доступ к API и дает бесплатно до 10 тыс. запросов в день по API-ключу. Этим мы и воспользуемся, чтобы реализовать автоматическое заполнение реквизитов по ИНН.

Получение API-ключа на Dadata.ru

Для начала необходимо зарегистрироваться на сервисе DaData. После регистрации в личном кабинете можно увидеть ваш API-ключ, который будет использоваться для запросов к сервису. А еще вам будет бонус 10 рублей на счет за использование API.

Ну а теперь можем приступить к написанию скрипта для отправки запроса и обработки ответа. Напоминаю, что писать код мы будем на Javascript.

Javascript для получения и заполнение реквизитов по ИНН

Создаем форму, в которой будет происходить заполнение реквизитов:

<div class="well well-sm col-md-6">
  <div class="view">&nbsp;</div>
  <div class="view"><p>Пожалуйста, заполняйте поля как можно более подробней. Это поможет нам быстрее и точнее отреагировать на ваше сообщение.</p></div>
  <form action="/ method=" post"="">
  <div class="form-group">
  <label for="company">Название компании* (реквизиты заполнятся автоматически):</label>
  <input class="form-control suggestions-input" type="text" name="company" id="company" value="" placeholder="Введите название, адрес, ИНН или ОГРН" required="" autocomplete="off" style="box-sizing: border-box;"><div class="suggestions-wrapper"><span class="suggestions-addon" data-addon-type="spinner" style="left: -21px; top: 2px; height: 19px; width: 19px;"></span><ul class="suggestions-constraints" style="left: -676px; top: 12px;"></ul><div class="suggestions-suggestions" style="position: absolute; display: none; left: -680px; top: 21px; width: 680px;"></div></div>
  </div>
  <div class="form-group">
  <label for="inn">ИНН:</label>
  <input class="form-control" type="text" name="inn" id="inn" value="" placeholder="Например, 1111111111" readonly="" required="">
  </div>
  <div class="form-group">
  <label for="kpp">КПП:</label>
  <input class="form-control" type="text" name="kpp" id="kpp" value="" placeholder="Например, 111111111" readonly="">
  </div>
  <div class="form-group">
  <label for="ogrn">ОГРН:</label>
  <input class="form-control" type="text" name="ogrn" id="ogrn" value="" placeholder="Например, 1111111111111" readonly="" required="">
  </div>
  <div class="form-group">
  <label for="address">Адрес:</label>
  <input class="form-control" type="text" name="address" id="address" value="" placeholder="Невский пр., 1" required="">
  </div>
  <div class="form-group">
  <label for="tel">Телефон для связи*:</label>
  <input class="form-control" type="text" name="tel" id="tel" value="" placeholder="Например, +7 812 111 1111" required="">
  </div>
  <div class="form-group">
  <label for="email">Ваш email*:</label>
  <input class="form-control" type="text" name="email" id="email" value="" placeholder="Например, [email protected]" required="">
  </div>
  <div class="form-group">
  <label for="url">Сайт:</label>
  <input class="form-control" type="text" name="url" id="url" value="" placeholder="Например, pogrommist.ru">
  </div>
  <div class="form-group">
  <label for="comment">Дополнительные сведения:</label>
  <textarea class="form-control" type="text" name="comment" id="comment" rows="4"></textarea>
  </div>
  <div class="form-group">
  <div class="g-recaptcha" data-sitekey="тут ключ для капчи"></div>
  </div>
  <div class="form-group">
  <button type="submit" name="addevent" class="btn btn-default">Отправить</button>
  </div>
  </form>
</div>

Выглядеть наша форма будет примерно так:

Также нам понадобятся дополнительные стили и библиотеки:

<link href="https://cdn.jsdelivr.net/jquery.suggestions/17.2/css/suggestions.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<!--[if lt IE 10]>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.1/jquery.xdomainrequest.min.js"></script>
<![endif]-->
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery.suggestions/17.2/js/jquery.suggestions.min.js"></script>

Теперь пишем код, который будет отправлять запросы по мере заполнения первой графы и обрабатывать ответы.

<script type="text/javascript">
function join(arr) {
  var separator = arguments.length > 1 ? arguments[1] : ", ";
  return arr.filter(function(n){return n}).join(separator);
}

function typeDescription(type) {
  var TYPES = {
    'INDIVIDUAL': 'Индивидуальный предприниматель',
    'LEGAL': 'Организация'
  }
  return TYPES[type];
}

function showSuggestion(suggestion) {
  console.log(suggestion);
  var data = suggestion.data;
  if (!data)
    return;

  $("#type").text(
  typeDescription(data.type) + " (" + data.type + ")"
  );

  if (data.name)
    //$("#company").val(join([data.opf && data.opf.short || "", data.name.short || data.name.full], " "));

    $("#inn").val(data.inn);
    $("#kpp").val(data.kpp);

    $("#ogrn").val(data.ogrn);

  if (data.address)
    $("#address").val(data.address.value);
  }

  $("#company").suggestions({
  token: "Здесь должен быть ваш API-ключ",
  type: "PARTY",
  count: 5,
  onSelect: showSuggestion
  });
</script>

При заполнении первой графы будут предложены 5 подсказок, за это отвечает переменная «count». Максимально можно выводить до 20 подсказок. При выборе одной из них в нашем варианте будут заполняться поля «Название компании», «ИНН», «ОГРН» и «адрес».

Какие данные еще можно получить?

Название Описание
value Наименование компании одной строкой (как показывается в списке подсказок)
unrestricted_value Наименование компании одной строкой (полное)
data.address.value Адрес одной строкой:

  • адрес организации для юридических лиц;
  • город проживания для индивидуальных предпринимателей.

Стандартизован, поэтому может отличаться от записанного в ЕГРЮЛ.

data.address.unrestricted_value Адрес одной строкой (полный, от региона)
Стандартизован, поэтому может отличаться от записанного в ЕГРЮЛ.
data.address.data Гранулярный адрес. Может отсутствовать
data.address.data.source Адрес одной строкой как в ЕГРЮЛ
data.branch_count Количество филиалов
data.branch_type Тип подразделения

MAIN   — головная организация
BRANCH — филиал
data.inn ИНН
data.kpp КПП
data.ogrn ОГРН
data.ogrn_date Дата выдачи ОГРН
data.hid Уникальный идентификатор в Дадате
data.management.name ФИО руководителя
data.management.post Должность руководителя
data.name.full_with_opf Полное наименование с ОПФ
data.name.short_with_opf Краткое наименование с ОПФ
data.name.latin Наименование на латинице
data.name.full Полное наименование
data.name.short Краткое наименование
data.okpo Код ОКПО (не заполняется)
data.okved Код ОКВЭД
data.okved_type Версия справочника ОКВЭД (2001 или 2014)
data.okveds Коды ОКВЭД дополнительных видов деятельности (не заполняется)
data.opf.code Код ОКОПФ
data.opf.full Полное название ОПФ
data.opf.short Краткое название ОПФ
data.opf.type Не используется
data.state.actuality_date Дата актуальности сведений
data.state.registration_date Дата регистрации
data.state.liquidation_date Дата ликвидации
data.state.status Статус организации

ACTIVE      — действующая
LIQUIDATING — ликвидируется
LIQUIDATED  — ликвидирована
data.type Тип организации

LEGAL      — юридическое лицо
INDIVIDUAL — индивидуальный предприниматель
data.capital Уставной капитал, для организаций (не заполняется)
data.citizenship Гражданство, для ИП (не заполняется)
data.authorities Руководители, доверенные лица, управляющие организации (не заполняется)
data.documents Документы (не заполняется)
data.licenses Лицензии (не заполняется)
data.phones Телефоны (не заполняется)
data.emails Адреса эл. почты (не заполняется)
data.source Не используется
data.qc Не используется

Данный сервис можно использовать для заполнения реквизитов контрагентов в . Возможно в будущем я опишу как это реализовать в 1С:Бухгалтерия 3.0.