Как настроить интеграцию с МДЛП в 1С и устранить ошибки аутентификации

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

Работа с маркировкой лекарственных препаратов требует точной настройки взаимодействия между системой «1С:Предприятие» и серверами Честного Знака. Одной из наиболее распространенных проблем при первичной настройке Библиотеки МДЛП (БМДЛП) является ошибка авторизации, сопровождающаяся кодом 404 или сообщениями о неудачной подписи данных. В рамках данной статьи мы разберем, как правильно сконфигурировать библиотеку, где получить необходимые ключи доступа и как избежать типовых ошибок при интеграции в прикладные решения, такие как УТ 11.

Версия библиотеки: почему это критично

Прежде всего, проанализируем ситуацию с версиями. В обсуждении упоминаются версии 1.1.1.4 и 1.1.2.7. Важно понимать, что протоколы обмена МДЛП постоянно эволюционируют. На сегодняшний день эти релизы считаются глубоко устаревшими. Старые версии не поддерживают актуальные схемы XML (например, переход на схемы 1.37 и выше) и механизмы двухэтапной аутентификации.

Рекомендация: Всегда используйте актуальную версию БМДЛП, которая входит в состав последних релизов типовых конфигураций или поставляется отдельно. Если ваша библиотека ниже версии 1.1.26, вы неизбежно столкнетесь с ошибками парсинга ответов сервера или невозможностью авторизации, так как Честный Знак отключает поддержку старых методов API. При обслуживании нескольких баз автоматизировать регулярную установку актуальных релизов конфигураций можно с помощью программы для пакетного обновления и обслуживания 1С.

Настройка параметров аутентификации: Client ID и Client Secret

Для подключения к API МДЛП недостаточно иметь только регистрационный номер организации. Система требует уникальную пару ключей для вашей информационной системы. Разберем по шагам, как их получить:

  1. Зайдите в Личный кабинет МДЛП (выберите соответствующий контур: промышленный или песочницу).
  2. Перейдите в раздел Профиль, затем выберите вкладку Сведения об участнике.
  3. Найдите подраздел Информационные системы.
  4. Нажмите кнопку Добавить информационную систему. Введите произвольное название (например, "1С:УТ").
  5. После сохранения система сгенерирует Идентификатор клиента (Client ID) и Секрет клиента (Client Secret).

Внимание: Поле Секрет клиента отображается только один раз в момент создания записи. Если вы не сохранили его сразу, восстановить его невозможно. В этом случае придется удалить старую запись информационной системы и создать новую, чтобы получить новый секретный код.

Разбор ошибки 404: неверный адрес или путаница в данных

Ошибка 404 Запрашиваемый ресурс не найден на сервере при выполнении POST-запроса к /api/v1/auth чаще всего возникает по двум причинам. Проанализируем их подробнее.

1. Несоответствие адреса API и учетных данных. Это самая частая причина, с которой столкнулся автор темы. Данные Client ID и Client Secret, полученные в «Песочнице» (тестовом контуре), не будут работать на «Продуктиве» (рабочем контуре), и наоборот. Если вы указываете адрес api.sb.mdlp.crpt.ru, то и ключи должны быть из тестового личного кабинета.

2. Ошибки в написании адреса сервера. В настройках 1С адрес сервера должен указываться без лишних префиксов и завершающих слэшей, если библиотека добавляет их автоматически. Проверьте правильность адресов:

Если при попытке авторизации вы получаете 404, убедитесь, что в Личном кабинете созданная вами информационная система находится в статусе «Активна».

Интеграция БМДЛП в конфигурацию (на примере УТ 11)

При внедрении библиотеки в нетиповую конфигурацию или при ручной доработке типовой (например, 1С:Управление торговлей) возникает вопрос настройки Определяемых типов. Рассмотрим настройку типа ВладелецПрисоединенныхФайлов.

Этот тип данных является частью Библиотеки стандартных подсистем (БСП) и используется МДЛП для хранения логов обмена, квитанций и вложенных документов. Рассмотрим, какие объекты необходимо в него включать:

В список ВладелецПрисоединенныхФайлов следует добавлять исключительно Ссылки на документы подсистемы МДЛП. К ним относятся:

Важно: Не выбирайте типы, заканчивающиеся на ...Объект или ...Менеджер. Выбор таких типов приведет к критическим ошибкам при попытке прикрепить файл к документу в режиме «1С:Предприятие».

Пример программной проверки статуса подключения

Для диагностики проблем можно использовать методы встроенного модуля библиотеки. Рассмотрим фрагмент кода, который позволяет понять, на каком этапе происходит сбой при обмене данными:


// Пример упрощенной проверки подключения к API МДЛП
ПараметрыПодключения = МДЛПВызовСервера.ПараметрыПодключения();
ПараметрыПодключения.АдресСервера = "api.sb.mdlp.crpt.ru";
ПараметрыПодключения.ИдентификаторКлиента = "ВАШ_CLIENT_ID";
ПараметрыПодключения.СекретКлиента = "ВАШ_CLIENT_SECRET";

Результат = МДЛПСлужебный.ВыполнитьАвторизацию(ПараметрыПодключения);

Если Результат.Ошибка Тогда
    Сообщить("Ошибка авторизации: " + Результат.ТекстОшибки);
    // Проанализируем код ответа, если он доступен
    Если Найти(Результат.ТекстОшибки, "404") > 0 Тогда
        Сообщить("Проверьте правильность адреса сервера и соответствие Client ID выбранному контуру!");
    КонецЕсли;
Иначе
    Сообщить("Авторизация прошла успешно. Токен получен.");
КонецЕсли;

Дополнительные рекомендации по стабильной работе

Разберем еще несколько нюансов, которые могут блокировать работу с МДЛП:

  1. Синхронизация времени. МДЛП крайне чувствителен к точности времени на сервере 1С. Разница более чем в 2-3 минуты с временем серверов Честного Знака приведет к отклонению подписи. Настройте синхронизацию времени по NTP.
  2. Криптопровайдер на сервере. Если вы работаете в клиент-серверном варианте, убедитесь, что программа-криптопровайдер (КриптоПро CSP или VipNet CSP) установлена именно на сервере приложений 1С, а не только на рабочем месте пользователя. Также проверьте, что под пользователем, от имени которого запущен сервер 1С, доступны сертификаты.
  3. Пин-код ключа. Если в настройках сертификата в 1С не сохранен пин-код, автоматический обмен (например, через регламентные задания) будет завершаться с ошибкой подписи.

Проанализировав ситуацию, мы видим, что большинство проблем решается внимательной проверкой соответствия настроек конкретному серверу (тест/рабочий) и использованием актуальных версий библиотек от разработчика.

← На главную