В процессе автоматизации документооборота и ведения справочников в 1С часто возникает задача автоматического заполнения реквизитов контрагента. Одной из ключевых дат является дата постановки на учет в налоговом органе или дата государственной регистрации. В этой статье мы разберем несколько способов получения этих данных: от стандартных механизмов 1С до использования внешних API и официальных данных ФНС.
Перед тем как переходить к технической реализации, проанализируем важный юридический нюанс. Часто эти две даты путают, но они имеют разное значение:
В зависимости от ваших целей (проверка "возраста" компании или актуальность текущих реквизитов), вам может понадобиться либо одна, либо обе эти даты.
Наиболее простым и легитимным способом для разработчика 1С является использование сервиса 1С:Контрагент. Этот сервис уже интегрирован в большинство современных конфигураций (БП 3.0, УТ 11, ERP 2). Рассмотрим, как это работает на программном уровне.
Для вызова заполнения данных по ИНН обычно используется стандартная команда. Разберем пример программного вызова функций, которые лежат в основе этого механизма:
// Пример получения данных через встроенные механизмы (БП 3.0)
&НаСервере
Процедура ПолучитьДанныеКонтрагентаНаСервере(ИНН)
// Используем типовой программный интерфейс
ДанныеОрганизации = КонтрагентыСлужебный.ДанныеОрганизацииПоИНН(ИНН);
Если ДанныеОрганизации <> Неопределено Тогда
// В структуре ДанныеОрганизации обычно содержатся основные реквизиты
ДатаРег = ДанныеОрганизации.ДатаРегистрации;
КПП = ДанныеОрганизации.КПП;
Сообщить("Дата регистрации организации: " + ДатаРег);
КонецЕсли;
КонецПроцедуры
Важно помнить, что для работы этого метода у пользователя должна быть активна подписка на ИТС и подключен интернет-поддержка. Метод ЗаполнитьПоИНН, упомянутый в обсуждении, является обработчиком команды на форме, который обращается к серверным модулям для получения JSON-ответа от серверов 1С.
Если стандартный сервис 1С недоступен или требуется получить расширенные данные (например, статус ликвидации или более детальную историю), можно воспользоваться сторонними API. Посмотрим на структуру данных, которую возвращают такие сервисы:
Проанализируем структуру JSON-ответа, которую предоставляет сервис Dadata. В поле data.state содержатся необходимые нам временные метки:
registration_date — дата первичной регистрации (ОГРН).actuality_date — дата последних изменений в реестре.liquidation_date — дата прекращения деятельности.Для интеграции с подобным сервисом в 1С нам потребуется объект HTTPСоединение. Рассмотрим пример реализации:
&НаСервере
Функция ПолучитьДатуРегистрацииЧерезAPI(ИНН)
Токен = "ВАШ_API_КЛЮЧ";
Сервер = "suggestions.dadata.ru";
Ресурс = "/suggestions/api/4_1/rs/findById/party";
Соединение = Новый HTTPСоединение(Сервер, 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(Ресурс);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.Заголовки.Вставить("Accept", "application/json");
Запрос.Заголовки.Вставить("Authorization", "Token " + Токен);
ТелоЗапроса = "{ ""query"": """ + ИНН + """ }";
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);
Попытка
Ответ = Соединение.ОтправитьДляОбъекта(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Результат = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
// Извлекаем дату из структуры
Если Результат.suggestions.Количество() > 0 Тогда
Данные = Результат.suggestions[0].data;
Возврат Данные.state.registration_date; // Возвращается в формате таймстампа или строки
КонецЕсли;
КонецЕсли;
Исключение
Сообщить("Ошибка связи с сервисом");
КонецПопытки;
Возврат Неопределено;
КонецФункции
Рассмотрим вариант получения данных напрямую от первоисточника — Федеральной налоговой службы. Существует два пути:
Если ваша задача — массовая проверка тысяч контрагентов, выясним, почему перебор ИНН через поисковые формы сайта налоговой (скрейпинг) — плохая идея. Сайт ФНС защищен системами мониторинга, и после нескольких десятков запросов ваш IP-адрес будет временно заблокирован или вам будет предложено ввести капчу.
Для массовой обработки правильно будет скачать XML-архив с портала открытых данных, загрузить его в локальную базу данных (например, MS SQL или PostgreSQL) и выполнять запросы локально. Структура XML-файла ФНС содержит узел СвПостУч (Сведения о постановке на учет), где в атрибуте ДатаПостУч указано искомое значение.
Для быстрого решения в среде 1С лучше всего использовать встроенный метод КонтрагентыСлужебный.ДанныеОрганизацииПоИНН, так как он не требует написания сложного кода интеграции. Однако, если вам нужна специфическая информация, такая как дата постановки на учет именно в текущей ИФНС при наличии нескольких КПП, следует ориентироваться на полноценные API (1С:Контрагент, Dadata, Контур.Фокус) или прямой анализ выписок ЕГРЮЛ.
Помните, что автоматизация получения данных не только ускоряет работу бухгалтерии, но и снижает риски ошибок при ручном вводе реквизитов.