В медицинской сфере, особенно в частных клиниках и больничных аптеках, вопрос маркировки стоит особенно остро. Исторически сложилось так, что первой и самой сложной системой была ФГИС МДЛП (Мониторинг движения лекарственных препаратов). Многие организации, использующие самописные или сильно модифицированные конфигурации, успешно внедрили библиотеку интеграции с МДЛП.
Однако законодательство не стоит на месте. С введением обязательной маркировки для биологически активных добавок (БАД) и антисептиков, перед разработчиками встает новая задача. Изучая полную инструкцию по внедрению маркировки БАД и антисептиков в 1С, становится понятно: хотя "маркировка есть маркировка", на практике архитектура взаимодействия с системой "Честный Знак" (ГИС МТ) для этих товарных групп кардинально отличается от МДЛП. В этой статье мы подробно разберем, как реализовать поддержку этих товарных групп, какую библиотеку использовать и с какими подводными камнями придется столкнуться.
Прежде чем приступать к коду, давайте проведем сравнительный анализ архитектуры МДЛП и ГИС МТ, чтобы понять фундаментальные различия, из-за которых нельзя просто "скопировать" подход МДЛП для БАДов.
Таким образом, мы приходим к выводу: старая библиотека МДЛП для новых задач не подходит.
Многие разработчики задаются вопросом: существует ли отдельная библиотека для ГИС МТ? Ответ положительный. Фирма 1С выпускает продукт, который сейчас называется Библиотека интеграции с ГосИС (ранее Библиотека интеграции с ИС МП).
Эта библиотека является универсальной. Она содержит функционал для работы с:
Давайте рассмотрим, где можно взять эту библиотеку. Если у вас есть доступ к разделу релизов на портале 1С, библиотеку можно скачать отдельно. Однако, если такой возможности нет, мы можем "подсмотреть" или извлечь её из типовых конфигураций. Как было замечено в обсуждении, актуальные версии библиотеки содержатся в конфигурации 1С:УправлениеТорговлей, 1С:ERP, 1С:КомплекснаяАвтоматизация и 1С:Розница.
Проверить версию библиотеки в конфигурации можно, заглянув в макет версий или регистр сведений, хранящий версии подсистем. Обычно идентификатор библиотеки выглядит как БиблиотекаИнтеграцииИСМП или БиблиотекаИнтеграцииГосИС.
Здесь кроется главный нюанс, который отличает внедрение ГИС МТ от внедрения МДЛП. Поскольку оборот БАДов требует использования УПД через операторов ЭДО, библиотека ГосИС имеет жесткую зависимость от Библиотеки электронных документов (БЭД). Подробно этот процесс описан в материале по внедрению БИСМП в нетиповую конфигурацию.
Если в вашей самописной конфигурации нет БЭД, внедрение поддержки БАДов превратится в масштабный проект. Вам потребуется:
Попытка "выдернуть" только методы API для прямой отправки чеков выбытия (если у вас розница) возможна, но крайне трудоемка в поддержке, особенно учитывая постоянные изменения API Честного Знака.
Рассмотрим два основных пути, по которым мы можем пойти для решения задачи автора.
Этот вариант подходит, если ваша конфигурация построена на базе БСП и вы готовы поддерживать обновления библиотек. Рассмотрим основные шаги:
1. Подготовка метаданных. Нам необходимо перенести общие модули, регламентные задания и объекты метаданных (справочники, регистры) из библиотеки. Объекты Справочник.ШтрихкодыУпаковокТоваров и РегистрСведений.СтатусыОформленияДокументовИСМП будут ключевыми.
2. Настройка взаимодействия. В коде необходимо будет инициализировать настройки подключения к СУЗ (Станции Управления Заказами) и API ГИС МТ. Пример вызова функций инициализации (псевдокод на основе типовых решений):
// Пример получения статуса подключения
ПараметрыПодключения = ИнтеграцияИСМП.ПараметрыПодключенияКСервису();
Если Не ПараметрыПодключения.Результат Тогда
ОбщегоНазначения.СообщитьПользователю(ПараметрыПодключения.ОписаниеОшибки);
Возврат;
КонецЕсли;
3. Реализация выбытия. Для клиники наиболее актуальным сценарием является "Вывод из оборота для собственных нужд" (использование при оказании медицинской помощи). В библиотеке ГосИС за это отвечает документ ВыводИзОборотаИСМП. Нам нужно создать механизм, который на основании внутреннего документа списания материалов будет создавать документ вывода из оборота и отправлять его в Честный Знак.
// Схематичный пример создания документа вывода из оборота
ДокументВывода = Документы.ВыводИзОборотаИСМП.СоздатьДокумент();
ДокументВывода.ВидОперации = Перечисления.ВидыОперацийИСМП.ВыводИзОборотаДляСобственныхНужд;
ДокументВывода.Организация = НашаОрганизация;
// Заполнение табличной части отсканированными кодами
Для Каждого СтрокаСписания Из ТаблицаКодов Цикл
НовСтр = ДокументВывода.Товары.Добавить();
НовСтр.Штрихкод = СтрокаСписания.КодMarkirovki;
НовСтр.Количество = 1;
КонецЦикла;
// Далее следует вызов процедур проверки и отправки через библиотеку
Если самописная система старая, не использует управляемые формы или внедрение БЭД невозможно, стоит рассмотреть интеграцию ГИС МТ «Честный Знак» в самописные конфигурации без БСП.
Алгоритм работы:
ВыводИзОборотаИСМП.Этот подход избавляет нас от необходимости писать и поддерживать сложный код обмена с API, делегируя эту задачу типовому решению, которое обновляется фирмой 1С.
Важно упомянуть новый нюанс законодательства — разрешительный режим на кассах, актуальный для 2024 года. Если клиника продает БАДы или антисептики в розницу (через аптечный киоск), система обязана в момент сканирования делать онлайн-запрос в Честный Знак для проверки статуса кода. Если код заблокирован, продажа запрещена.
Библиотека ГосИС (последних версий) уже содержит реализацию методов для CDN-площадок Честного Знака, которые обеспечивают быструю проверку. Самостоятельная реализация этого протокола с нуля — задача нетривиальная, так как требует работы с криптографией и жестких требований к таймингам (ответ должен быть получен за доли секунды).
Для реализации проверки в коде используется модуль, отвечающий за интеграцию с ККТ и РМК (Рабочее место кассира). Пример того, где искать логику в типовых:
// В общем модуле интеграции с ККТ
Функция ПроверитьКодМаркировкиOnline(Штрихкод, ИдентификаторККТ) Экспорт
// Формирование токена проверки
// Запрос к CDN
// Возврат результата: Разрешено/Запрещено
КонецФункции
Подводя итог анализу темы, можно сформулировать следующие рекомендации: