Как загрузить регистрационные удостоверения для лекарственных средств, не входящих в список ЖНВЛП?

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

При автоматизации учета в фармацевтической отрасли одной из наиболее трудоемких задач является сопоставление внутренней номенклатуры 1С с данными Государственного реестра лекарственных средств (ГРЛС). Основная сложность заключается в том, что реестр цен на жизненно необходимые и важнейшие лекарственные препараты (ЖНВЛП) содержит штрих-коды, что позволяет легко связать данные, тогда как основной реестр лекарственных средств (ГРЛС), где находятся препараты, не входящие в список ЖНВЛП, зачастую лишен этой информации. В этой статье мы разберем, как обойти это ограничение и корректно загрузить номера и даты регистрационных удостоверений (РУ).

Проблема разрозненности данных ГРЛС

Рассмотрим ситуацию подробнее. На портале Минздрава существует два ключевых раздела: реестр предельных отпускных цен (ЖНВЛП) и общий реестр зарегистрированных лекарственных средств. В первом случае мы имеем привязку к штрих-коду производителя (GTIN), что делает загрузку тривиальной. Во втором случае — для «обычных» лекарств — штрих-коды в открытых таблицах на сайте отсутствуют. Выясним причину: ГРЛС исторически строился как реестр разрешительных документов, а не как товарный каталог, поэтому связь «РУ — Упаковка — Штрих-код» там реализована неявно.

Решение 1: Использование полных XML-дампов и внутренних идентификаторов

Проанализируем предложение опытных разработчиков: вместо парсинга веб-страниц или поиска по штрих-коду следует скачивать полные справочники, которые Минздрав предоставляет в формате XML. Эти файлы содержат внутренние идентификаторы связей между регистрационным удостоверением и формами выпуска препарата.

Разберем алгоритм работы с такими данными:

  1. Скачиваем архив всех записей реестра с официального сайта ГРЛС.
  2. Используем объект 1С ЧтениеXML для обхода структуры файла.
  3. Внутри XML-структуры находим узлы, связывающие конкретное РУ (номер и дата) с записями о стадиях производства и упаковках. Даже если штрих-код не указан в явном виде, у каждой записи есть уникальный внутренний ID (GUID или целочисленный код), по которому можно выстроить иерархию.

Решение 2: Сопоставление по «композитному ключу» и очистка данных

Если прямой идентификатор отсутствует, нам придется использовать метод нечеткого сопоставления. Как отмечалось в обсуждении, данные в реестрах часто бывают «кривыми» (разные сокращения, лишние пробелы, кавычки), поэтому их необходимо предварительно нормализовать. Сформируем «композитный ключ», который позволит однозначно идентифицировать препарат.

В состав такого ключа должны входить следующие параметры:

Рассмотрим пример функции для нормализации строки в 1С, которая поможет нам при сопоставлении:


Функция НормализоватьНаименование(Знач ВходнаяСтрока) Экспорт
    Результат = СокрЛП(Врег(ВходнаяСтрока));
    // Удаляем лишние символы, которые могут мешать поиску
    СимволыДляУдаления = ".,()""'№";
    Для Индекс = 1 По СтрДлина(СимволыДляУдаления) Цикл
        Символ = Сред(СимволыДляУдаления, Индекс, 1);
        Результат = СтрЗаменить(Результат, Символ, "");
    КонецЦикла;
    // Заменяем распространенные сокращения
    Результат = СтрЗаменить(Результат, " МГ", "МГ");
    Результат = СтрЗаменить(Результат, " МЛ", "МЛ");
    Возврат СокрЛП(Результат);
КонецФункции

Решение 3: Интеграция с ЕСКЛП и системой «Честный ЗНАК»

Современный способ решения задачи, который не был доступен ранее, — это использование Единого структурированного справочника лекарственных препаратов (ЕСКЛП) и данных системы маркировки (МДЛП). На сегодняшний день маркировка обязательна для всех лекарств, включая не ЖНВЛП.

Посмотрим, как это упрощает нам жизнь:

  1. В системе «Честный ЗНАК» (через API МДЛП) по штрих-коду (GTIN) можно получить расширенную карточку товара.
  2. В этой карточке в 99% случаев уже заполнены реквизиты регистрационного удостоверения, так как производитель обязан их указывать при описании товара в GS1 Rus.
  3. Используя API, мы можем программно запрашивать данные по списку штрих-кодов нашей номенклатуры и автоматически обновлять поля «Номер РУ» и «Дата РУ» в справочнике Номенклатура или СерииНоменклатуры.

Решение 4: Поиск по номеру РУ из других источников

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

Для автоматизации этого процесса в 1С можно использовать HTTP-запросы к поисковой форме реестра, однако это требует написания парсера HTML-ответа, что менее надежно, чем работа с XML-дампами.

Рекомендации по реализации в 1С

Рассмотрим пошагово, как реализовать механизм загрузки:

Шаг 1. Подготовка справочника. Добавьте в справочник Номенклатура дополнительные реквизиты: НомерРУ (Строка), ДатаРУ (Дата), ID_ГРЛС (Строка). Это позволит хранить связь с реестром.

Шаг 2. Загрузка первичных данных. Реализуйте обработку, которая скачивает XML с сайта Минздрава и загружает его во временную таблицу или в специально созданный вспомогательный справочник (кеш реестра).

Шаг 3. Сопоставление. Создайте рабочее место для оператора или автоматический алгоритм, который будет пытаться найти соответствие. Пример логики поиска:


// Пример логики сопоставления
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|   РеестрГРЛС.НомерРУ,
|   РеестрГРЛС.ДатаРегистрации
|ИЗ
|   Справочник.ВспомогательныйРеестрГРЛС КАК РеестрГРЛС
|ГДЕ
|   РеестрГРЛС.НаименованиеНормализованное = &Наименование1С";

Запрос.УстановитьПараметр("Наименование1С", НормализоватьНаименование(ТекНоменклатура.Наименование));
// ... выполнение запроса и запись результата в карточку товара

Выводы

Несмотря на отсутствие прямой связи через штрих-код в некоторых разделах ГРЛС, задача получения регистрационных удостоверений решаема. Наиболее эффективным подходом является комбинация использования XML-дампов ГРЛС для получения структуры связей и использование API МДЛП («Честный ЗНАК») для получения данных по штрих-кодам. Помните, что данные в государственных реестрах требуют обязательной предварительной нормализации (очистки от лишних символов и приведения к единому стандарту сокращений).

← На главную