Часто при автоматизации розничных магазинов мы сталкиваемся с задачей загрузки кодов маркировки (DataMatrix) в учетную систему. Рассмотрим типичную ситуацию: из системы Честный ЗНАК были получены списки кодов маркировки на остатки товаров в виде CSV-файлов, и теперь нам нужно внести их в базу 1С:Розница. Первая мысль, которая часто приходит в голову разработчикам — написать свою небольшую обработку и напрямую загрузить эти данные в справочник ШтрихкодыУпаковокИТоваров.
Давайте проанализируем, к чему это приведет. Если мы просто внесем новые штрихкоды в этот справочник (не меняя больше никакую информацию в базе), система действительно начнет распознавать сканируемые марки. Кассир сможет добавлять товар в чек через сканер штрихкодов. Однако вскоре мы обнаружим критическую проблему: программа позволит продавать один и тот же код маркировки (DM) дважды, трижды и так далее. Никакого контроля выбытия не произойдет. Выясним причину такого поведения и разберем, как правильно выстроить работу с маркированными товарами, чтобы избежать штрафов и расхождений в учете.
Если мы программно создадим элементы справочника ШтрихкодыУпаковокИТоваров с типом DataMatrix, система просто свяжет строку кода с номенклатурой. Но для полноценного учета маркированных товаров (одежда, обувь, табак и прочее) этого недостаточно. Подсистема маркировки работает значительно сложнее, чем базовый справочник для штрихкодов формата EAN-13.
Для корректной работы кассового узла, фиксации выбытия марок и проверок необходимо использовать штатную подсистему — Интеграция с ИС МП. На форумах часто спрашивают, как написать свой собственный регистр накопления, который будет списывать проданные позиции и блокировать их повторную продажу. Ответ здесь однозначен: изобретать собственный "велосипед" категорически не рекомендуется. Штатный функционал уже умеет делать всё необходимое, нужно лишь правильно его применить.
Многие разработчики, пытаясь отследить статус кода и найти "корзину" с проданными марками, начинают изучать регистры базы. Часто подозрение падает на регистр сведений ПулКодовМаркировкиСУЗ. Разберем подробнее, для чего он нужен на самом деле.
Регистр ПулКодовМаркировкиСУЗ предназначен исключительно для хранения новых, только что сгенерированных кодов маркировки (вместе с криптохвостом) до момента их печати и фактического нанесения на товар. В нем лежат коды, полученные при эмиссии из СУЗ (Станции управления заказами), но еще не введенные в оборот. Как только этикетка с маркой успешно распечатана и код введен в оборот, он удаляется из пула. Таким образом, искать информацию о проданных позициях там бессмысленно — проданные марки там не хранятся.
В самой конфигурации 1С:Розница нет отдельного регистра накопления, который работает исключительно как "склад проданных кодов". Жизненный цикл DataMatrix-кода отслеживается через привязку к конкретным документам товародвижения:
ПоступлениеТоваров (на основании электронных УПД по ЭДО) фиксирует переход марки на баланс вашего юридического лица.МаркировкаТоваровИСМП используется для первичного ввода марки в оборот (например, при маркировке остатков).ЧекККМ или РеализацияТоваров фиксирует выбытие марки.В момент продажи на Рабочем месте кассира (РМК) код добавляется в чек. При пробитии фискального документа кассовый аппарат передает данные (тег маркировки) в ОФД. ОФД, в свою очередь, перенаправляет эту информацию в систему Честный ЗНАК, где и происходит окончательное гашение кода в глобальной базе.
Посмотрим, как штатными средствами 1С запретить продажу одних и тех же марок. Для этого в актуальных версиях программы (например, 1С:Розница 2.3 и новее) реализованы механизмы контроля:
Разберем по шагам алгоритм правильных действий, если на руках имеется CSV-файл с кодами маркировки, полученными из Честного ЗНАКа. Наша задача — не просто записать их в базу, а легализовать для кассовой программы.
ЗаказНаЭмиссиюКодовМаркировкиСУЗ. Это сымитирует получение кодов из СУЗ.МаркировкаТоваровИСМП, выбрав вид операции Маркировка остатков.Только после успешного выполнения этих шагов штрихкоды станут полностью легитимными для вашей базы 1С. При их сканировании в РМК программа корректно сформирует чек, касса отправит нужные теги в ОФД, и марка успешно спишется. Все штатные механизмы защиты от двойных продаж будут работать автоматически, и вам не придется изобретать собственные способы контроля.