Как найти и исправить дублирующиеся штрихкоды в 1С?

Пользователь Торговля и дистрибуция
← На главную

Дублирование штрихкодов номенклатуры в 1С — распространенная проблема, с которой сталкиваются кассиры, кладовщики и операторы базы. При сканировании товара с неуникальным кодом в рабочем месте кассира (РМК) или на терминале сбора данных (ТСД) система запрашивает ручной выбор номенклатуры. Это снижает скорость работы и приводит к пересортице. Проанализируем, почему возникает эта проблема, и рассмотрим несколько практических способов ее решения.

Причины возникновения дубликатов штрихкодов

Прежде чем переходить к очистке базы, выясним основные причины появления одинаковых кодов у разных товаров:

Способ 1. Выгрузка в Excel и построение сводной таблицы

Если у вас нет опыта в программировании на платформе 1С, рассмотрим вариант поиска дублей через электронные таблицы Excel. Это простой и наглядный метод.

  1. Выгрузим справочник номенклатуры вместе с реквизитом Штрихкод (или справочник ЕдиницыИзмерения). Для этого можно воспользоваться механизмом выгрузки списка в табличный документ или использовать отчет «Универсальная печать справочников».
  2. Сохраним полученный отчет в файл формата Excel (.xlsx).
  3. Откроем файл в Excel и отсортируем колонку со штрихкодами.
  4. Для быстрого выявления совпадений выделим колонку со штрихкодами и применим Условное форматирование — Правила выделения ячеек — Повторяющиеся значения. Все дублирующиеся штрихкоды подцветятся цветным фоном.
  5. Альтернативный вариант — построить сводную таблицу по колонке «Штрихкод», выведя количество повторяющихся элементов. Если количество больше 1, значит, для данного штрихкода в базе существует несколько позиций номенклатуры.
  6. После нахождения проблемных штрихкодов перейдем в 1С и вручную исправим или удалим лишние записи.

Способ 2. Автоматический поиск и исправление через обработку 1С

Для больших баз данных с десятками тысяч позиций ручная исправление затребует много времени. Проанализируем алгоритм создания внешней обработки на языке 1С для поиска и коррекции дублей.

Рассмотрим следующий алгоритм:

  1. Создаем два списка: СписокШтрихкодов и СписокЕдиниц (или табличную часть для вывода результата).
  2. Обходим справочник единиц измерения или регистр сведений Штрихкоды.
  3. Если штрихкод уже присутствует в СписокШтрихкодов, значит мы нашли дубль — добавляем текущий элемент в СписокЕдиниц.
  4. Если штрихкода в списке нет, добавляем его в СписокШтрихкодов как уникальный.
  5. Сформированный СписокЕдиниц с дублями выводим на экран для дальнейшей очистки или генерируем для дубликатов новые уникальные штрихкоды.

Разберем пример кода на 1С для проверки и сбора дублей по регистру сведений Штрихкоды через запрос:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Штрихкоды.Штрихкод КАК Штрихкод,
    |	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Штрихкоды.Владелец) КАК КоличествоНоменклатуры
    |ИЗ
    |	РегистрСведений.Штрихкоды КАК Штрихкоды
    |СГРУППИРОВАТЬ ПО
    |	Штрихкоды.Штрихкод
    |ИМЕЮЩИЕ
    |	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Штрихкоды.Владелец) > 1";

РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетали = РезультатЗапроса.Выбрать();

Пока ВыборкаДетали.Следующий() Цикл
    Сообщить("Найден дублирующийся штрихкод: " + ВыборкаДетали.Штрихкод);
КонецЦикла;

С помощью данного запроса мы оперативно получаем список всех кодов, привязанных к двум и более позициям номенклатуры, и можем удалить лишние записи из регистра Штрихкоды, оставив только первоначально созданную запись.

Способ 3. Предотвращение дублирования в будущем

Чтобы исключить повторение проблемы в дальнейшем, выполним следующие настройки системы:

  1. Отключим разрешение неуникальных штрихкодов в разделе Администрирование — Настройки номенклатуры. После этого платформа 1С перестанет давать записывать уже существующий штрихкод.
  2. Воспользуемся стандартной обработкой «Поиск и удаление дублей» (раздел «Администрирование — Обслуживание»), если дубли штрихкодов возникли из-за полного дублирования карточек номенклатуры.
  3. Если в организации используется РИБ, настроим уникальные префиксы для генерации внутренних штрихкодов в каждом узле распределенной базы.
← На главную