Связаться с нами

Оставьте заявку — перезвоним за 15 минут

Или свяжитесь напрямую

+7 (705) 966-25-25
Алматы, ул. Шевченко 165Б, офис 511

Дубли номенклатуры в 1С: как найти, объединить и не допустить снова

Коротко (TL;DR)Дубли номенклатуры в 1С появляются из-за ручного ввода, загрузок по наименованию и обменов без единого ключа. Найти их можно по совпадающим артикулам и штрихкодам, а похожие наименования проверять с ручным подтверждением. Объединять позиции с движениями нужно на копии базы через замену ссылок с последующей сверкой остатков. После чистки важно закрыть источник: обязательный артикул, проверка при записи и единый ключ в обменах.

Почему дубли номенклатуры это не косметика

Дубль номенклатуры выглядит безобидно: в справочнике две карточки одного и того же товара. На деле он ломает сразу несколько вещей. Остаток делится между двумя позициями, и система показывает ноль там, где товар на складе есть. Продажи и закупки расходятся по разным карточкам, поэтому отчёты по оборачиваемости и марже врут. Выгрузка на сайт или на Kaspi отдаёт два товара вместо одного, и покупатель видит дубликаты в каталоге.

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

Откуда берутся дубли

Источник дублей почти всегда один из пяти:

  1. Ручной ввод без поиска. Менеджер не нашёл товар по названию, потому что искал «саморез» вместо «шуруп-саморез», и завёл новую карточку.
  2. Загрузка из Excel по наименованию. Позиция в прайсе поставщика названа иначе, и загрузка создала новую вместо обновления старой. Подробно об этом в статье как загрузить номенклатуру из Excel.
  3. Обмен между базами без общего ключа. Две базы обмениваются данными, и при рассинхронизации идентификаторов одна и та же позиция приходит как новая.
  4. Слияние компаний или баз. Два справочника сводятся в один, и у каждой стороны своя система наименований.
  5. Интеграции с сайтом и маркетплейсами. Товар, созданный на сайте, возвращается в 1С новой карточкой, если обмен сопоставляет позиции не по коду.

Если не закрыть источник, после чистки дубли вернутся через пару месяцев. Поэтому разбор всегда начинается с вопроса, откуда они пришли.

Как найти дубли: три уровня поиска

Поиск дублей лучше вести от надёжного к сомнительному. Каждый следующий уровень даёт больше кандидатов и больше ложных срабатываний.

УровеньПризнакТочностьЧто делать с результатом
1Одинаковый штрихкод у разных карточекПочти 100%Объединять после быстрой проверки
2Одинаковый артикул при одном производителеВысокаяПроверять единицы и характеристики
3Похожие наименования после нормализацииСредняяТолько с ручным подтверждением

На первых двух уровнях хватает запроса к базе: группировка по штрихкоду или артикулу с отбором групп, где карточек больше одной. Третий уровень сложнее. Наименования сначала нормализуют: приводят к одному регистру, убирают лишние пробелы и знаки, заменяют «х» на «x» в размерах, раскрывают типовые сокращения. После этого сравнивают уже очищенные строки.

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

Нормализация наименований: как сравнивать похожие строки

Третий уровень поиска держится на нормализации. Без неё сравнение строк бесполезно: «Труба ПП 20мм PN20» и «труба п/п 20 мм PN 20» отличаются почти каждым символом, хотя это один товар. Нормализация приводит обе строки к одному виду, и только потом их сравнивают.

Типовой набор правил выглядит так:

  1. Всё в нижний регистр, лишние пробелы и знаки препинания убраны.
  2. Латинские и кириллические двойники заменены на один вариант: «х» и «x», «с» и «c», «о» и «o». Это частая причина, по которой одинаковые на вид строки не совпадают.
  3. Единицы и размеры приведены к одному написанию: «20 мм», «20мм» и «20 mm» становятся одним токеном.
  4. Типовые сокращения раскрыты по словарю: «оцинк.» в «оцинкованный», «п/п» в «полипропилен».
  5. Слова отсортированы, чтобы «кабель ВВГ 3х2,5» и «ВВГ кабель 3х2,5» совпали.

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

Словарь сокращений у каждой компании свой. В строительном ассортименте одни сокращения, в аптечном другие. Поэтому готовые универсальные решения дают много шума, а обработка, настроенная под ваш справочник, даёт короткий список, который товаровед проверяет за час.

Как выглядит список кандидатов на объединение

Результат поиска стоит показывать не в виде голого списка, а в виде таблицы, с которой удобно работать человеку, знающему ассортимент. В каждой строке пара или группа карточек и всё, что нужно для решения:

КолонкаЗачем она нужна
Наименования и артикулы всех карточек группыУвидеть различия глазами
Единицы измеренияОтсеять пары, которые объединять нельзя
Остаток и число документов по каждойПонять, какую карточку оставить основной
Дата последнего движенияОтличить живую позицию от забытой
Уровень уверенностиНачать с надёжных пар
Решение: объединить, оставить, отложитьЗафиксировать выбор человека

Такую таблицу удобно выгрузить в Excel, отдать товароведу и загрузить обратно с решениями. Объединение затем выполняется только по подтверждённым строкам.

Как объединить дубли с движениями

Объединение означает, что одна карточка остаётся основной, а все документы и записи регистров, которые ссылались на дубль, начинают ссылаться на неё. Сам дубль после этого помечается на удаление. В платформе 8.3 для этого используется замена ссылок, а в типовых конфигурациях есть встроенная команда объединения элементов справочника.

  1. Работайте в копии базы. Объединение затрагивает документы за все периоды, ошибку в рабочей базе откатить почти невозможно.
  2. Снимите контрольные цифры. Остатки по складам и стоимость на дату, обороты за закрытые периоды. После объединения суммы должны совпасть.
  3. Выберите основную карточку. Обычно ту, у которой правильные артикул, штрихкод и единица, и по которой больше движений.
  4. Перенесите недостающие реквизиты. Если у дубля был штрихкод или фото, которых нет у основной, сначала перенесите их.
  5. Выполните замену ссылок. Пакетно, группами, с протоколом.
  6. Сверьте цифры. Остатки, стоимость, обороты. Если что-то разошлось, ищите причину до переноса в рабочую базу.

Особая осторожность нужна с закрытыми периодами. Если по дублю были движения в периоде, по которому уже сдана отчётность, замена ссылок формально меняет документы этого периода. Суммы при правильном объединении не меняются, но решение о таком изменении должна принимать бухгалтерия.

Когда дубли объединять нельзя

Не каждая пара похожих карточек является дублем. Перед объединением проверьте:

  • Единицы измерения. Кабель в бухтах и кабель в метрах это одна позиция только если в карточке настроен пересчёт. Без этого объединение исказит остатки в разы.
  • Характеристики. Футболка размера M и размера L могут быть оформлены как отдельные позиции осознанно, особенно если характеристики в базе не включены.
  • Учёт по партиям и сериям. Товары с разными сроками годности иногда специально ведутся разными карточками.
  • Разные поставщики с разным качеством. Похожее наименование ещё не значит одинаковый товар.

Поэтому на третьем уровне поиска финальное решение всегда за человеком, который знает ассортимент. Задача обработки: собрать кандидатов и показать их удобно, а не объединять молча.

Как не допустить дублей снова

После чистки нужно закрыть источник. Обычно хватает четырёх мер:

  1. Обязательный артикул или штрихкод при создании карточки для групп, где они есть всегда.
  2. Проверка при записи. Небольшое расширение конфигурации при сохранении новой позиции ищет похожие и предупреждает: «Похожий товар уже есть, точно создать новый?».
  3. Единый ключ в обменах. Сайт, маркетплейсы и другие базы сопоставляют товары по коду или идентификатору, а не по названию.
  4. Права на создание. Заводить новые позиции может ограниченный круг сотрудников, остальные отправляют заявку.

Раз в квартал стоит запускать поиск по первым двум уровням. Если дубли снова появились, это сигнал, что где-то остался открытый источник.

Сколько времени занимает чистка справочника

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

Мы ведём такие проекты в рамках работ с данными 1С: даём список кандидатов на объединение с уровнем уверенности, вы подтверждаете спорные пары, мы объединяем на копии и показываем сверку остатков до и после. Оценку называем после того, как посмотрели справочник.

Частые вопросы

Можно ли просто удалить дубль номенклатуры?

Только если по нему не было движений. Если были документы, сначала нужно перенести ссылки на основную карточку, иначе остатки и обороты потеряются.

Есть ли в 1С встроенный поиск дублей?

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

Изменятся ли закрытые периоды после объединения?

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

Почему дубли появляются после обмена с сайтом?

Обмен сопоставляет товары не по коду, а по названию, или идентификаторы рассинхронизировались. Нужно перевести обмен на единый ключ.

Сколько стоит поиск и объединение дублей?

Небольшие обработки начинаются от 150 000 ₸. Полная чистка справочника с движениями оценивается после осмотра базы.