При работе с системой МДЛП (Маркировка лекарственных препаратов) в конфигурации 1С:Розница. Аптека 2.3 пользователи часто сталкиваются с критической ошибкой, когда выполняется запрос остатков из системы "Честный знак" или первичная авторизация. Система выдает сообщение: "Не удалось получить данные для подписания по причине: Ошибка при получении кода аутентификации: Не удалось установить HTTP-соединение с сервером api.mdlp.crpt.ru". Причиной указывается, что удаленный узел не прошел проверку. Проанализируем ситуацию и разберем пошагово, как восстановить работоспособность обмена.
Основная причина данной проблемы заключается в изменении цепочки сертификатов безопасности на стороне серверов ЦРПТ (Честный ЗНАК). С конца 2024 года продуктовый контур МДЛП перешел на использование TLS-сертификатов, выпущенных российским удостоверяющим центром (Минцифры). Помимо проблем с TLS, для стабильной работы в интерфейсе РМК также важно настроить автоматическое обновление токенов ИС МП, иначе авторизация будет регулярно прерываться. Если на компьютере или сервере, где выполняется код 1С, отсутствуют актуальные корневые и промежуточные сертификаты Минцифры, защищенное соединение обрывается еще до передачи данных логина и пароля.
Важно различать: сертификат вашей электронной подписи (КЭП) может быть полностью исправен и проходить проверку в 1С, но ошибка возникает на уровне протокола HTTPS. В некоторых случаях для диагностики полезно использовать инструменты, позволяющие выполнить получение информации по кодам марок из Честного знака в обход типовых механизмов (поможет универсальное решение для автоматизации интеграции с ЦРПТ и МДЛП), чтобы убедиться в доступности API.
Первым делом необходимо убедиться, что операционная система доверяет узлу api.mdlp.crpt.ru. Рассмотрим алгоритм действий для Windows:
https://api.mdlp.crpt.ru/api/v1/auth в браузере (например, Chrome или Яндекс.Браузер). Если браузер выдает предупреждение о небезопасном подключении, значит, корневые сертификаты отсутствуют.1C:Enterprise Server Agent. Также рекомендуется установить сертификаты в хранилище "Локальный компьютер".Если установка сертификатов в ОС не помогает (особенно актуально для серверных баз на Windows или Linux), проблему можно решить принудительным указанием параметров защищенного соединения в коде 1С. Это позволит системе корректно обрабатывать запрос списка кодов маркировки по заданным фильтрам и другие операции обмена.
Нам необходимо внести изменения в общий модуль ТранспортМДЛПКлиентСервер. Найдем функцию ВыполнитьHTTPЗапрос. Суть правки заключается в том, чтобы при обращении к серверу МДЛП использовать объект ЗащищенноеСоединениеOpenSSL, который позволяет платформе более гибко работать с сертификатами.
Рассмотрите пример кода, который нужно внедрить (лучше всего использовать расширение с аннотацией &Вместо):
&Вместо("ВыполнитьHTTPЗапрос")
Функция EF_ВыполнитьHTTPЗапрос(ТранспортныйМодуль, ДанныеЗапроса, Перенаправления, Соединение = Неопределено)
Адрес = ТранспортныйМодуль.Адрес;
Порт = ТранспортныйМодуль.Порт;
// ... получение логина/пароля из параметров ...
Если Соединение = Неопределено Тогда
Если ТранспортныйМодуль.Адрес = "api.mdlp.crpt.ru" Тогда
// Принудительно создаем новое защищенное соединение для МДЛП
Защита = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение(Адрес, Порт, , , , ТранспортныйМодуль.Таймаут, Защита);
Иначе
// Стандартная логика для других узлов
Соединение = Новый HTTPСоединение(Адрес, Порт, , , , ТранспортныйМодуль.Таймаут, ЗащищенноеСоединение);
КонецЕсли;
КонецЕсли;
// Вызов метода
Попытка
HTTPЗапрос = Новый HTTPЗапрос(ДанныеЗапроса.АдресРесурса, ДанныеЗапроса.Заголовки);
Если ДанныеЗапроса.ТипЗапроса = "POST" Тогда
HTTPЗапрос.УстановитьТелоИзСтроки(ДанныеЗапроса.Тело);
КонецЕсли;
HTTPОтвет = Соединение.ВызватьHTTPМетод(ДанныеЗапроса.ТипЗапроса, HTTPЗапрос);
Исключение
// Обработка ошибок
ВызватьИсключение;
КонецПопытки;
Возврат HTTPОтвет;
КонецФункции
Обратите внимание: При создании объекта ЗащищенноеСоединениеOpenSSL() не забудьте про пустые скобки. Правильная настройка программного интерфейса критична, если вы используете механизмы, где требуется синхронизация номенклатуры с ЕСКЛП и МДЛП, так как ошибки соединения заблокируют обновление данных о лекарственных препаратах.
Если ваш сервер 1С работает под управлением Linux, установка сертификатов в хранилище Windows не поможет. Выполним следующие шаги для настройки окружения:
sudo apt-get update и sudo apt-get install ca-certificates./usr/local/share/ca-certificates/ и выполните sudo update-ca-certificates.openssl.cnf должны быть прописаны соответствующие алгоритмы (LEGACY-GOST и т.д.).cacert.pem, который находится в каталоге установленной платформы 1С.Разработчики отраслевого решения "Розница. Аптека" выпускают оперативные исправления. Если после настройки связи выясняется, что данные в системе и в "Честном знаке" всё равно расходятся, может потребоваться специализированная конфигурация для инвентаризации маркировки, которая поможет выявить расхождения на складе — для этого подойдёт обработка инвентаризации кодов маркировки и выравнивания остатков.
Вендор предлагает патчи, которые принудительно переносят выполнение запроса авторизации с сервера на сторону клиента (Тонкий клиент). Это эффективно, так как на клиентском рабочем месте обычно уже настроены и КриптоПро, и все необходимые цепочки сертификатов для работы в браузере. Убедитесь, что у вас установлена последняя версия конфигурации (не ниже 2.3.23.65) и все актуальные исправления.
Подведем итог: решение проблемы чаще всего кроется в комбинации установки корневых сертификатов Минцифры в системное хранилище и небольшом исправлении общего модуля для использования OpenSSL при инициализации HTTP-соединения. Проанализировав эти шаги, вы сможете восстановить обмен с МДЛП и успешно провести сверку остатков — для восстановления работы есть инструмент восстановления работоспособности маркировки.