В прошлой моей статье Маркировка остатков товаров на складе: Как мы сделали все быстро и без ошибок (мой практический опыт) я сфокусировался на работе со складом, а сегодня поговорим об "Автомате Калашникова для розницы" - максимально простом, надежном и безотказном инструменте для печати кодов маркировки на остатки товаров в розничной сети. Это история о том, как мы промаркировали более 100 тыс. остатков товаров за полгода в нескольких десятках магазинов, устранив ошибки и сохранив высокую скорость работы.
Если вам нужно быстрое, масштабируемое и безошибочное решение для маркировки остатков в рознице, которое сводит участие человека к минимуму - этот практический опыт для вас.
🔗 Для тех, кто все еще работает на старой конфигурации УТ 10.3:
Эта статья - логичное продолжение темы сквозной автоматизации маркировки. Если ваша компания, как и наша, всё ещё работает на УТ 10.3 и ищет способ подключиться к "Честному знаку" и работать с маркировкой без срочного и болезненного перехода на УТ 11.5 - вам будет полезна моя предыдущая статья, где я детально разобрал рабочую гибридную схему:
Там вы найдете готовые доработки для УТ10.3 и стабильный механизм обмена с УТ 11.5.
🛑 Классический, но провальный сценарий
По мере погружения в процесс маркировки остатков в рознице, я быстро понял, что стандартный процесс маркировки остатков в крупной розничной сети повлечет катастрофу. Причина - человеческий фактор и логистический коллапс.
| Проблема | Описание | Риск |
| Печать списком | Распечатка тысяч КМ в офисе или на складе, передача их в три десятка магазинов. |
Сотруднику в магазине нужно вручную сопоставить номенклатуру, размер, артикул, а затем найти этот товар на полке. 100% гарантия ошибок и путаницы. |
| Ручной ввод в 1С |
Печать КМ поштучно по запросу из 1С в каждом магазине. |
Требует от продавца знаний 1С, ввода данных, поиска, открытия формы и печати, отвлекая его от основной работы. |
| Пересорт КМ |
КМ для размера S случайно наклеили на товар размера M. |
Товар нельзя будет продать на кассе. |
Главный вывод:
НЕОБХОДИМО исключить человека из процесса сопоставления ШК/Номенклатура и КМ.
💡 Решение
В итоге получилась простая, но надежная схема, аналогично, тому, что использовали на складе. Схема, которая работает в одно нажатие:
Продавец сканирует ШК товара, и через секунду в его магазине, на принтере этикеток, печатается готовый КМ для этого, конкретного товара.
Вся сложная логика была вынесена на сторону центральной базы 1С в офисе, а интерфейс для магазина сведен к минимуму - простому клиентскому консольному приложению, написанному на onescript. Хочу выразить отдельную благодарность создателям этого замечательного инструмента - без него решение было бы гораздо сложнее.
🏛 Архитектура решения
Решение построено на Клиент-Серверной архитектуре, которая обеспечивает надежность и масштабируемость:
-
Клиент (Консольное приложение написанное на OneScript и скомпилированное в exe файл -
remains.exe):-
Устанавливается на рабочем месте в торговой точке.
-
Читает Штрихкод (ШК) со сканера.
-
Отправляет HTTP-запрос на сервер (в 1С).
-
Получает готовый PDF, закодированный в Base64, декодирует его и отправляет на локальный принтер этикеток.
💡 Ключевое преимущество: Благодаря использованию отдельного консольного приложения, абсолютно всё равно, какое кассовое или учетное ПО установлено в магазине (1С, Frontol, самописное ПО и т.д.). Это обеспечивает полную независимость процесса маркировки остатков товаров от кассовой программы.
Пример того, как выглядит консольное приложение:
-
-
Сервер (Расширение 1С):
-
Роль сервера выполняет Расширение 1С с опубликованным HTTP-сервисом.
-
Сервис принимает запрос с ШК, обрабатывает его, выбирает свободный код маркировки из регистра (Пула кодов маркировки).
-
Для генерации готового PDF используется указанный шаблон этикетки. Размеры (ширина, высота) страницы в PDF строго соответствуют установленным размерам в этом шаблоне, что критически важно для корректной печати на термопринтере.
-
Справочник "Шаблоны этикеток и ценников" в 1С:
Настройка шаблона этикетки:

После установки расширения, необходимо настроить шаблон и опубликовать http сервис. На этом настройка 1С закончена.
🛠 Техническая реализация: Детализация обмена
Клиентское консольное приложение использует файл setting.json для настройки соединения и параметров печати:
Файл настроек setting.json:
{
"АдресСервера": "http://ваш_сервер_1с/hs/mark/GetByEan/",
"Логин": "логин_для_доступа_к_сервису",
"Пароль": "пароль",
"ИмяПринтера": "", // имя принтера или пусто для принтера по умолчанию
"ИННОрганизации": "7700000000",
"ИмяШаблона": "rem" // 'rem' - наименование элемента справочника шаблона этикетки в 1С
}
Что делает сервис (Запрос GET):
Консольное приложение отправляет в 1С GET-запрос следующего вида, используя данные из настроек:
http://АДРЕС_СЕРВЕРА_1С/ИМЯ_БАЗЫДАННЫХ/hs/mark/GetByEan/ИНН_Организации/rem/ШТРИХКОД_ТОВАРА
-
ИНН_Организации — по ИНН 1с определяет организацию-владелец кодов маркировки (взято из
setting.json) -
rem — имя шаблона этикетки в 1С (взято из
setting.json) -
ШТРИХКОД_ТОВАРА — отсканированный штрихкод товара
Логика Сервера 1С:
-
После получения запроса, 1с ищет в регистре
ПулКодовМаркировкиСУЗсвободный код (где полеДатаПечатиУниверсальнаяне заполнено) с установленным признаком «Маркировка остатков» для номенклатуры с таким ШК, по нужной организации -
Формирует этикетку через типовой механизм
ШаблоныЭтикетоки конвертирует её в pdf-файл. -
Возвращает JSON-ответ, где в поле
km_pdfзакодирована готовая к печати этикетка (pdf-файл) в формате Base64.
Пример успешного ответа (1С Server -> Client):
{
"status": "ok",
"data": {
"barcode": "464028000000",
"article": "00000-000",
"name": "Майка женская, черный, 104",
"km": "(01)464028000000(21)5jTd?sWg5AUUV",
"km_pdf": "JVBERi0xLjcKJeLjz9MKMSAwIG9iago8PAovRmlsdGVyIC9GbGFOZURLY29kZQov..."
}
}
Пример ошибки в ответе (1С Server -> Client):
{
"status": "error",
"data": "Нет свободных кодов маркировки для ООО НАЗВАНИЕ_ВАШЕЙ_ОРГАНИЗАЦИИ!\nНеобходимо провести эмиссию для GTIN: 0464000000001"
}
🎯 Сценарии обработки ошибок
Надежность системы определялась ее способностью быстро сигнализировать о проблемах, минимизируя участие IT-отдела. Вся сложная логика была вынесена на сервер, а продавцу нужно было знать всего два потенциальных сценария:
-
Проблема с кодом маркировки: Если сканер сработал, но в Пуле кодов 1С не оказалось свободного КМ, программа выводила четкое сообщение: "Нет свободных кодов маркировки. Необходимо провести эмиссию для GTIN: XXXXX"
-
Проблема с идентификацией: Если ШК не был найден в базе, программа так же сообщала об этом.
В обоих случаях действия продавца были одинаковы: обратиться к категорийному менеджеру. В его компетенцию входило проведение дополнительной эмиссии в Честном Знаке и проверка корректности данных штрихкодов и т.д. Таким образом, эти две основные проблемы решались силами магазина и категорийного менеджмента, минуя IT-поддержку.
🎯 Стратегия: Поэтапное внедрение волнами
Ключом к успеху стал отказ от "большого взрыва". Мы не ставили задачу промаркировать всё и сразу во всех магазинах. Вместо этого процесс был разбит на волны, что позволило:
-
Сфокусировать усилия: Категорийный менеджер и магазины работали с одной товарной категорией или группой поставщика или поставщиков за раз.
-
Минимизировать риски: Ошибки или вопросы по процессу решались на небольшом объеме товара, не затрагивая всю номенклатуру.
-
Не нарушать работу: Магазины продолжали торговать немаркированным товаром, параллельно подготавливая маркированные остатки к продаже
-
Контролировать нагрузку: IT-отдел и менеджеры не были завалены одновременными запросами из множества магазинов.
Как это работало на практике:
-
Планирование волны: Определялась группа товаров (например, "Верхняя одежда бренда X" или "Весь сегмент молочной продукции").
-
Централизованная подготовка: Категорийный менеджер проводил эмиссию кодов только для этой группы и вводил их в оборот.
-
Запуск волны: После включения признака маркировки и обмена, магазины начинали процесс сканирования и наклейки, завершая его за один-два дня.
-
Анализ и следующая волна: После успешного завершения и устранения мелких недочетов, запускалась следующая товарная группа.
Итог: За полгода таким методом мы планомерно, без авралов и хаоса, промаркировали остатки по всем номенклатурным группам в рознице.
Оборудование
-
Принтеры: Мы использовали обычные термопринтеры, которые уже были в магазинах для печати ценников.
-
Минус: Термопечать менее устойчива к истиранию.
-
Плюс: Не потребовалось закупать новое оборудование.
-
-
Сканеры: Подойдет любой 2D-сканер, настроенный на работу в режиме эмуляции клавиатуры.
Безопасность: Обращение к HTTP-сервису 1С происходило внутри защищенного VPN-канала, организованному между магазином и офисом
💡 Внимание! Развертывание системы без VPN в открытой сети, потребует дополнительных мер безопасности.
🎁 Готовое решение и исходный код (Файлы для скачивания)
Решение адаптировано для УТ 11.5, КА 2.5, ERP 2.5, но принцип, описанный в статье, универсален и применим к любой другой типовой конфигурации, в который имеется поддержка Честного Знака
📦 Архив 1. Готовый комплект для быстрого запуска
Этот комплект идеально подходит, если вам нужно быстро внедрить готовое рабочее решение, максимально соответствующее описанному в статье.
-
Расширение для 1С (.cfe): Включает HTTP-сервис с открытым кодом для обработки запросов и генерации этикеток.
-
Готовое клиентское приложение
remains.exe -
Пример конфигурационного файла
setting.json
📦 Архив 2. Исходный код клиентского приложения - remains.os
Этот архив предназначен для разработчиков, которым нужен полный контроль над клиентской частью.
-
Полный исходный код консольного приложения, написанный на OneScript.
-
Позволяет разобраться в логике, доработать под свои нужды или интегрировать в существующую систему.
📝 Заключение
Маркировка остатков в распределенной торговой сети - это вполне решаемая техническая задача. Главное - убрать человеческий фактор из ключевого звена и сделать процесс простым, как сканирование штрихкода. Это решение, построенное на независимой Клиент-Серверной архитектуре, позволило промаркировать большое количество товаров в магазинах, сохраняя 100% точность и не создавая задержек в торговле.
Расширение без доработок интегрируется в любую вашу конфигурацию:
- УТ 11.5.XX.XX
- КА 2.5.XX.XX
- ERP 2.5.XX.XX
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.17.151
- 1С:ERP Управление предприятием 2, релизы 2.5.17.151
- 1С:Комплексная автоматизация 2, релизы 2.5.17.151
Вступайте в нашу телеграмм-группу Инфостарт
