В торговой практике регулярно встречаются ситуации, когда разные товарные позиции имеют один и тот же штрихкод производителя. Классические примеры: одинаковый напиток в бутылках разного цвета с разной стоимостью, смена максимальной розничной цены (МРЦ) на сигаретах без изменения кода производителя, модификация ламп или других бытовых изделий, когда старая и новая ревизии продаются одновременно. При попытке настроить учет таких позиций в конфигурации 1С:Управление торговлей пользователи включают в настройках системы признак разрешения неуникальных штрихкодов. Однако при сканировании сканером в документах, в подборе или в режиме РМК окно выбора не появляется — программа автоматически подставляет первый попавшийся товар из базы. Разберем, почему система ведет себя именно так и какими способами можно организовать корректную работу.
Проанализируем логику, заложенную разработчиками в типовые конфигурации. В отличие от конфигурации 1С:Розница, где сценарий коллизии штрихкодов предусмотрен изначально (открывается диалоговое окно для кассира с предложением выбрать нужную позицию), конфигурация 1С:Управление торговлей исторически ориентирована на оптовый учет. В оптовом сегменте штрихкод считается однозначным уникальным идентификатором товарной единицы или конкретной логистической упаковки.
Официальная позиция разработчиков фирмы «1С» заключается в следующем: установка флага «Разрешить назначение не уникальных штрихкодов» лишь снимает программное ограничение на уровне записи данных. Она дает возможность записать в регистр сведений Штрихкоды (или ШтрихкодыНоменклатуры в редакциях на управляемых формах) несколько записей с одинаковым кодом. Никакого влияния на алгоритмы поиска при внешнем событии от сканера эта настройка не оказывает.
В процедурах обработки входящих данных от торгового оборудования выполняется запрос к регистру сведений. В тексте запроса либо используется директива ВЫБРАТЬ ПЕРВЫЕ 1, либо результат обрабатывается однократным вызовом метода Следующий(). Ветвление с открытием списка при наличии двух и более записей в логике УТ по умолчанию отсутствует. Программа находит первую подходящую запись по порядку выборки и сразу помещает найденную номенклатуру в табличную часть.
Если специфика бизнеса не позволяет отказаться от одинаковых заводских кодов, исправить ситуацию можно доработкой подсистемы обработки торгового оборудования. В современных редакциях конфигураций (УТ 11, КА, ERP) это выполняется с помощью механизма расширений конфигурации (файл с расширением .cfe), что позволяет сохранить основную конфигурацию на типовой поддержке без снятия с замка.
Разберем по шагам логику, которую необходимо заложить в расширение:
ШтрихкодыНоменклатуры, убирая ограничение на количество получаемых записей. Запрос должен возвращать таблицу всех номенклатурных позиций, упаковок и характеристик, привязанных к считанному коду.Посмотрим на примерную структуру логики проверки количества найденных строк в обработчике:
ТаблицаРезультатов = Запрос.Выполнить().Выгрузить();
Если ТаблицаРезультатов.Количество() = 1 Тогда
ЗаполнитьСтрокуПоДаннымШтрихкода(ТаблицаРезультатов[0]);
ИначеЕсли ТаблицаРезультатов.Количество() > 1 Тогда
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("СписокТоваров", ТаблицаРезультатов);
ПараметрыОткрытия.Вставить("Штрихкод", СчитанныйШтрихкод);
Оповещение = Новый ОписаниеОповещения("ПослеВыбораНоменклатурыИзСписка", ЭтотОбъект);
ОткрытьФорму("Обработка.ВыборНоменклатурыПоШтрихкоду.Форма", ПараметрыОткрытия, ЭтотОбъект, , , , Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
Обратите внимание: если используется базовая версия конфигурации («1С:УТ Базовая»), применение расширений и изменение кода заблокированы платформой. В этом случае проблему можно решить только организационными и учетными методами.
Это классический и наиболее надежный способ учета в розничной торговле, не требующий внесения изменений в конфигурацию. Данный метод широко используется крупными сетями и гарантирует отсутствие пересортицы.
Рассмотрим по шагам процесс маркировки внутренними кодами:
В результате сканер всегда считывает строго уникальное значение, кассир не тратит время на визуальный выбор из списка, а риск человеческой ошибки полностью исключается.
Часто дубли штрихкодов появляются из-за избыточной детализации справочника Номенклатура. Пользователи создают отдельные карточки на товары, которые различаются только цветом, размером, партией или сроком годности. Это методически неверно для типовых конфигураций 1С.
Проанализируем правильный подход к ведению такого учета:
ХарактеристикиНоменклатуры. В типовом механизме штрихкод привязывается к связке «Номенклатура + Характеристика». Если штрихкод общий на все цвета, программа при сканировании находит саму номенклатуру и штатно открывает стандартный запрос на выбор характеристики.Если торговая деятельность предприятия представляет собой классическую розницу с высоким потоком покупателей, правильным архитектурным решением является разделение систем на управленческую и кассовую.
В качестве кассовой программы (Front-office) внедряется 1С:Розница или специализированное рабочее место кассира (РМК). В этих решениях интерактивный выбор при наличии одинаковых штрихкодов работает из коробки: при сканировании на экране кассира сразу отображается окно со списком совпадений. Конфигурация 1С:Управление торговлей в такой схеме выступает как Back-office: в нее посредством регулярного обмена загружаются уже готовые документы продаж (Отчет о розничных продажах), где все товарные позиции четко сопоставлены и определены кассиром в момент чека.
Если решено придерживаться правила строгой уникальности кодов, необходимо очистить базу от накопившихся дублей. Выполним следующие действия: