Интеграция с системой маркировки Честный Знак (в частности, МДЛП — Мониторинг движения лекарственных препаратов) вносит серьезные коррективы в привычный товарный учет розничной аптеки. При переходе на конфигурацию 1С:Розница. Аптека 2.2 у многих пользователей и администраторов возникает путаница: где именно указывать GTIN, как связаны характеристики с сериями, зачем нужен реквизит GTIN в характеристиках номенклатуры и где физически хранятся отсканированные коды DataMatrix.
В этой статье мы подробно разберем архитектуру учета маркированных лекарственных средств, развенчаем мифы о реквизитах характеристик и разберем по шагам логику работы программы при сканировании кодов.
Для начала проанализируем, как строится классический аптечный учет в решениях на платформе 1С. В отличие от обычной розницы, лекарственные препараты требуют жесткого серийного контроля. Это обусловлено не только контролем сроков годности, но и государственным регулированием цен на жизненно необходимые и важнейшие лекарственные препараты (ЖНВЛП).
В конфигурации 1С:Розница. Аптека учет организован следующим образом:
ХарактеристикиНоменклатуры. К конкретной характеристике (серии) привязываются цены поступления и розничные цены продажи.Возникает логичный вопрос: если учет завязан на характеристики, то где должен храниться GTIN (Global Trade Item Number) — глобальный номер торговой единицы?
Давайте выясним назначение реквизитов. GTIN для маркируемых лекарств должен указываться строго в карточке номенклатуры.
Для этого в карточке товара предусмотрена вкладка Дополнительно, где в разделе Маркировка МДЛП указывается соответствующий GTIN. Также его можно привязать через стандартный регистр штрихкодов номенклатуры. При необходимости можно воспользоваться инструментом для автоматической загрузки и синхронизации номенклатуры с ЕСКЛП и МДЛП.
Почему дублировать GTIN в характеристиках (сериях) не нужно? GTIN — это глобальный идентификатор самого лекарственного средства (его формы выпуска, дозировки, фасовки у конкретного производителя). Он абсолютно одинаков для миллионов упаковок из разных серий и партий. Меняться от серии к серии он не может.
При изучении формы характеристики в 1С:Розница. Аптека можно обнаружить реквизит GTIN, записываемый эмитентом в КиЗ ГИСМ. Это поле часто вводит в заблуждение начинающих специалистов.
Важно понимать: это поле не имеет никакого отношения к маркировке лекарств в системе МДЛП. Это устаревший («legacy») реквизит, оставшийся в библиотеках интеграции 1С со времен запуска маркировки меховых изделий (шуб) контрольно-идентификационными знаками (КиЗ) с RFID-чипами. В меховой отрасли характеристики товара (цвет, размер, тип меха) напрямую определяли конкретный чип, который эмитент программировал для изделия.
При работе с лекарственными препаратами и кодами формата DataMatrix данное поле в характеристиках заполнять не требуется. Оставьте его пустым.
Каждая индивидуальная упаковка лекарственного средства снабжается уникальным двухмерным кодом DataMatrix. Давайте разберем его структуру. Код содержит:
01);21);91);92).Совокупность первых двух элементов (GTIN + Серийный номер) образует так называемый SGTIN (Serialized GTIN) — полностью уникальный ключ конкретной пачки лекарства.
Посмотрим, как программа управляет этими кодами внутри базы данных. Хранить миллиарды символов криптохвостов в рабочей базе нецелесообразно, так как это приведет к катастрофическому росту размера базы (блокировке работы СУБД) и замедлению системы. Поэтому в 1С реализована следующая схема:
ПулКодовМаркировкиСУЗ), когда аптека самостоятельно выполняет эмиссию кодов или перемаркировку остатков.ШтрихкодыУпаковокТоваров (или аналогичный регистр сведений в зависимости от версии библиотеки интеграции). Там сохраняется только очищенная от криптохвоста уникальная связка: GTIN + Серийный номер упаковки.В процессе работы вы обязательно столкнетесь с ситуацией, когда линейный штрихкод EAN-13 на коробке визуально отличается от GTIN, зашитого в DataMatrix. Рассмотрим, почему это происходит:
4601234567890 превращается в GTIN 04601234567890. Программа 1С автоматически сопоставляет такие коды «на лету».Рассмотрим пример поискового алгоритма, который выполняет система 1С при сканировании штрихкода в рабочем месте кассира (РМК):
Процедура ОбработатьСканированиеКода(ДанныеСканирования)
// Извлекаем чистый штрихкод из сканера
СтрокаКода = ДанныеСканирования.Значение;
// Проверяем тип считанного штрихкода
Если ЭтоКодDataMatrix(СтрокаКода) Тогда
// Парсим код по стандартам GS1
СчитанныйGTIN = ПолучитьGTINИзDataMatrix(СтрокаКода);
СерийныйНомер = ПолучитьСериюИзDataMatrix(СтрокаКода);
// Ищем номенклатуру по GTIN в регистре штрихкодов
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("GTIN", СчитанныйGTIN);
Если НЕ ЗначениеЗаполнено(НайденнаяНоменклатура) Тогда
НайденнаяНоменклатура = НайтиНоменклатуруПоШтрихкоду(СчитанныйGTIN);
КонецЕсли;
// Ищем подходящую серию (характеристику)
НайденнаяХарактеристика = НайтиХарактеристикуПоСерии(НайденнаяНоменклатура, СерийныйНомер);
ДобавитьТоварВДокумент(НайденнаяНоменклатура, НайденнаяХарактеристика);
Иначе
// Обрабатываем стандартный линейный штрихкод EAN-13
ОбработатьЛинейныйШтрихкод(СтрокаКода);
КонецЕсли;
КонецПроцедуры
Рассмотрим, как теоретические знания работают на практике при выполнении повседневных операций в аптеке.
1. Поступление товара (акцептирование)
При получении маркированных лекарств от поставщика аптека использует схему прямого или обратного акцепта в рабочем месте МДЛП:
2. Продажа лекарств через Рабочее место кассира (РМК)
В момент реализации покупателю кассир сканирует код DataMatrix с пачки лекарства. Программа 1С выполняет следующие действия:
Таким образом, правильное понимание структуры хранения данных исключает ошибки при первоначальном заполнении базы. Заполняйте GTIN в карточке номенклатуры, используйте характеристики исключительно для учета физических серий и сроков годности, и логика интеграции с МДЛП в "1С:Розница. Аптека" будет работать корректно и полностью в автоматическом режиме. Для последующего контроля актуальности остатков подойдет обработка для сверки итогов базы 1С с контуром МДЛП.