При ведении розничной торговли обувью, одеждой или другими штучными товарами часто возникает задача организовать точечный, поэкземплярный учет. Собственники бизнеса и автоматизаторы хотят точно знать: какая конкретно коробка поступила от поставщика, в какой момент она была продана, где именно произошла пересортица или подмена товара покупателем при возврате. В этой статье мы подробно разберем, как правильно реализовать такой учет в программе 1С:Розница 2, почему популярная идея использовать для этого характеристики является критической ошибкой и какие штатные механизмы системы для этого предназначены.
Очень часто у начинающих пользователей и неопытных программистов возникает мысль: «Если у каждой коробки свой уникальный штрихкод, давайте создадим для каждого такого штрихкода отдельную характеристику номенклатуры». Проанализируем, к каким катастрофическим последствиям для базы данных 1С это приведет на практике.
Справочник ХарактеристикиНоменклатуры в системе 1С проектировался для ведения группового учета свойств. Например, у вас есть модель обуви «Ботинки мужские кожаные», и у нее есть характеристики: «Размер 42, Цвет Черный», «Размер 43, Цвет Коричневый». Количество таких комбинаций конечно и относительно невелико.
Если же вы попытаетесь под каждую физическую коробку создавать уникальную характеристику (например, «Штрихкод 1234567890123»), то столкнетесь со следующими проблемами:
ТоварыНаСкладах и ТоварыОрганизаций), хранят остатки в разрезе характеристик. Чем больше уникальных записей в этих таблицах, тем медленнее будут проводиться документы поступления, перемещения, чеки ККМ и тем дольше будут формироваться отчеты. Расчет себестоимости и проведение документов закрытия месяца начнут зависать.Поэтому заводить уникальный штрихкод в качестве характеристики — это грубейший антипаттерн, который гарантированно приведет к критическим проблемам с производительностью вашей системы.
Для решения задачи поэкземплярного учета без вреда для производительности в 1С разработан мощный встроенный механизм — СерииНоменклатуры. В контексте розничной торговли серия может выступать в роли уникального серийного номера (или индивидуального штрихкода) конкретной единицы товара.
Рассмотрим по шагам, как правильно настроить учет по сериям в 1С:Розница 2:
ВидНоменклатуры (например, «Обувь»). Перейдем к настройкам серий:
При сканировании товара на кассе (в РМК) процесс будет выглядеть следующим образом: кассир считывает общий штрихкод EAN-13 (напечатанный типографским способом на всех коробках этой модели), после чего система автоматически открывает диалоговое окно с запросом: «Сканируйте уникальный серийный номер экземпляра». Кассир сканирует индивидуальный штрихкод коробки, и товар добавляется в чек.
Выясним, как именно 1С сопоставляет считанные штрихкоды с товарами. В системе за это отвечает независимый регистр сведений ШтрихкодыНоменклатуры. Его записи связывают текстовую строку (код со сканера) с объектами метаданных.
Когда вы используете механизм серий, запись в регистре выглядит следующим образом:
Благодаря такой структуре, при сканировании уникального штрихкода система мгновенно определяет не только сам товар и его размер, но и конкретный физический экземпляр (серию), автоматически заполняя всю аналитику в документе продажи или поступления.
Проанализируем пример кода, который может использоваться разработчиком для поиска серии номенклатуры по считанному уникальному штрихкоду при кастомной доработке логики рабочего места кассира:
// Функция ищет серию номенклатуры по уникальному штрихкоду (серийному номеру)
Функция НайтиСериюПоШтрихкоду(Знач СчитанныйШтрихкод) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СерииНоменклатуры.Ссылка КАК Серия,
| СерииНоменклатуры.Владелец КАК Номенклатура
|ИЗ
| Справочник.СерииНоменклатуры КАК СерииНоменклатуры
|ГДЕ
| СерииНоменклатуры.СерийныйНомер = &СчитанныйШтрихкод";
Запрос.УстановитьПараметр("СчитанныйШтрихкод", СчитанныйШтрихкод);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("Серия", Выборка.Серия);
СтруктураДанных.Вставить("Номенклатура", Выборка.Номенклатура);
Возврат СтруктураДанных;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Современные реалии розничной торговли диктуют свои правила. Начиная с последних нескольких лет, в Российской Федерации (система «Честный Знак») и в Республике Беларусь (система «Электронный знак») введена обязательная государственная маркировка обуви и множества других групп товаров.
Если вы продаете обувь, вам не нужно придумывать собственные схемы по ведению уникальных штрихкодов. Государство уже обязало производителей и импортеров наносить на каждую единичную коробку уникальный двухмерный штрихкод формата DataMatrix. Этот код уникален для каждого экземпляра товара во всем мире.
В «1С:Розница 2.*» интеграция с государственными системами маркировки выполнена на высочайшем уровне и работает по умолчанию:
Использование механизмов интеграции с маркировкой полностью закрывает потребность в поштучном учете каждой коробки. Вы всегда будете точно знать, какой код маркировки (и соответственно, какая коробка) поступил в магазин, а какой был продан конечному покупателю.
Вести учет уникальных серийных номеров или кодов маркировки вручную за компьютером в торговом зале — задача крайне неэффективная. Если объемы продаж превышают несколько пар в день, вам обязательно потребуется специализированное оборудование.
Рекомендуется использовать Терминалы сбора данных (ТСД) со специализированным программным обеспечением, которые легко интегрируются с базой данных 1С:
Подведем итог нашему анализу. Если перед вами стоит задача организовать учет по уникальным штрихкодам каждой единицы товара в 1С:Розница 2, придерживайтесь следующих правил: