Работа с маркировкой лекарственных препаратов требует точной настройки взаимодействия между системой «1С:Предприятие» и серверами Честного Знака. Одной из наиболее распространенных проблем при первичной настройке Библиотеки МДЛП (БМДЛП) является ошибка авторизации, сопровождающаяся кодом 404 или сообщениями о неудачной подписи данных. В рамках данной статьи мы разберем, как правильно сконфигурировать библиотеку, где получить необходимые ключи доступа и как избежать типовых ошибок при интеграции в прикладные решения, такие как УТ 11.
Прежде всего, проанализируем ситуацию с версиями. В обсуждении упоминаются версии 1.1.1.4 и 1.1.2.7. Важно понимать, что протоколы обмена МДЛП постоянно эволюционируют. На сегодняшний день эти релизы считаются глубоко устаревшими. Старые версии не поддерживают актуальные схемы XML (например, переход на схемы 1.37 и выше) и механизмы двухэтапной аутентификации.
Рекомендация: Всегда используйте актуальную версию БМДЛП, которая входит в состав последних релизов типовых конфигураций или поставляется отдельно. Если ваша библиотека ниже версии 1.1.26, вы неизбежно столкнетесь с ошибками парсинга ответов сервера или невозможностью авторизации, так как Честный Знак отключает поддержку старых методов API. При обслуживании нескольких баз автоматизировать регулярную установку актуальных релизов конфигураций можно с помощью программы для пакетного обновления и обслуживания 1С.
Для подключения к API МДЛП недостаточно иметь только регистрационный номер организации. Система требует уникальную пару ключей для вашей информационной системы. Разберем по шагам, как их получить:
Внимание: Поле Секрет клиента отображается только один раз в момент создания записи. Если вы не сохранили его сразу, восстановить его невозможно. В этом случае придется удалить старую запись информационной системы и создать новую, чтобы получить новый секретный код.
Ошибка 404 Запрашиваемый ресурс не найден на сервере при выполнении POST-запроса к /api/v1/auth чаще всего возникает по двум причинам. Проанализируем их подробнее.
1. Несоответствие адреса API и учетных данных. Это самая частая причина, с которой столкнулся автор темы. Данные Client ID и Client Secret, полученные в «Песочнице» (тестовом контуре), не будут работать на «Продуктиве» (рабочем контуре), и наоборот. Если вы указываете адрес api.sb.mdlp.crpt.ru, то и ключи должны быть из тестового личного кабинета.
2. Ошибки в написании адреса сервера. В настройках 1С адрес сервера должен указываться без лишних префиксов и завершающих слэшей, если библиотека добавляет их автоматически. Проверьте правильность адресов:
https://api.mdlp.crpt.ruhttps://api.sb.mdlp.crpt.ruЕсли при попытке авторизации вы получаете 404, убедитесь, что в Личном кабинете созданная вами информационная система находится в статусе «Активна».
При внедрении библиотеки в нетиповую конфигурацию или при ручной доработке типовой (например, 1С:Управление торговлей) возникает вопрос настройки Определяемых типов. Рассмотрим настройку типа ВладелецПрисоединенныхФайлов.
Этот тип данных является частью Библиотеки стандартных подсистем (БСП) и используется МДЛП для хранения логов обмена, квитанций и вложенных документов. Рассмотрим, какие объекты необходимо в него включать:
В список ВладелецПрисоединенныхФайлов следует добавлять исключительно Ссылки на документы подсистемы МДЛП. К ним относятся:
ДокументСсылка.УведомлениеОПриемкеЛекарственныхПрепаратовМДЛПДокументСсылка.УведомлениеОбОтгрузкеЛекарственныхПрепаратовМДЛПДокументСсылка.УведомлениеОВводеВГражданскийОборотМДЛПВажно: Не выбирайте типы, заканчивающиеся на ...Объект или ...Менеджер. Выбор таких типов приведет к критическим ошибкам при попытке прикрепить файл к документу в режиме «1С:Предприятие».
Для диагностики проблем можно использовать методы встроенного модуля библиотеки. Рассмотрим фрагмент кода, который позволяет понять, на каком этапе происходит сбой при обмене данными:
// Пример упрощенной проверки подключения к API МДЛП
ПараметрыПодключения = МДЛПВызовСервера.ПараметрыПодключения();
ПараметрыПодключения.АдресСервера = "api.sb.mdlp.crpt.ru";
ПараметрыПодключения.ИдентификаторКлиента = "ВАШ_CLIENT_ID";
ПараметрыПодключения.СекретКлиента = "ВАШ_CLIENT_SECRET";
Результат = МДЛПСлужебный.ВыполнитьАвторизацию(ПараметрыПодключения);
Если Результат.Ошибка Тогда
Сообщить("Ошибка авторизации: " + Результат.ТекстОшибки);
// Проанализируем код ответа, если он доступен
Если Найти(Результат.ТекстОшибки, "404") > 0 Тогда
Сообщить("Проверьте правильность адреса сервера и соответствие Client ID выбранному контуру!");
КонецЕсли;
Иначе
Сообщить("Авторизация прошла успешно. Токен получен.");
КонецЕсли;
Разберем еще несколько нюансов, которые могут блокировать работу с МДЛП:
Проанализировав ситуацию, мы видим, что большинство проблем решается внимательной проверкой соответствия настроек конкретному серверу (тест/рабочий) и использованием актуальных версий библиотек от разработчика.