Каждый бухгалтер, менеджер по продажам или юрист регулярно сталкивается с рутинной задачей — созданием карточек новых клиентов и поставщиков в информационной базе. Ручной ввод реквизитов часто приводит к досадным ошибкам: опечаткам в названиях, путанице в КПП или некорректно записанным юридическим адресам. Подобные неточности могут обернуться серьезными налоговыми рисками, проблемами со сдачей отчетности по НДС и задержками в согласовании договоров.
Автоматическое заполнение реквизитов по ИНН — стандарт де-факто для любой современной конфигурации 1С. В этой статье мы подробно разберем, какие инструменты и сервисы существуют для решения этой задачи, детально проанализируем их сильные и слабые стороны, а также разберем по шагам, как реализовать интеграцию программными методами, если у вас нетиповая или устаревшая конфигурация.
Многие разработчики пытаются сэкономить и используют сомнительные или бесплатные веб-сервисы, которые парсят данные из открытых источников. В результате пользователи сталкиваются со следующими проблемами:
Рассмотрим надежные и проверенные временем варианты интеграции, которые решают все вышеперечисленные проблемы.
---
Если у вашей организации оформлен договор сопровождения 1С:ИТС уровня ПРОФ, то этот сервис уже включен в стоимость подписки, и за него не придется ничего доплачивать. Это наиболее стабильный и простой в настройке инструмент для типовых конфигураций 1С.
Преимущества использования «1С:Контрагент»:
Как настроить подключение в типовой программе 1С (на примере управляемых форм):
---
Если у вас нет подписки 1С:ИТС ПРОФ или вы работаете в сильно кастомизированной («самописной») конфигурации, лучшим выбором станет сервис DaData. Он предлагает очень щедрый бесплатный лимит — до 10 000 поисковых запросов в день, что с запасом перекрывает потребности малого и среднего бизнеса.
Главная гордость DaData — это мощный модуль стандартизации адресов. Сервис превосходно разбирает даже самый «кривой» ввод, исправляет опечатки и приводит адрес к строгому государственному стандарту ФИАС/ГАР. Данные по индивидуальным предпринимателям подгружаются корректно и в полном объеме.
Для интеграции DaData в 1С вам не обязательно писать код с нуля. На профильных порталах (например, Инфостарт или GitHub) доступно множество готовых бесплатных расширений конфигурации (файлы с расширением .cfe). Вы можете просто подключить такое расширение через меню Администрирование — Печатные формы, отчеты и обработки — Расширения, прописать в его настройках свой уникальный 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С. Это позволило нам легко обратиться к нужным свойствам объекта без сложного текстового разбора.
---
Для крупных компаний, у которых юридический отдел и служба безопасности предъявляют повышенные требования к проверке контрагентов на благонадежность (так называемая «должная осмотрительность»), простых реквизитов бывает недостаточно. В таких сценариях целесообразно использовать API профессиональных систем безопасности.
Оба этих решения являются полностью платными и ориентированы на крупный корпоративный сектор, где цена ошибки при работе с недобросовестным партнером исчисляется миллионами рублей.
---
Если вам нужно быстрое решение для тестирования, учебной базы или микробизнеса, обратите внимание на открытые бесплатные шлюзы к базам ЕГРЮЛ. Например, сервис egrul.org позволяет выполнять до 100 запросов в сутки без регистрации, создания личных кабинетов и генерации токенов авторизации.
Данные возвращаются в оригинальном XML или JSON-формате ФНС. Однако стоит учитывать, что скорость ответа таких сервисов может быть ниже, а гарантий бесперебойной работы под высокой нагрузкой никто не дает.
---
Чтобы вам было проще сделать выбор, проанализируем ключевые параметры рассмотренных решений в сводной таблице:
| Название сервиса | Стоимость | Качество адресов (ФИАС) | Поддержка ИП | Проверка благонадежности | Сложность внедрения в 1С |
|---|---|---|---|---|---|
| 1С:Контрагент | Бесплатно при ИТС ПРОФ (иначе от 4 800 руб/год) | Отличное (Облачный ФИАС) | Да | Базовая (Досье контрагента) | Очень простая (включается галочкой) |
| DaData | Бесплатно до 10 000 запр/день (далее платные тарифы) | Идеальное (собственная база стандартизации) | Да | Нет | Простая (через готовые расширения или простой HTTP-код) |
| Контур.Фокус API | Высокая (платная лицензия для бизнеса) | Отличное | Да | Глубокая (суды, долги, связи, риски) | Средняя (установка готового внешнего модуля) |
| egrul.org | Бесплатно (до 100 запросов в сутки) | Среднее (сырые данные ФНС) | Да | Нет | Требуется написание кода запроса |
Мы выяснили причины проблем с некачественным заполнением реквизитов и рассмотрели лучшие инструменты для автоматизации этого процесса. Выбор оптимального пути зависит от вашей текущей ИТ-инфраструктуры: