Как получить данные контрагента по ИНН из ЕГРЮЛ в 1С 7.7

Программист 1С v7.7 1С:Комплексная автоматизация IT и автоматизация бизнеса
← На главную

При автоматизации заполнения справочников в 1С 7.7 часто возникает необходимость получать свежие данные о контрагентах (наименование, КПП, ОГРН, юридический адрес, ФИО руководителя) непосредственно из веб-сервисов, таких как «1С:Контрагент». В современных конфигурациях на платформе 1С 8.3 этот механизм построен на использовании объектов XDTO, которых нет в 1С 7.7. Рассмотрим технические варианты решения этой задачи и разберем, как реализовать получение данных из ЕГРЮЛ в устаревшей платформе.

Принцип работы сервиса и роль XDTO

Проанализируем структуру взаимодействия с сервисом «1С:Контрагент». Объект XDTO в 1С 8 — это лишь внутренний инструмент платформы для удобного формирования XML или JSON и их сериализации. На сетевом уровне сервис принимает стандартные HTTP/HTTPS-запросы (SOAP или REST API) и возвращает ответ в формате XML или JSON.

Таким образом, с технической точки зрения отправка запроса из 1С 7.7 вполне возможна. Основная задача программиста — сформировать правильный HTTP-запрос с авторизационными данными ИТС и корректно разобрать полученную строку ответа.

Ограничения платформы 1С 7.7 и системные нюансы

Выясним, с какими техническими сложностями придется столкнуться при реализации запросов непосредственно из 1С 7.7:

  1. Поддержка современных протоколов шифрования (TLS 1.2 / TLS 1.3): веб-сервисы требуют безопасное соединение. Если база 1С 7.7 развернута на устаревшей операционной системе (например, Windows Server 2008 R2 или старше), стандартные системные объекты Windows могут вызывать ошибку соединения из-за отсутствия поддержки актуальных протоколов TLS.
  2. Отсутствие встроенных средств работы с JSON и XML: в языке 7.7 нет нативных функций для парсинга JSON или работы с моделью DOM XML, поэтому требуется привлекать COM-объекты или внешние компоненты.
  3. Различия в кодировках: платформа 1С 7.7 работает в кодировке Windows-1251, тогда как REST/SOAP сервисы возвращают ответ в UTF-8. Потребуется выполняять перекодировку полученных данных.

Вариант 1. Прямой HTTP-запрос через системные COM-объекты

Рассмотрим пошагово способ отправки запроса с использованием объекта WinHttp.WinHttpRequest.5.1 или MSXML2.ServerXMLHTTP. Этот вариант подходит, если операционная система поддерживает TLS 1.2.

Разберем пример формирования структуры вызова через COM-объект:


HTTP = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
HTTP.Open("GET", URLСервиса, 0);
HTTP.SetRequestHeader("Content-Type", "application/json; charset=utf-8");
HTTP.SetRequestHeader("Authorization", ЗаголовокАвторизации);
HTTP.Send();

Если HTTP.Status = 200 Тогда
    ОтветСервера = HTTP.ResponseText;
    // Далее выполняется разбор полученного текста ответа
КонецЕсли;

Для разбора ответа в формате XML можно использовать COM-объект MSXML2.DOMDocument. Если сервис возвращает JSON, для разбора структуры в 32-битной среде применяют MSScriptControl.ScriptControl либо специализированные внешние компоненты обработки строк.

Вариант 2. Использование консольной утилиты cURL (bypass TLS)

Если операционная система не поддерживает нужный протокол TLS через COM-объекты, проанализируем альтернативный метод. Из 1С 7.7 через команду ЗапуститьПриложение вызывается консольная утилита curl, которая отправляет запрос и сохраняет ответ во временный файл.

Рассмотрим пошаговый алгоритм этого метода:

  1. Формируется текстовый файл с параметрами или строка команды с указанием URL, заголовков авторизации и пути к выходному файлу.
  2. Вызывается утилита curl с ключом вывода результата во временный файл.
  3. Средствами 1С 7.7 считывается полученный файл и производится разбор текста.

Вариант 3. Промежуточный шлюз (микросервис)

Посмотрим на наиболее архитектурно надежное решение. Для исключения проблем с кодировками, парсингом JSON и версиями TLS создается промежуточный микросервис (например, HTTP-сервис на базе 1С 8.3 или простой скрипт на Python).

Схема взаимодействия выглядит следующим образом:

  1. 1С 7.7 отправляет простой GET-запрос на промежуточный шлюз, передавая только ИНН контрагента.
  2. Шлюз обращается к сервису «1С:Контрагент», используя штатные механизмы (XDTO или HTTP), получает полный ответ ЕГРЮЛ и обрабатывает его.
  3. Шлюз возвращает в 1С 7.7 ответ в упрощенном виде (например, простой XML или текстовый файл с разделителями в кодировке Windows-1251).

Встроенная проверка контрагентов в регламентированных отчетах

Обратим внимание на штатный механизм, который уже присутствует в конфигурациях 1С 7.7. В комплекте регламентированной отчетности (в частности, в Декларации по НДС, разделы 8–9) реализована кнопка «Проверить контрагентов на сайте ФНС».

Разберем особенности этого встроенного функционала:

← На главную