Как заполнять данные контрагентов по ИНН в 1С:УТ 11.4 без подписки ИТС

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

В этой статье мы подробно рассмотрим, как реализовать бесплатное или максимально бюджетное автозаполнение контрагентов по ИНН в 1С:УТ 11.4 без использования стандартных сервисов 1С.

Вариант 1. Использование учетных данных знакомых (обходной путь)

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

Вариант 2. Интеграция с бесплатным API DaData.ru

Проанализируем наиболее стабильный, законный и бесплатный способ решения задачи — использование стороннего веб-сервиса DaData.ru. Этот ресурс предоставляет доступ к базе данных ФНС, Росстата и других ведомств через собственный программный интерфейс (API).

Рассмотрим ключевые особенности работы с DaData:

  1. Бесплатные лимиты: На базовом тарифе «Подсказки» сервис предоставляет 10 000 бесплатных запросов в сутки. Для компании со средней интенсивностью работы этого объема хватит с огромным запасом. Даже при первоначальном переносе базы в 1500–2000 контрагентов вы легко уложитесь в лимит одного дня.
  2. Ограничение данных: Бесплатная интеграция позволяет получить полное и краткое наименование организации, КПП, ОГРН, ФИО руководителя, юридический адрес и статус активности (действует/ликвидирована). Более специфические данные (финансовая отчетность, налоговый режим) доступны только на платных тарифах, но для стандартной карточки 1С бесплатного набора данных более чем достаточно.
  3. Обновление информации: Сервис ежедневно синхронизирует свои базы с ЕГРЮЛ/ЕГРИП, поэтому данные всегда актуальны.

Техническая проблема: Раскладка адреса по ФИАС в УТ 11.4

При интеграции с любыми сторонними API разработчики часто сталкиваются с критической проблемой — форматом адреса. Сервис DaData отдает юридический адрес в виде одной текстовой строки (например, "101000, г. Москва, ул. Мясницкая, д. 40").

Для корректного ведения учета в УТ 11.4 адрес обязательно должен быть разобран по полям адресного классификатора ФИАС/ГАР. Если записать адрес просто «одной строкой» в текстовое поле, возникнут следующие проблемы:

Поэтому при выборе готовой обработки или написании собственного кода необходимо использовать возможности DaData по разбору адреса на составляющие (составляющие структуры address.data: регион, город, улица, дом и т.д.) и сопоставлять их с полями контактной информации в 1С.

Реализация: Расширение конфигурации (.cfe) против Внешней обработки (.epf)

Выясним, в каком виде лучше внедрять интеграцию. На форумах часто ищут внешние обработки в формате .epf. Но для конфигураций на управляемых формах (таких как УТ 11.4) гораздо удобнее использовать Расширение конфигурации (файлы .cfe). Разберем по шагам преимущества этого подхода:

  1. Бесшовная интеграция: Расширение позволяет перехватить стандартное действие кнопки «Заполнить по ИНН» прямо в форме карточки контрагента. Пользователю не придется открывать стороннее окно обработки — все работает в привычном интерфейсе.
  2. Простота обновлений: При обновлении типовой конфигурации УТ 11.4 расширение не мешает процессу и не требует постоянной ручной адаптации кода программистом.
  3. Настройка безопасности: При подключении расширения в базу необходимо зайти в меню Администрирование — Печатные формы, отчеты и обработки — Расширения, выбрать добавленный модуль интеграции и **обязательно снять галочки** Безопасный режим и Защита от опасных действий. В противном случае платформа 1С заблокирует сетевые HTTP-запросы к серверам DaData.

Пример программного кода для отправки запроса к DaData

Рассмотрим пример того, как программно реализовать отправку запроса к API сервиса DaData из среды 1С:Предприятие для получения реквизитов организации по ИНН.


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

Данный код выполняет асинхронный POST-запрос к веб-сервису, передавая ИНН контрагента в теле запроса. В ответ приходит структурированный JSON-пакет, который мы разбираем стандартным методом платформы ПрочитатьJSON. Полученную структуру далее можно использовать для заполнения соответствующих реквизитов справочника Контрагенты и табличной части контактной информации.

Где найти готовое расширение?

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

← На главную