При автоматизации заполнения справочников в 1С 7.7 часто возникает необходимость получать свежие данные о контрагентах (наименование, КПП, ОГРН, юридический адрес, ФИО руководителя) непосредственно из веб-сервисов, таких как «1С:Контрагент». В современных конфигурациях на платформе 1С 8.3 этот механизм построен на использовании объектов XDTO, которых нет в 1С 7.7. Рассмотрим технические варианты решения этой задачи и разберем, как реализовать получение данных из ЕГРЮЛ в устаревшей платформе.
Проанализируем структуру взаимодействия с сервисом «1С:Контрагент». Объект XDTO в 1С 8 — это лишь внутренний инструмент платформы для удобного формирования XML или JSON и их сериализации. На сетевом уровне сервис принимает стандартные HTTP/HTTPS-запросы (SOAP или REST API) и возвращает ответ в формате XML или JSON.
Таким образом, с технической точки зрения отправка запроса из 1С 7.7 вполне возможна. Основная задача программиста — сформировать правильный HTTP-запрос с авторизационными данными ИТС и корректно разобрать полученную строку ответа.
Выясним, с какими техническими сложностями придется столкнуться при реализации запросов непосредственно из 1С 7.7:
Рассмотрим пошагово способ отправки запроса с использованием объекта 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 либо специализированные внешние компоненты обработки строк.
Если операционная система не поддерживает нужный протокол TLS через COM-объекты, проанализируем альтернативный метод. Из 1С 7.7 через команду ЗапуститьПриложение вызывается консольная утилита curl, которая отправляет запрос и сохраняет ответ во временный файл.
Рассмотрим пошаговый алгоритм этого метода:
curl с ключом вывода результата во временный файл.Посмотрим на наиболее архитектурно надежное решение. Для исключения проблем с кодировками, парсингом JSON и версиями TLS создается промежуточный микросервис (например, HTTP-сервис на базе 1С 8.3 или простой скрипт на Python).
Схема взаимодействия выглядит следующим образом:
Обратим внимание на штатный механизм, который уже присутствует в конфигурациях 1С 7.7. В комплекте регламентированной отчетности (в частности, в Декларации по НДС, разделы 8–9) реализована кнопка «Проверить контрагентов на сайте ФНС».
Разберем особенности этого встроенного функционала: