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