Как исправить ошибку «Заполнить по ИНН» в 1С:УПП и КА 1.1?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

Многие пользователи и администраторы систем 1С:Управление производственным предприятием (УПП 1.3) и 1С:Комплексная автоматизация (КА 1.1) сталкиваются с критической ошибкой при попытке автоматически заполнить данные контрагента по ИНН. Система выдает сообщения вида «Код ответа сервера: 500» или «Код ответа сервера: 410». В этой статье мы подробно разберем причины возникновения проблемы и рассмотрим пошаговые алгоритмы её решения: от простых системных манипуляций до глубокой правки программного кода.

Проанализируем причину возникновения ошибки

Ошибка при вызове конструктора WSОпределения возникает в тот момент, когда платформа 1С пытается обратиться к веб-сервису проверки контрагентов. Рассмотрим, почему это происходит:

  1. Отключение старых адресов (Ошибка 410): Компания 1С периодически обновляет инфраструктуру своего API. Адрес (endpoint), который жестко прописан в коде старых релизов конфигураций, просто перестает существовать. Сервер возвращает статус 410 (Gone), что означает «ресурс удален навсегда».
  2. Несоответствие протоколов безопасности: Сервисы 1С перешли на использование защищенного протокола TLS 1.2 и выше. Старые версии платформы или устаревшие файлы корневых сертификатов не могут установить доверенное соединение.
  3. Изменение структуры данных XDTO: Сервис «1С:Контрагент» обновил не только адреса, но и названия методов. Вместо привычного getCorporationRequisitesByINN теперь используются иные функции, что вызывает ошибку 500 на стороне сервера из-за некорректного формата запроса.

Решение 1: Обновление сертификатов безопасности (cacert.pem)

Разберем ситуацию, когда программный код верен, но соединение обрывается на уровне SSL. В папке установленной платформы 1С хранится файл cacert.pem, содержащий список доверенных центров сертификации. Если этот файл устарел, 1С не сможет проверить подлинность сервера 1С:Контрагент.

Выполним следующие шаги:

  1. Найдем путь к текущей версии платформы, например: C:\Program Files (x86)\1cv8\8.3.XX.XXXX\bin\.
  2. В этой папке найдем файл cacert.pem.
  3. Возьмем аналогичный файл из более свежего релиза платформы (например, 8.3.18 и выше) и заменим им старый файл.
  4. Важный нюанс: Перезапуск 1С обычно не требуется, изменения подхватываются «на лету» при следующем обращении к сервису.

Решение 2: Проверка параметров интернет-поддержки

Иногда корень проблемы кроется в «слетевших» настройках авторизации. Выясним, все ли в порядке с учетными данными. Проанализируем регистр сведений Параметры интернет поддержки пользователей. В некоторых случаях поле password может оказаться пустым или содержать неактуальные данные.

Проверим записи с областью видимости startup. Пароль в этом регистре часто хранится в открытом виде. Убедимся, что логин и пароль соответствуют вашему личному кабинету на портале 1С:ИТС. Без валидной авторизации сервер будет возвращать ошибку при попытке создания WSПрокси.

Решение 3: Программная правка адресов и методов (для разработчиков)

Если обновление платформы невозможно или не помогает, придется внести изменения в программный код. Рассмотрим, как адаптировать модуль СервисДанныхЕдиныхГосРеестров или ОбщегоНазначенияПовтИсп под новые требования API.

Нам необходимо изменить базовый URL сервиса и названия методов для поиска юридических лиц и индивидуальных предпринимателей. Посмотрим на пример реализации новых функций для подключения:


Функция ПараметрыСервисаЮридическиеЛица() Экспорт
    Результат = Новый Структура;
    Результат.Вставить("URL", "https://api.orginfo.1c.ru/ws/corporation/v1?wsdl");
    Результат.Вставить("Имя" , "CorpWsImplService");
    Результат.Вставить("URIПространстваИмен", "http://corporation.v1.ws.orginfo.1c.ru/");
    Результат.Вставить("ИмяТочкиПодключения", "CorpWsImplPort");
    Возврат Результат;
КонецФункции

Функция ПараметрыСервисаИндивидуальныеПредприниматели() Экспорт
    Результат = Новый Структура;
    Результат.Вставить("URL", "https://api.orginfo.1c.ru/ws/entrepreneur/v1?wsdl");
    Результат.Вставить("Имя" , "EntrWsImplService");
    Результат.Вставить("URIПространстваИмен", "http://entrepreneur.v1.ws.orginfo.1c.ru/");
    Результат.Вставить("ИмяТочкиПодключения", "EntrWsImplPort");
    Возврат Результат;
КонецФункции

Обратите внимание, что теперь используются разные эндпоинты для организаций и ИП. Разберем процесс вызова метода findCorporationByInn, который пришел на смену старым процедурам:


// В функции РеквизитыЮрЛицаПоИНН(ИНН)
ПараметрыСервиса = ПараметрыСервисаЮридическиеЛица();
Прокси = ОбщегоНазначения.WSПрокси(
    ПараметрыСервиса.URL, 
    ПараметрыСервиса.URIПространстваИмен, 
    ПараметрыСервиса.Имя, 
    ПараметрыСервиса.ИмяТочкиПодключения, 
    Логин, Пароль, 30);

Если Прокси <> Неопределено Тогда
    ВходныеПараметры = Прокси.ФабрикаXDTO.Создать(
        Прокси.ФабрикаXDTO.Тип(ПараметрыСервиса.URIПространстваИмен, "findCorporationByInn"));
    ВходныеПараметры.INN = ИНН;
    
    // Обязательно добавляем параметры конфигурации, иначе сервис может вернуть 500
    ВходныеПараметры.additionalParameters = СформироватьДопПараметры(Прокси.ФабрикаXDTO);
    
    Попытка
        Ответ = Прокси.findCorporationByInn(ВходныеПараметры);
        ОбъектXDTO = Ответ.РеквизитыЮрЛица;
    Исключение
        // Обработка ошибки
    КонецПопытки;
КонецЕсли;

Нюансы работы с форматом адреса

Современные сервисы 1С поддерживают формат адреса ФИАС. Однако старые конфигурации (УПП, КА) рассчитаны на формат КЛАДР. Если принудительно включить поддержку нового формата адреса в запросе, данные могут загрузиться некорректно или выдать ошибку при разборе XDTO.

Проанализируем функцию формирования дополнительных параметров. Рекомендуется закомментировать параметр SupportsAddressFormatV2, чтобы сервер отдавал данные в формате, совместимом со старыми справочниками адресов:


Функция ДополнительныеПараметрыВызова(ФабрикаXDTOСервиса, URI)
    ТипДопПараметры = ФабрикаXDTOСервиса.Тип(URI, "AdditionalParameters");
    Результат = ФабрикаXDTOСервиса.Создать(ТипДопПараметры);
    
    // Указываем имя конфигурации
    ДопПараметр = ФабрикаXDTOСервиса.Создать(ФабрикаXDTOСервиса.Тип(URI, "AdditionalParameter"));
    ДопПараметр.name = "ConfigurationName";
    ДопПараметр.value = "УправлениеПроизводственнымПредприятием";
    Результат.Parameter.Добавить(ДопПараметр);
    
    // НЕ включаем SupportsAddressFormatV2 для старых конфигураций
    Возврат Результат;
КонецФункции

Подведем итоги

Мы рассмотрели три уровня решения проблемы с заполнением данных по ИНН. Если вы используете сильно кастомизированную конфигурацию 1С:УПП 1.3 или 1С:КА 1.1, которая не обновлялась долгое время, наиболее надежным способом будет ручная коррекция общего модуля с подстановкой новых адресов api.orginfo.1c.ru и методов findCorporationByInn / findEntrepreneurByInn. Не забывайте также проверять актуальность файла cacert.pem в каталоге платформы, так как без него даже самый правильный код не сможет преодолеть барьер безопасности SSL-соединения.

← На главную