Как настроить автоматическое заполнение реквизитов контрагента по ИНН в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Каждый бухгалтер, менеджер по продажам или юрист регулярно сталкивается с рутинной задачей — созданием карточек новых клиентов и поставщиков в информационной базе. Ручной ввод реквизитов часто приводит к досадным ошибкам: опечаткам в названиях, путанице в КПП или некорректно записанным юридическим адресам. Подобные неточности могут обернуться серьезными налоговыми рисками, проблемами со сдачей отчетности по НДС и задержками в согласовании договоров.

Автоматическое заполнение реквизитов по ИНН — стандарт де-факто для любой современной конфигурации 1С. В этой статье мы подробно разберем, какие инструменты и сервисы существуют для решения этой задачи, детально проанализируем их сильные и слабые стороны, а также разберем по шагам, как реализовать интеграцию программными методами, если у вас нетиповая или устаревшая конфигурация.

Основные проблемы некачественных API-интеграций

Многие разработчики пытаются сэкономить и используют сомнительные или бесплатные веб-сервисы, которые парсят данные из открытых источников. В результате пользователи сталкиваются со следующими проблемами:

  1. Некорректный формат адресов. Адрес возвращается «одной строкой» без деления на регион, город, улицу и дом. В результате 1С не может сопоставить его со встроенным адресным классификатором ФИАС/ГАР, и адрес сохраняется в системе некорректно.
  2. Отсутствие данных по индивидуальным предпринимателям (ИП). Базы данных ИП (ЕГРИП) обновляются иначе, чем ЕГРЮЛ, и многие простые API их попросту игнорируют или возвращают неполную информацию.
  3. Блокировки по IP и лимиты запросов. Сервисы, работающие по принципу веб-скрейпинга, быстро вычисляют роботизированную активность, начинают требовать ввода капчи или полностью блокируют доступ.

Рассмотрим надежные и проверенные временем варианты интеграции, которые решают все вышеперечисленные проблемы.

---

Вариант 1. Встроенный сервис «1С:Контрагент» (Официальное решение)

Если у вашей организации оформлен договор сопровождения 1С:ИТС уровня ПРОФ, то этот сервис уже включен в стоимость подписки, и за него не придется ничего доплачивать. Это наиболее стабильный и простой в настройке инструмент для типовых конфигураций 1С.

Преимущества использования «1С:Контрагент»:

Как настроить подключение в типовой программе 1С (на примере управляемых форм):

  1. Перейдем в раздел Администрирование, далее выберем пункт Интернет-поддержка и сервисы.
  2. В блоке «Настройки Интернет-поддержки» нажмем кнопку Подключить и введем логин и пароль от Портала 1С:ИТС.
  3. В этой же форме найдем раздел «1С:Контрагент» и проверим, что сервис находится в активном состоянии.
  4. Теперь при создании нового контрагента достаточно ввести ИНН в соответствующее поле, и программа сама предложит автоматически заполнить карточку.

---

Вариант 2. Интеграция с сервисом DaData (Отличная бесплатная альтернатива)

Если у вас нет подписки 1С:ИТС ПРОФ или вы работаете в сильно кастомизированной («самописной») конфигурации, лучшим выбором станет сервис DaData. Он предлагает очень щедрый бесплатный лимит — до 10 000 поисковых запросов в день, что с запасом перекрывает потребности малого и среднего бизнеса.

Главная гордость DaData — это мощный модуль стандартизации адресов. Сервис превосходно разбирает даже самый «кривой» ввод, исправляет опечатки и приводит адрес к строгому государственному стандарту ФИАС/ГАР. Данные по индивидуальным предпринимателям подгружаются корректно и в полном объеме.

Для интеграции DaData в 1С вам не обязательно писать код с нуля. На профильных порталах (например, Инфостарт или GitHub) доступно множество готовых бесплатных расширений конфигурации (файлы с расширением .cfe). Вы можете просто подключить такое расширение через меню Администрирование — Печатные формы, отчеты и обработки — Расширения, прописать в его настройках свой уникальный API-ключ (токен) из личного кабинета DaData, и функционал сразу заработает.

Однако, если перед нами стоит задача реализовать интеграцию программно в собственном модуле, разберем по шагам, как это сделать с помощью встроенного языка 1С.

Реализуем HTTP-запрос к API DaData на встроенном языке 1С

Для выполнения запроса мы будем использовать стандартные объекты платформы: HTTPСоединение, HTTPЗапрос и механизмы работы с JSON.

Проанализируем пример кода, который отправляет POST-запрос к сервису DaData, получает ответ с реквизитами организации по ИНН и разбирает его:


Функция ПолучитьРеквизитыПоИНН(Знач ИННКонтрагента, Знач ТокенДоступа) Экспорт

    Результат = Новый Структура;
    Результат.Вставить("Успешно", Ложь);
    Результат.Вставить("НаименованиеПолное", "");
    Результат.Вставить("НаименованиеСокращенное", "");
    Результат.Вставить("КПП", "");
    Результат.Вставить("ОГРН", "");
    Результат.Вставить("ЮридическийАдрес", "");
    Результат.Вставить("РуководительФИО", "");

    // Настраиваем защищенное соединение OpenSSL
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
    
    // Создаем HTTP-соединение с сервером DaData
    HTTPСоединение = Новый HTTPСоединение("suggestions.dadata.ru", 443, , , , , ЗащищенноеСоединение);
    
    // Формируем запрос к API подсказок по организациям
    HTTPЗапрос = Новый HTTPЗапрос("/suggestions/api/4_1/rs/findById/party");
    HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
    HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
    HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + ТокенДоступа);
    
    // Подготавливаем параметры запроса в формате JSON
    ПараметрыЗапроса = Новый Структура;
    ПараметрыЗапроса.Вставить("query", ИННКонтрагента);
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапроса);
    ТелоЗапроса = ЗаписьJSON.Закрыть();
    
    HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
    
    Попытка
        HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
        
        Если HTTPОтвет.КодСостояния = 200 Тогда
            СтрокаОтвета = HTTPОтвет.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
            
            // Читаем полученный JSON-ответ
            ЧтениеJSON = Новый ЧтениеJSON;
            ЧтениеJSON.УстановитьСтроку(СтрокаОтвета);
            ДанныеОтвета = ПрочитатьJSON(ЧтениеJSON);
            ЧтениеJSON.Закрыть();
            
            Если ДанныеОтвета.Свойство("suggestions") И ДанныеОтвета.suggestions.Количество() > 0 Тогда
                // Берем первый найденный объект
                СведенияОбОрганизации = ДанныеОтвета.suggestions[0];
                ДанныеФНС = СведенияОбОрганизации.data;
                
                Результат.Успешно = Истина;
                Результат.НаименованиеПолное = ДанныеФНС.name.full_with_opf;
                Результат.НаименованиеСокращенное = ДанныеФНС.name.short_with_opf;
                Результат.ОГРН = ДанныеФНС.ogrn;
                Результат.ЮридическийАдрес = ДанныеФНС.address.value;
                
                // КПП есть только у юридических лиц, у ИП этого реквизита нет
                Если ДанныеФНС.Свойство("kpp") Тогда
                    Результат.КПП = ДанныеФНС.kpp;
                КонецЕсли;
                
                // Проверяем наличие руководителя (у ИП руководителя нет, они действуют сами)
                Если ДанныеФНС.Свойство("management") И ДанныеФНС.management <> Неопределено Тогда
                    Результат.РуководительФИО = ДанныеФНС.management.name;
                КонецЕсли;
            КонецЕсли;
        Иначе
            ЗаписатьВЖурналРегистрации("ИнтеграцияDaData", УровеньЖурналаРегистрации.Предупреждение, , , 
                "Сервис вернул код ошибки: " + HTTPОтвет.КодСостояния);
        EndЕсли;
    Исключение
        ЗаписатьВЖурналРегистрации("ИнтеграцияDaData", УровеньЖурналаРегистрации.Ошибка, , , 
            "Ошибка при выполнении HTTP-запроса: " + ОписаниеОшибки());
    КонецПопытки;
    
    Возврат Результат;

КонецФункции

Рассмотрим подробнее логику работы этого кода. Мы создали безопасное HTTPS-соединение, так как современные веб-сервисы не работают по открытому протоколу HTTP. Затем мы сформировали JSON-пакет с искомым ИНН и отправили его методом POST. Полученный ответ десериализовали с помощью встроенного метода ПрочитатьJSON() в структуру 1С. Это позволило нам легко обратиться к нужным свойствам объекта без сложного текстового разбора.

---

Вариант 3. Профессиональные решения бизнес-аналитики (Контур.Фокус и СБИС API)

Для крупных компаний, у которых юридический отдел и служба безопасности предъявляют повышенные требования к проверке контрагентов на благонадежность (так называемая «должная осмотрительность»), простых реквизитов бывает недостаточно. В таких сценариях целесообразно использовать API профессиональных систем безопасности.

Оба этих решения являются полностью платными и ориентированы на крупный корпоративный сектор, где цена ошибки при работе с недобросовестным партнером исчисляется миллионами рублей.

---

Вариант 4. Легковесные бесплатные сервисы (egrul.org и egrul.itsoft.ru)

Если вам нужно быстрое решение для тестирования, учебной базы или микробизнеса, обратите внимание на открытые бесплатные шлюзы к базам ЕГРЮЛ. Например, сервис egrul.org позволяет выполнять до 100 запросов в сутки без регистрации, создания личных кабинетов и генерации токенов авторизации.

Данные возвращаются в оригинальном XML или JSON-формате ФНС. Однако стоит учитывать, что скорость ответа таких сервисов может быть ниже, а гарантий бесперебойной работы под высокой нагрузкой никто не дает.

---

Сравнительный анализ популярных сервисов автозаполнения

Чтобы вам было проще сделать выбор, проанализируем ключевые параметры рассмотренных решений в сводной таблице:

Название сервиса Стоимость Качество адресов (ФИАС) Поддержка ИП Проверка благонадежности Сложность внедрения в 1С
1С:Контрагент Бесплатно при ИТС ПРОФ (иначе от 4 800 руб/год) Отличное (Облачный ФИАС) Да Базовая (Досье контрагента) Очень простая (включается галочкой)
DaData Бесплатно до 10 000 запр/день (далее платные тарифы) Идеальное (собственная база стандартизации) Да Нет Простая (через готовые расширения или простой HTTP-код)
Контур.Фокус API Высокая (платная лицензия для бизнеса) Отличное Да Глубокая (суды, долги, связи, риски) Средняя (установка готового внешнего модуля)
egrul.org Бесплатно (до 100 запросов в сутки) Среднее (сырые данные ФНС) Да Нет Требуется написание кода запроса

Подведем итоги

Мы выяснили причины проблем с некачественным заполнением реквизитов и рассмотрели лучшие инструменты для автоматизации этого процесса. Выбор оптимального пути зависит от вашей текущей ИТ-инфраструктуры:

  1. Если ваша компания работает на типовой конфигурации и имеет действующий договор 1С:ИТС ПРОФ — незамедлительно активируйте штатный сервис 1С:Контрагент. Это займет ровно 2 минуты и не потребует привлечения программистов.
  2. Если у вас нетиповая конфигурация, нет подписки ИТС или вам требуются идеальные адреса без ручной коррекции — лучшим выбором станет интеграция с DaData. Воспользуйтесь готовыми бесплатными расширениями или внедрите предложенный нами код HTTP-запроса.
  3. Для крупного бизнеса с жесткими регламентами безопасности и юридической проверки контрагентов оптимально внедрение профессиональных систем класса Контур.Фокус или СБИС.
← На главную