Бесплатный экспресс-аудит сайта Безопасность, SEO, AI-поиск и 152-ФЗ — отчёт с баллами за минуту Проверить сайт
Обсудить проект

Дубли товаров и разделов после обмена с 1С

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

Чем связаны объекты

У обмена есть две стороны учёта соответствий, и ломаться может любая.

  • На сайте у каждого элемента есть внешний код — идентификатор из 1С. Пустой или изменившийся код означает, что товар считается новым.
  • В 1С соответствия хранятся в регистре идентификаторов объектов. При обмене с Битрикс24 это регистр вида Б24_К_ИдентификаторыОбъектов: в нём записано, какой объект 1С какому объекту портала соответствует.

Отсюда случай, который ставит в тупик: каталог залили на портал заранее — выгрузкой из файла, через импорт, руками, — а потом настроили обмен. Записей в регистре нет, 1С про существующие объекты не знает и при первом же изменении создаёт их заново. Внешне это выглядит как «обмен задвоил весь каталог», хотя настройки верны.

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

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

Два канала обмена — отдельная ловушка

Схема «заказы через модуль обмена, а товары через синхронизацию портала» выглядит разумной, пока оба канала не начинают создавать одни и те же объекты. Каждый ведёт свой учёт соответствий и про чужие записи не знает. Результат — товары в двух экземплярах, а в сделках ссылки то на одни, то на другие.

Правило простое: один тип объектов — один канал обмена. Если нужны оба механизма, разводите их по сущностям и проверяйте, что товары создаёт только один.

Дубли сделок и заказов

На стороне портала встречается своя версия: один заказ 1С оказывается связан с двумя сделками. Дальше начинается путаница — правки в одной сделке уезжают в 1С, а вторая остаётся со старым составом и суммой, и менеджер видит несогласованные данные.

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

Задвоение строк внутри документа

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

Порядок действий

  1. Остановите обмен. Каждый следующий прогон добавит копий, и разбирать придётся больше.
  2. Сделайте резервную копию базы сайта или портала: дальше массовое удаление.
  3. Выгрузите список дублей с внешними кодами и датами создания — так видно, какая копия исходная.
  4. Определите причину по таблице выше. Чистка без этого бессмысленна: дубли вернутся на следующем обмене.
  5. Восстановите соответствия, если дело в них: проставить внешние коды на сайте или заполнить регистр соответствий в 1С сопоставлением по артикулу.
  6. Сведите дубли: оставьте исходный объект, перенесите на него привязки из заказов и сделок, удалите копию.
  7. Прогоните обмен на копии и убедитесь, что новых дублей нет.

Дубли разделов каталога

С разделами последствия тяжелее: товары распределяются по двум одинаковым веткам, и половина каталога исчезает из меню, хотя физически на месте. Причины те же плюс одна своя — пересоздание групп в 1С. Переименование раздела безопасно, а вот удаление и создание заново рвёт связь навсегда.

Чтобы не повторялось

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

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

Залили каталог на портал файлом, настроили обмен — пошли дубли. Почему?

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

Можно просто удалить дубли и обменяться заново?

Если причина не устранена, они вернутся на следующем обмене. Сначала восстановите соответствия, потом чистите — иначе чистка превращается в регулярный ритуал.

Один заказ 1С связан с двумя сделками, правки уходят только в одну.

Так бывает, когда при создании сделки не нашлось соответствия. В свежих версиях коннектора есть проверка существования сделки перед созданием, поэтому начните с версии модуля: часть случаев закрывается обновлением.

В счёте задвоились строки товаров, сумма вдвое больше. Это тоже дубли?

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

Как удалить дубли, не сломав старые заказы?

В заказах товары привязаны к конкретным идентификаторам. Удалять можно только копии, на которые нет ссылок; остальные объединяют с переносом привязок. На большом каталоге это делается скриптом с предварительной выгрузкой списка.

Дубли только у части товаров, у остальных всё нормально.

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