Первичное взаимодействие с ФГИС МДЛП в аптечной сети на 1С 7.7 (для "чайников"!)

Публикация № 1205103

Разработка - Системная интеграция - Интеграция с WEB

взаимодействие ФГИС МДЛП Федеральная государственная информационная система мониторинга движения лекарственных препаратов от производителя до конечного потребителя маркировка аптечная сеть

Первичное взаимодействие с ФГИС МДЛП - Федеральной государственной информационной системой мониторинга движения лекарственных препаратов от производителя до конечного потребителя с использованием маркировки в аптечной сети на 1С 7.7 (для «чайников»!).

В данной статье хотелось бы рассказать о том, как протестировать  взаимодействие с ФГИС МДЛП вручную, без использования специального ПО, а также рассмотреть какие программные средства в дальнейшем могут быть использованы для автоматизации этого взаимодействия. Поэтому решил написать инструкцию для чайников, так как сам в свое время потратил много времени на то, чтобы просто протестировать систему и понять, как с ней работать.  Таким образом, данная статья предназначена для тех, кто только хочет попробовать взаимодействие с данной системой, либо только начал делать первые шаги и что называется «встрял».

Итак, на первом этапе Вы должны зарегистрировать Вашу организацию и ip-адрес(а), с которого (ых) будете подключаться к ФГИС МДЛП. Для этого надо было писать письмо с техподдержку Честного Знака (ЧЗ). Думаю этот этап расписывать не нужно, так как на сегодняшний момент все субъекты системы маркировки лекарственных средств в обязательном порядке должны быть зарегистрированы в ФГИС МДЛП. Следовательно, Ваша организация и ее ip-адрес (постоянный и белый) уже зарегистрированы в ФГИС МДЛП.

Итак, приступим в проверке. Все актуальные версии документов доступны по ссылке:  https://честныйзнак.рф/business/projects/medicines/#documents@for_developers

Там же имеется Краткая инструкция по быстрому старту для подключения к API (взаимодействие с ФГИС МДЛП происходит по API): https://честныйзнак.рф/upload/iblock/25b/Kratkaya_instruktsiya_po_bystromu_startu_dlya_izucheniya_API.pdf

В принципе в этой инструкции все расписано, что и как делать, но есть несколько моментов, которые новичку не просто понять. Итак, будем тестировать работу с МДЛП на тестовом стенде.

Первый шаг: прописать в hosts операционной системы домен тестового стенда 185.196.171.27 api.stage.mdlp.crpt.ru

То есть отладка на первом этапе идет на тестовом стенде  и в «Песочнице», потом идет переход непосредственно на промышленный контур.

Далее устанавливаем Crypto Pro. Для тестирования насколько я помню можно получить временный бесплатный сертификат, потом в реальных условиях придется естественно покупать. Это все расписано подробно в инструкции, поэтому повторяться не буду.

Далее в инструкции предлагается

Шаг 1. Авторизация тестовым участником

На тестовом стенде API необходимо авторизоваться тестовым участником и получить «Код аутентификации», используя метод API

POST http://api.stage.mdlp.crpt.ru/api/v1/auth

Content-Type: application/json;charset=UTF-8

{

"client_id": "01db16f2-9a4e-4d9f-b5e8-c68f12566fd5",

"client_secret":"9199fe04-42c3-4e81-83b5-120eb5f129f2",

"user_id":"starter_resident_1",

"auth_type":"PASSWORD" }

Ответ:

     {"code": "7386a68f-c1e5-42c6-8ed5-5b933017c66c" }

 

Этот код будет запускаться в ПО (самописном или покупном), которое Вы будете использовать для автоматизации подключения к ЧЗ. Но в данном случае нас интересует – как протестировать подключение к ЧЗ без установки специального ПО. Для этого используется обычный браузер. Заранее отмечу, рекомендую скачать chromium-gost, так как только он сможет работать с ЧЗ по https, ни один другой браузер с любым расширением не сможет этого.

Хотя на самом первом этапе https даже не понадобится, потому что просто обращение происходит по http.  Далее устанавливаем соответствующий API клиент, к примеру, Advanced REST client

Итак, в данном клиенте, заполняем headers и body

 

Примечание: здесь и далее в url добавляется sb, это означает песочницу: 

Как я понимаю, изначально должен был быть такой порядок: тестовый стенд -> песочница -> промышленный контур.

Но тестовый стенд можно уже исключить и сразу начинать в песочнице.

Далее, client_id, client_secret  и user_id берем уже не из примера, а свои реальные, для лучшего понимания.

В свое время долго бился над тем, откуда же брать client_id и client_secret. В тестовом примере они готовые, уже сгенерированные, а где брать реальные – вот вопрос. Сначала думал, что их должен прислать ЧЗ на почту, потом – что их надо сгенерировать опять таки через API ЧЗ. Но тогда не хватало других вводных, которые в свою очередь не могли быть получены без client_id и client_secret. Все оказалось намного проще - брать client_id и client_secret нужно просто скопировать в личном кабинете (ЛК) ЧЗ.

Для этого заходим на сайт ЧЗ с помощью усиленной квалифицированной электронной подписи (УКЭП):

 

Логинимся по УКЭП, заходим в Администрирование

Далее выбираем учетную систему и вуаля, client_id – это соответственно Идентификатор клиента, а client_secret – Секретный код

User_id – это отпечаток сертификата из Крипто Про

Итак, нажимаем кнопку Send, получаем ответ:

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

POST http://api.stage.mdlp.crpt.ru/api/v1/token

Content-Type: application/json;charset=UTF-8

{

"code": "7386a68f-c1e5-42c6-8ed5-5b933017c66c",

"password": "password"

}

Ответ:

{

"token": "13b5b046-0cd7-4e1c-8409-da9541986d1c",

"life_time": 30

}

В ответе на запрос приходит ключ сессии (token, всегда разный) и время его жизни (life_time).

 

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

Далее запускаем cmd и переходим в папку, где установлен Crypto Pro.

Запускаем соответствующую команду из инструкции

csptest -sfsign -sign -in C:\ЧЗ\Code.txt -out C:\ЧЗ\Signature.txt -my "Имя сертификата" -detached -base64 –add

Открываем полученный файл в Notepad ++ и заменяем конец строки, как указано в регламенте:

 

Получаем сигнатуру, которую вставляем в тело запроса:

Отправляем запрос, получаем токен, время действия которого – 30 минут

Далее с этим токеном можно делать все операции, предусмотренные в системе – отправка,  получение документов, просмотр информации, добавление пользователей, контрагентов и прочее. Все это указано в инструкции. Там есть пример оправки документа в формате xml, например, в блокноте необходимо создать файл с расширением txt. Например, doc.txt. В текстовый файл вставить тело документа:

<documents xmlns:xsi="http://www.w3.org/2001/XHLSchema-instance" version="1.19">

  <register_end_packing action_id="311">

    <subject_id>00000000000517</subject_id>

    <operation_date>2018-08-22T15:00:00+05:00</operation_date>

    <order_type>l</order_type>

    <series_number>100000001</series_number>

    <expiration_date>30.03.2020</expiration_date>

    <gtin>11170012610151</gtin>

    <tnved_code>3004</tnved_code>

    <signs>

      <signs>07091900400001TRANSF2000021</signs>

    </signs>

 </register_end_packing>

</documents>

Далее сохраняем в txt и подписываем как на предыдущем этапе:

csptest -sfsign -sign -in C:\ЧЗ\doc.txt -out C:\ЧЗ\signed_doc.txt -my "Имя сертификата" -detached -base64 –add

Исходя из примера на выходе будет получен файл signed_doc.txt, в котором будет указана сигнатура подписи. В сигнатуре подписи необходимо удалить символы переноса строк. Полученную сигнатуру подписи использовать для отправки документа. Переводим тело документа в Base64:

PGRvY3VtZW50cyB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB2ZXJzaW9uPSIxLjE5Ij48cmVnaXN0ZXJfZW5kX3BhY2tpbmcgYWN0aW9uX2lkPSIzMTEiPjxzdWJqZWN0X2lkPjAwMDAwMDAwMDAwNTE3PC9zdWJqZWN0X2lkPg==

Параметр request_id – это сгенерированный GUID, например, тут:

Таким образом, мы рассмотрели, как можно взаимодействовать с ЧЗ вручную. Но это не более чем в тестовых целях и в целях общего ознакомления. Для реально работающего предприятия, естественно, придется автоматизировать все процессы.

Поэтому приведу схему товаро и документооборота в нашей фирме (аптечная сеть в глубинке, юридически у нас 2 ООО, физически - более 10 аптек). Итак, у нас есть подобие ЦС (центральный склад), куда часть поставщиков привозит товар, но часть везут напрямую по аптекам

Это к вопросу о том, что физически сканирование GTIN-ов будет точно по аптекам, а не на ЦС. Теперь сам документооборот. В офисе на ЦС сидят операторы, которые приходуют накладные от поставщиков в 1С 7.7 и делают выписки - сборную солянку от нескольких поставщиков в одном электронном документе - по аптекам. Эти выписки кидаются на фтп-шник, откуда потом заведующие аптек их скачивают и приходуют в аптечном ПО (самописное на Delphi).

Так вот, вопрос стоит так  - оставаться ли на своем ПО или переходить наконец на готовое с поддержкой МДЛП. Переходить начальство естественно не горит желанием, так как это дополнительные расходы, а мы  итак надрываемся в неравной борьбе с федералами. Пока решили допиливать свое ПО и работать по такой схеме: аптеки как обычно приходуют товар, сканируют GTIN-ы и отправляют нам их обратно на ФТП.  Мы в офисе грузим GTIN-ы со всех аптек, делаем обратную разбивку по поставщикам и соответственно отправляем в МДЛП централизованно из офиса.

Это на первом этапе. Потом вроде как начальство планирует, чтобы все аптеки отправляли информацию в МДЛП самостоятельно. Поэтому возникла такая мысль (которая была изначально) - отправлять данные по приходу централизованно, но с помощью внешнего готового решения, например: Маркировка: обмен с ГИС МДЛП из 1С 7.7 (//infostart.ru/public/1147679)

Если удастся интегрировать его в нашу 1С 7.7 было бы, на мой взгляд, идеально. И к тому же значительно бы упростился этап сверки - все ли GTIN-ы прислали обратно аптеки.

Если делать в Delphi то будет ужасный геморрой с обратной сверкой - оператором придется глазами смотреть что мы отправили по аптекам и все ли отсканированные GTIN-ы они прислали нам обратно. А если удастся интегрировать представленное выше решение, то все замкнется на 1С 7.7 и можно будет намного проще сверять - что мы послали аптекам и что они прислали нам обратно. И дополнительно снимется огромный пласт работы, связанной непосредственно с программированием отправки данных по приходу в МДЛП.

Но есть и некоторый минус - централизованная отправка из офиса. Вроде везде пишут, что это разрешено ЧЗ,  но весь вопрос - постоянно или временно.

Теперь что касается видов необходимых документов. Форматы и примеры есть на сайте ЧЗ. Далее рассмотрим наиболее распространенную операцию – акцепт прихода товара от поставщика. Непосредственно продажу товара на кассе рассматривать не будем, потом что предполагается, что GTIN-ы непосредственно при продаже лекарственных средств будут отправляться оператору ОФД (например, Ярус), который в свою очередь бесплатно или за отдельную плату будет отправлять их уже в ЧЗ. То есть непосредственно отслеживание продажи маркированной продукции должно быть в теории переложено на операторов ОФД.

Таким образом, штатным программистам аптечных сетей нужно будет автоматизировать приход маркированного товара в аптеку в первую очередь, его возможное перемещение между аптеками сети, а также его списание в случае истечения сроков годности и прочего.

Итак, предусмотрен прямой и обратный акцепт товара от поставщика, соответственно 415 и 416 схемы. Первая схема – прямой акцепт, когда поставщик (как правило, крупный фармдистрибьютор – Катрен, Пульс и прочие) самостоятельно инициирует цепочку обращения в ЧЗ, отправляя в систему информацию о поставленной Вашей аптечной сети маркированной продукции.

Однако на сегодняшний момент есть слухи, что лишь небольшая часть фармдистрибьюторов планирует работать с аптечными сетями по прямой схеме. Поэтому наиболее распространенной, видимо, будет обратная (416-ая) схема, когда сама аптечная четь будет инициировать обращение в ЧЗ, а фармдистрибьютор будет подтверждать или не подтверждать поставку.

Вот пример файла для ЧЗ по 416-ой схеме:

<?xml version="1.0" encoding="UTF-8"?>

<documents session_ui="4Aa246a6-D7e2-2465-a056-0234554369a3" version="1.34" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

            <receive_order action_id="416">

                        <subject_id>19527400000028</subject_id>

                        <shipper_id>19527400000005</shipper_id>

                        <operation_date>2017-10-26T15:02:00+05:00</operation_date>

                        <doc_num>dok 1</doc_num>

                        <doc_date>27.10.2017</doc_date>            

                        <receive_type>1</receive_type>

        <source>1</source>

                        <contract_type>1</contract_type>

                        <order_details>

                                   <union>

                                               <sgtin>11670012610151RPN906FGKMVBG</sgtin>

                                               <cost>123.20</cost>

                                               <vat_value>54</vat_value>

                                   </union>

                                   <union>

                                               <sgtin>11670012610151F4NQ3H6V5PD47</sgtin>

                                               <cost>123.20</cost>

                                               <vat_value>54</vat_value>

                                   </union>

                                   <union>

                                               <sgtin>1167001261015175FFBRHCS96LF</sgtin>

                                               <cost>123.20</cost>

                                               <vat_value>54</vat_value>

                                   </union>

                                   <union>

                                               <sgtin>116700126101515YMT254E7IH2B</sgtin>

                                               <cost>123.20</cost>

                                               <vat_value>54</vat_value>

                                   </union>

                        </order_details>

            </receive_order>

</documents>

 

Как можно видеть, все более, чем понятно. Единственный вопрос, который возник у меня в свое время – параметр <shipper_id>

Он означает МОД (место осуществления деятельности) поставщика, коих у него может быть множество.

Есть два способа получения значения МОД: 1) самостоятельно, путем обращения к системе МДЛП по ИНН контрагента, 2) поставщик сам будет присылать значение МОД в электронной накладной. Первый способ, скорее всего не рабочий, так как МОД придется выбирать случайным образом, из всего множества, а смысл Честного знака состоит именно в том, чтобы проследить РЕАЛЬНУЮ цепочку движения лекарственного препарата. Так что, думается, поставщиков просто обяжут присылать значение МОД конечному розничному продавцу лекарственного препарата в электронной накладной (нам правда пока никто не присылает).

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

Специальные предложения

Оставьте свое сообщение

См. также

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция

Статья Программист Нет файла v7.7 v8 Windows Бесплатно (free) Практика программирования WEB

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    52097    Serginio    33       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.

Статья Программист Нет файла v7.7 v8 Windows Бесплатно (free) Практика программирования Разработка внешних компонент WEB

Очень часто нужно при работе с HTTP сервисами или сайтами использовать Асинхронные HTTP запросы, отправку на сервер нескольких файлов, использование сжатия трафика. Эта статья про то, как этого легко добиться.

09.03.2016    28915    Serginio    22       

Базовый курс для начинающих 1С-программистов. Онлайн-интенсив со 2 июня по 2 июля 2020 г. Промо

Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.

4500-9500 рублей

Загрузка изменений конфигурации с FTP

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v77::ОУ v77::БУ v77::Расчет 1cv7.md Windows Бесплатно (free) Сервисные утилиты WEB

В помощь разработчику конфигурации. Предназначена для загрузки изменений конфигурации находящейся в разработке. Работу с обработкой после настройки и сохранения параметров подключения к ФТП ведет обычный пользователь системы, по просьбе разработчика.

26.05.2010    8455    56    Струнин    1       

Онлайн-курс «Автоматизация процессов управления МТО: методика сбора и формализации требований» с 1 апреля по 13 мая 2020 года. Промо

Цель курса - повысить полноту и качество сбора и формализации требований к автоматизации процессов управления материально-техническим обеспечением. Курс основан на процессном подходе, позволяет в полном объеме выявить и учесть все факторы, влияющие на специфику процессов управления МТО. Участники курса получают теоретические знания в области организации процессов управления МТО и готовый инструментарий для сбора и формализации требований по автоматизации этих процессов (шаблоны, опросники, модели).

40000 рублей

[SendGoogleSMS] Отправка SMS уведомлений через сервис Google Calendar

Инструменты и обработки Системный администратор Программист Компонента, плагин (dll, vbs,..) v7.7 v8 1cv8.cf 1cv7.md Windows Бесплатно (free) Разработка внешних компонент WEB SMS рассылки

Компонента генерирует события в Google Calendar с извещением по SMS. В архивах ВК для 7.7 (работает и в 8-ке) и ActiveX - для работы в контексте сервера 1С 8.х

07.08.2009    27459    563    Душелов    37       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

[ОБМЕН] Формирование файла заказа поставщику

Инструменты и обработки no Внешняя обработка (ert,epf) v77::ОУ 1С7:ТиС Россия Windows Монитор заказов Бесплатно (free) Печатные формы документов Загрузка и выгрузка в Excel WEB

1C v.7.7 Внешняя печатная форма, предназначена для формирования файла заказа поставщику и выполнения с ним простейших действий. Подключается как внешняя печатная форма к документу "Заказ поставщику". Обработка простая, представляет интерес для начинающих не особо продвинутых программистов 1С.

29.05.2009    16307    184    CheBurator    2       

DevOps для 1С. Онлайн-курс проходит с 16 апреля по 11 июня 2020 года. Промо

Данный онлайн-курс предусматривает изучение процессов DevOps, их применение при разработке на платформе 1С. В результате прохождения онлайн-курса вы сможете: настроить ПО необходимое для проведения проверок и тестирования, создавать сценарии тестирования и объединять их в комплексные процессы, создавать скрипты для автоматизации процессов DevOps.

12000 рублей

Еще одна загрузка файлов распределенной базы данных (РБД) через FTP

Инструменты и обработки Системный администратор Программист Приложение (exe) v7.7 1cv7.md Windows Бесплатно (free) Сервисные утилиты Распределенная БД (УРИБ, УРБД) WEB

Эта простенькая программа позволяет неопытному пользователю, без лишних телодвижений принять выгрузку центральной базы (ЦБ). Программа создана для удаленных торговых точек, для замены Outlook+cmd.

17.04.2009    9138    191    petro_fm    7       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

"WebCam" - ActiveX-компонента для 1С

Инструменты и обработки Системный администратор Программист Компонента, плагин (dll, vbs,..) v7.7 v8 1cv8.cf 1cv7.md Windows Бесплатно (free) Разработка внешних компонент WEB

Компонента работает с устройствами, поддерживающими Twain32 драйвер (вебкамеры, фотоаппараты и др.)

28.09.2008    38432    1036    Душелов    70       

Шаблон для асько-бота

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v77::БУ 1cv7.md Windows Бесплатно (free) Внешние источники данных WEB

Данная конфигурация работает с протоколом ICQ, то есть, может принимать и отправлять сообщения посредством ICQ

04.09.2008    8455    70    skom    15       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

УРБД Мастер 1.6.1

Инструменты и обработки Системный администратор Программист Приложение (exe) v7.7 1cv7.md Windows Бесплатно (free) Распределенная БД (УРИБ, УРБД) WEB 1С7.7<->1C7.7

Программа УРБД Мастер предназначена для автообмена информацией по расписанию между центральной и периферийными ИБ для программы 1С Предприятие 7.7 (бухгалтерия, торговля, SQL) . В качестве транспорта используется электронная почта, FTP-протокол или локальная сеть.

06.03.2008    12193    178    codeLocker    5       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

FTP.ert - обработка для передачи файлов по FTP протоколу с подтверждением результата. Без ВК.

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v7.7 1cv7.md Windows Бесплатно (free) Сервисные утилиты WEB

Простая универсальная загрузка и выгрузка файлов по протоколу FTP с подтверждением. Никаких внешних компонент. Фоновая работа. Незаменимая вещь для поддержки удаленных клиентов! На базе этой обработки легко построить систему обновления, например, внешних отчетов, которые находятся у клиента. Тогда ему достаточно нажать кнопку "Обновить отчеты", и насладиться результатами ваших трудов :-) P.S. Не сочтите за труд после ознакомления вернуться и оставить комментарий :-)

11.03.2007    18063    900    proskurin    25