Сервис 1С:Контрагент является незаменимым инструментом для автоматизации ввода данных, однако пользователи устаревших конфигураций, таких как Управление торговлей 10.3, часто сталкиваются с техническими сбоями. Основные причины проблем в последнее время — это изменение протоколов безопасности, обновление адресных схем API и переход на российские сертификаты шифрования. В этой статье мы подробно разберем, как восстановить работоспособность сервиса, если он перестал заполнять данные по ИНН.
Первое, с чего стоит начать анализ ситуации, — это проверка адреса веб-сервиса, к которому обращается ваша программа. Фирма 1С обновила API сервиса «1С:Контрагент». Ранее широко использовалась версия v7, но теперь актуальной является версия v1. Несмотря на индекс, это более современный и унифицированный интерфейс. Если ваш программный код все еще пытается достучаться до v7, вы получите ошибку или пустой ответ.
Проанализируем необходимые изменения в коде. Вам нужно найти место инициализации WSОпределения и WSПрокси (обычно это общий модуль ДанныеЕдиныхГосРеестров или внешняя обработка). Обновите параметры подключения согласно следующим данным:
// Новые параметры для подключения к сервису
АдресСервиса = "https://api.orgregister.1c.ru/ws/corporation/v1?wsdl";
ПространствоИмен = "http://ws.corporation.company1c.com/";
ИмяСервиса = "CorpWsImplService";
ИмяТочкиПодключения = "CorpWsImplPort";
Метод = "findCorporationByInn";
Обратите внимание, что метод findCorporationByInn теперь возвращает данные в обновленной структуре XDTO. Рассмотрим подробнее, как это влияет на обработку ответа в следующих разделах.
Самая частая ошибка, с которой сталкиваются администраторы и программисты на платформах ниже 8.3.22, звучит так: «Ошибка работы с Интернет: Удаленный узел не прошел проверку». Это означает, что платформа 1С не может проверить подлинность SSL-сертификата сервера 1С:Контрагент.
Выясним причину: это происходит из-за перехода сервисов 1С на сертификаты, выданные российскими удостоверяющими центрами (Минцифры), о которых старые версии платформы ничего не знают. Список доверенных центров хранится в файле cacert.pem внутри каталога платформы.
Для решения этой проблемы без обновления всей платформы (что не всегда возможно в корпоративной среде), выполним следующие шаги:
C:\Program Files\1cv8\{НомерВерсии}\bin\.cacert.pem на новый./opt/1cv8/x86_64/{версия}/bin/cacert.pem.После этой манипуляции платформа начнет доверять сертификатам Минцифры, и ошибка «Удаленный узел не прошел проверку» должна исчезнуть.
Помимо сертификатов, важную роль играет протокол шифрования. Современные сервера API 1С блокируют соединения по устаревшим протоколам TLS 1.0 и 1.1 из соображений безопасности. Если ваша операционная система (например, Windows Server 2008 R2 или Windows 7) не настроена на работу с TLS 1.2, замена файла cacert.pem не поможет.
В этом случае необходимо убедиться, что в ОС установлены соответствующие обновления безопасности (например, KB3140245 для Windows 7) и в реестре включена поддержка TLS 1.2. Проверить это можно, попробовав открыть адрес https://api.orgregister.1c.ru через Internet Explorer. Если страница не открывается с ошибкой протокола — проблема в настройках ОС.
Даже если соединение установлено, вы можете столкнуться с ошибкой при попытке создать объекты для хранения адреса. Рассмотрим пример из практики: ошибка «Несоответствие типов (параметр номер '1')» при вызове ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИменКИ, "АдресРФ")).
Проанализируем ситуацию: в старых редакциях УТ 10.3 (например, версия 10.3.35 и ниже) в дереве метаданных может отсутствовать пакет XDTO КонтактнаяИнформация (или ContactInfo), либо его схема безнадежно устарела. Современный API возвращает адрес в формате ФИАС (с использованием GUID), в то время как старая конфигурация ожидает текстовые поля или структуру КЛАДР.
Чтобы решить эту проблему, у нас есть два пути:
КонтактнаяИнформация из любой современной базы (например, Бухгалтерия предприятия 3.0) в виде XML-схемы и импортировать его в вашу УТ 10.3. После этого ФабрикаXDTO сможет распознавать типы данных, приходящие от сервиса.При использовании нового API v1, важно правильно обращаться к пространству имен. Если в вашей обработке используется жесткая привязка к старым URL, код будет выдавать ошибку несоответствия типов. Рассмотрим, как правильно определить пространство имен для контактной информации:
Функция ПространствоИменКонтактнойИнформации()
// Для актуальных конфигураций используется этот URI
Возврат "http://www.v8.1c.ru/ssl/contactinfo";
КонецФункции
// Пример создания объекта адреса
ТипАдресРФ = ФабрикаXDTO.Тип(ПространствоИменКонтактнойИнформации(), "АдресРФ");
АдресОбъект = ФабрикаXDTO.Создать(ТипАдресРФ);
Если после добавления пакета XDTO ошибка сохраняется, убедитесь, что в коде не перепутаны локальные имена типов. В новых схемах часто используются типы Address вместо Адрес или требуются дополнительные вложенные объекты для представления муниципальной структуры адреса.
Для старых баз УТ 10.3 мы рекомендуем не вносить изменения напрямую в общий модуль ДанныеЕдиныхГосРеестров, а использовать внешнюю обработку «Заполнение реквизитов по ИНН». Фирма 1С часто выпускает обновленные версии этой обработки в составе дистрибутивов обновлений конфигурации.
Преимущество этого подхода в том, что внешняя обработка может содержать в себе все необходимые механизмы обхода ограничений старых платформ, и её обновление не требует снятия конфигурации с поддержки. Кроме того, в коде внешних обработок часто реализована возможность игнорирования ошибок SSL, что позволяет сервису работать даже на проблемных конфигурациях серверов (хотя это и снижает безопасность соединения).
Подводя итог, восстановление работы сервиса 1С:Контрагент в старой доброй УТ 10.3 — задача комплексная. Она требует как обновления системных файлов платформы (cacert.pem), так и корректировки программного кода под новые стандарты API. Пройдя по всем шагам, описанным выше, вы обеспечите стабильную работу системы и избавите пользователей от ручного ввода данных контрагентов.