Дубли товаров и разделов после обмена с 1С
Дубль после обмена всегда означает одно: сайт или портал не узнал объект, который уже есть, и создал новый. Вопрос в том, где именно порвалась связь — а мест, где она рвётся, несколько.
Чем связаны объекты
У обмена есть две стороны учёта соответствий, и ломаться может любая.
- На сайте у каждого элемента есть внешний код — идентификатор из 1С. Пустой или изменившийся код означает, что товар считается новым.
- В 1С соответствия хранятся в регистре идентификаторов объектов. При обмене с Битрикс24 это регистр вида
Б24_К_ИдентификаторыОбъектов: в нём записано, какой объект 1С какому объекту портала соответствует.
Отсюда случай, который ставит в тупик: каталог залили на портал заранее — выгрузкой из файла, через импорт, руками, — а потом настроили обмен. Записей в регистре нет, 1С про существующие объекты не знает и при первом же изменении создаёт их заново. Внешне это выглядит как «обмен задвоил весь каталог», хотя настройки верны.
Откуда берутся дубли
| Причина | Как узнать |
|---|---|
| Каталог загружен в обход обмена, регистр соответствий пуст | Дубли появились при первом обмене после ручной загрузки |
| В 1С сменились идентификаторы: базу пересоздали, свернули, перенесли | У дубля и оригинала разные внешние коды |
| Внешние коды на сайте потеряны при переносе или массовой правке | У старых товаров поле внешнего кода пустое |
| Работают два механизма обмена одновременно | Например, заказы идут модулем обмена, а товары — синхронизацией коннектора |
| Обмен идёт из двух баз 1С | Коды дублей принадлежат разным базам |
| Символьные коды разделов и товаров совпадают после транслитерации | Дубли только у позиций с похожими названиями или спецсимволами |
Два канала обмена — отдельная ловушка
Схема «заказы через модуль обмена, а товары через синхронизацию портала» выглядит разумной, пока оба канала не начинают создавать одни и те же объекты. Каждый ведёт свой учёт соответствий и про чужие записи не знает. Результат — товары в двух экземплярах, а в сделках ссылки то на одни, то на другие.
Правило простое: один тип объектов — один канал обмена. Если нужны оба механизма, разводите их по сущностям и проверяйте, что товары создаёт только один.
Дубли сделок и заказов
На стороне портала встречается своя версия: один заказ 1С оказывается связан с двумя сделками. Дальше начинается путаница — правки в одной сделке уезжают в 1С, а вторая остаётся со старым составом и суммой, и менеджер видит несогласованные данные.
Причина та же: при создании сделки не нашлось соответствия, хотя оно должно было быть. В свежих версиях коннектора добавлена проверка существования сделки перед созданием, поэтому первым делом стоит посмотреть, какая версия стоит, и обновиться — часть таких случаев закрывается обновлением, а не разбором.
Задвоение строк внутри документа
Отдельный симптом, который легко спутать с дублями объектов: сам счёт или заказ один, но товарные строки в нём задвоены, и сумма получается вдвое больше. Это не дубль сущности, а ошибка переноса табличной части — смотреть нужно версию модуля и настройки сопоставления строк, а не внешние коды.
Порядок действий
- Остановите обмен. Каждый следующий прогон добавит копий, и разбирать придётся больше.
- Сделайте резервную копию базы сайта или портала: дальше массовое удаление.
- Выгрузите список дублей с внешними кодами и датами создания — так видно, какая копия исходная.
- Определите причину по таблице выше. Чистка без этого бессмысленна: дубли вернутся на следующем обмене.
- Восстановите соответствия, если дело в них: проставить внешние коды на сайте или заполнить регистр соответствий в 1С сопоставлением по артикулу.
- Сведите дубли: оставьте исходный объект, перенесите на него привязки из заказов и сделок, удалите копию.
- Прогоните обмен на копии и убедитесь, что новых дублей нет.
Дубли разделов каталога
С разделами последствия тяжелее: товары распределяются по двум одинаковым веткам, и половина каталога исчезает из меню, хотя физически на месте. Причины те же плюс одна своя — пересоздание групп в 1С. Переименование раздела безопасно, а вот удаление и создание заново рвёт связь навсегда.
Чтобы не повторялось
- Никогда не заливайте каталог в обход обмена, если потом собираетесь обмениваться: либо грузите через обмен, либо сразу заполняйте соответствия.
- Не очищайте внешние коды массовыми операциями на сайте.
- Следите, чтобы с одним сайтом работала одна база 1С и один канал обмена на каждый тип объектов.
- После переноса сайта или базы проверяйте соответствия выборочно — до первого обмена, а не после.
Частые вопросы
Залили каталог на портал файлом, настроили обмен — пошли дубли. Почему?
В 1С нет записей о соответствии: регистр идентификаторов объектов пуст, и при первом изменении товара она создаёт его заново. Соответствия нужно заполнить сопоставлением по артикулу или грузить каталог через сам обмен.
Можно просто удалить дубли и обменяться заново?
Если причина не устранена, они вернутся на следующем обмене. Сначала восстановите соответствия, потом чистите — иначе чистка превращается в регулярный ритуал.
Один заказ 1С связан с двумя сделками, правки уходят только в одну.
Так бывает, когда при создании сделки не нашлось соответствия. В свежих версиях коннектора есть проверка существования сделки перед созданием, поэтому начните с версии модуля: часть случаев закрывается обновлением.
В счёте задвоились строки товаров, сумма вдвое больше. Это тоже дубли?
Нет, это другая проблема: сущность одна, задваивается табличная часть документа. Смотрите версию модуля и настройки переноса строк, а не внешние коды.
Как удалить дубли, не сломав старые заказы?
В заказах товары привязаны к конкретным идентификаторам. Удалять можно только копии, на которые нет ссылок; остальные объединяют с переносом привязок. На большом каталоге это делается скриптом с предварительной выгрузкой списка.
Дубли только у части товаров, у остальных всё нормально.
Ищите общее у проблемных позиций: спецсимволы в названиях, одинаковые символьные коды после транслитерации, принадлежность к разделу, который пересоздавали в 1С.