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

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

В процессе автоматизации документооборота и ведения справочников в 1С часто возникает задача автоматического заполнения реквизитов контрагента. Одной из ключевых дат является дата постановки на учет в налоговом органе или дата государственной регистрации. В этой статье мы разберем несколько способов получения этих данных: от стандартных механизмов 1С до использования внешних API и официальных данных ФНС.

Различие между датой регистрации и датой постановки на учет

Перед тем как переходить к технической реализации, проанализируем важный юридический нюанс. Часто эти две даты путают, но они имеют разное значение:

  1. Дата государственной регистрации (ОГРН): Это момент физического создания юридического лица или регистрации ИП. Эта дата неизменна на протяжении всего времени существования организации.
  2. Дата постановки на учет в текущем налоговом органе: Эта дата связана с присвоением КПП по конкретному месту нахождения. Если организация меняет юридический адрес и переходит в другую инспекцию, дата постановки на учет изменится, а дата регистрации останется прежней.

В зависимости от ваших целей (проверка "возраста" компании или актуальность текущих реквизитов), вам может понадобиться либо одна, либо обе эти даты.

Решение 1: Использование встроенного сервиса 1С:Контрагент

Наиболее простым и легитимным способом для разработчика 1С является использование сервиса 1С:Контрагент. Этот сервис уже интегрирован в большинство современных конфигураций (БП 3.0, УТ 11, ERP 2). Рассмотрим, как это работает на программном уровне.

Для вызова заполнения данных по ИНН обычно используется стандартная команда. Разберем пример программного вызова функций, которые лежат в основе этого механизма:


// Пример получения данных через встроенные механизмы (БП 3.0)
&НаСервере
Процедура ПолучитьДанныеКонтрагентаНаСервере(ИНН)
    
    // Используем типовой программный интерфейс
    ДанныеОрганизации = КонтрагентыСлужебный.ДанныеОрганизацииПоИНН(ИНН);
    
    Если ДанныеОрганизации <> Неопределено Тогда
        // В структуре ДанныеОрганизации обычно содержатся основные реквизиты
        ДатаРег = ДанныеОрганизации.ДатаРегистрации;
        КПП = ДанныеОрганизации.КПП;
        Сообщить("Дата регистрации организации: " + ДатаРег);
    КонецЕсли;
    
КонецПроцедуры

Важно помнить, что для работы этого метода у пользователя должна быть активна подписка на ИТС и подключен интернет-поддержка. Метод ЗаполнитьПоИНН, упомянутый в обсуждении, является обработчиком команды на форме, который обращается к серверным модулям для получения JSON-ответа от серверов 1С.

Решение 2: Работа с внешними API (на примере Dadata)

Если стандартный сервис 1С недоступен или требуется получить расширенные данные (например, статус ликвидации или более детальную историю), можно воспользоваться сторонними API. Посмотрим на структуру данных, которую возвращают такие сервисы:

Проанализируем структуру JSON-ответа, которую предоставляет сервис Dadata. В поле data.state содержатся необходимые нам временные метки:

Для интеграции с подобным сервисом в 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; // Возвращается в формате таймстампа или строки
            КонецЕсли;
        КонецЕсли;
    Исключение
        Сообщить("Ошибка связи с сервисом");
    КонецПопытки;
    
    Возврат Неопределено;
    
КонецФункции

Решение 3: Официальный сайт ФНС и открытые данные

Рассмотрим вариант получения данных напрямую от первоисточника — Федеральной налоговой службы. Существует два пути:

  1. Ручной или полуавтоматический: Использование сервиса "Предоставление сведений из ЕГРЮЛ/ЕГРИП". Вы можете скачать выписку в формате PDF. Для автоматизации это не самый удобный способ, так как парсинг PDF — задача трудоемкая.
  2. Программный: Использование портала "Открытые данные" ФНС. На нем регулярно публикуются дампы всей базы ЕГРЮЛ в формате XML.

Если ваша задача — массовая проверка тысяч контрагентов, выясним, почему перебор ИНН через поисковые формы сайта налоговой (скрейпинг) — плохая идея. Сайт ФНС защищен системами мониторинга, и после нескольких десятков запросов ваш IP-адрес будет временно заблокирован или вам будет предложено ввести капчу.

Для массовой обработки правильно будет скачать XML-архив с портала открытых данных, загрузить его в локальную базу данных (например, MS SQL или PostgreSQL) и выполнять запросы локально. Структура XML-файла ФНС содержит узел СвПостУч (Сведения о постановке на учет), где в атрибуте ДатаПостУч указано искомое значение.

Резюме

Для быстрого решения в среде 1С лучше всего использовать встроенный метод КонтрагентыСлужебный.ДанныеОрганизацииПоИНН, так как он не требует написания сложного кода интеграции. Однако, если вам нужна специфическая информация, такая как дата постановки на учет именно в текущей ИФНС при наличии нескольких КПП, следует ориентироваться на полноценные API (1С:Контрагент, Dadata, Контур.Фокус) или прямой анализ выписок ЕГРЮЛ.

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

← На главную