В процессе ведения учета в 1С часто возникает необходимость автоматической проверки контрагентов в различных государственных реестрах. Одним из наиболее востребованных является Реестр операторов персональных данных Роскомнадзора (РКН). Поскольку официальное и открытое API у ведомства зачастую отсутствует или труднодоступно для малого бизнеса, разработчикам приходится искать альтернативные пути автоматизации. В этой статье мы подробно разберем несколько методов интеграции: от использования стандартных сервисов до реализации собственного парсера на языке 1С.
Прежде чем приступать к разработке сложного механизма парсинга сайта, проанализируем возможности встроенных сервисов. Фирма 1С предоставляет сервис 1С:Контрагент, который уже интегрирован в большинство типовых конфигураций. Он позволяет по ИНН получать основные регистрационные данные из ЕГРЮЛ/ЕГРИП.
Преимущества:
Контрагенты.Однако, если вашей целью является проверка специфической информации (например, факта регистрации в реестре операторов ПД), функционала 1С:Контрагент может быть недостаточно. В этом случае перейдем к более гибким техническим решениям.
Разберем ситуацию, когда нам необходимо проверить наличие организации в реестре через форму поиска на официальном сайте Роскомнадзора. Как было предложено в обсуждении, для этого можно использовать метод эмуляции действий пользователя.
Шаг 1. Анализ запроса.
Для начала нам нужно понять, какой запрос уходит на сервер при нажатии кнопки "Найти" на сайте. Рекомендуем использовать инструменты отладки (например, Fiddler или встроенный "Инспектор" в браузере на вкладке Network). Проанализируем URL запроса, его тип (обычно POST) и передаваемые параметры (тело запроса, содержащее ИНН).
Шаг 2. Написание кода в 1С.
Для реализации запроса в 1С мы будем использовать объекты HTTPСоединение и HTTPЗапрос. Важно помнить, что серверы госорганов часто блокируют запросы без корректных заголовков. Нам обязательно нужно установить User-Agent, имитирующий браузер.
Рассмотрим пример кода для отправки запроса:
Соединение = Новый HTTPСоединение("pd.rkn.gov.ru", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/operators-registry/operators/search/");
// Формируем заголовки
Запрос.Заголовки.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
Запрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
// Тело запроса с параметрами поиска (пример)
ТекстЗапроса = "inn=" + Объект.ИНН + "&search=Найти";
Запрос.УстановитьТелоИзСтроки(ТекстЗапроса);
Попытка
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ТекстHTML = Ответ.ПолучитьТелоИзСтроки();
// Здесь начинается этап парсинга
КонецЕсли;
Исключение
Сообщить("Ошибка связи с сервером РКН: " + ОписаниеОшибки());
КонецПопытки;
Шаг 3. Обработка результата.
После получения текста HTML нам нужно выяснить, найден ли контрагент. Для этого можно использовать регулярные выражения или простую функцию СтрНайти. Если в полученном тексте присутствует ИНН организации и ссылка на карточку оператора, значит, организация состоит на учете.
Проанализируем более надежный способ — использование коммерческих API, таких как Dadata. Эти сервисы уже агрегируют данные из РКН, ФНС и других ведомств, предоставляя удобный JSON интерфейс. Это избавляет разработчика от необходимости бороться с капчей и изменениями верстки сайта РКН.
Разберем логику работы с такими сервисами:
JSON, который легко десериализовать в 1С с помощью функции ПрочитатьJSON.Пример обработки ответа:
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаОтвета);
Данные = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Если Данные.Свойство("suggestions") И Данные.suggestions.Количество() > 0 Тогда
// Обработка полученной информации
КонецЕсли;
Если нам не требуется оперативная проверка в режиме реального времени, рассмотрим вариант загрузки полных реестров. Роскомнадзор периодически публикует наборы данных в форматах XML или CSV.
Процесс автоматизации:
Этот метод является самым производительным для массовых проверок, так как исключает сетевые задержки при обработке каждого ИНН.
Выясним причины, по которым автоматизация через прямой парсинг сайта может давать сбои:
1. Защита от роботов (Капча). На портале Роскомнадзора часто внедряются механизмы защиты. Если ваш сервер 1С начнет отправлять слишком много запросов, IP-адрес может быть временно заблокирован, либо пользователю будет предложено решить капчу. Для обхода этого ограничения в 1С потребуется интеграция с сервисами распознавания капчи, что усложняет архитектуру решения.
2. Изменение структуры сайта. Ведомство может обновить дизайн или структуру HTML-кода в любой момент. В этом случае ваш код парсинга перестанет находить нужные теги. Поэтому при использовании прямого обращения к сайту важно предусмотреть систему логирования ошибок, чтобы оперативно узнать о поломке механизма.
3. Специфика реестров. Помните, что у РКН несколько реестров (СМИ, операторы связи, блокировки сайтов). У каждого из них может быть своя форма поиска и свои технические особенности обработки запросов. Перед началом разработки точно определите, какой именно реестр необходим для бизнес-задачи.
Резюме: для разовых проверок и быстрого старта оптимально использовать 1С:Контрагент или ручной поиск. Для глубокой автоматизации в рамках бизнес-процессов рекомендуется использовать API-агрегаторы данных. Прямой парсинг сайта через HTTPЗапрос стоит использовать только в случае отсутствия бюджета на платные API и необходимости получения данных, которые недоступны в файлах открытых данных.