Why 1C Exchange Creates Product Duplicates: How to Find and Fix the Cause
I analyze the causes of duplicates after a website 1C exchange and the safe diagnostic procedure: external identifiers, offers, repeated packages, and restoring links.

In this article
- Сначала остановите размножение дублей
- Причина 1. Изменился внешний идентификатор
- Причина 2. Товар и предложение перепутаны местами
- Причина 3. У сайта и 1С два владельца одного поля
- Причина 4. Полная и инкрементальная выгрузки используют разные правила
- Причина 5. Повтор пакета не является безопасным
- Как исправлять дубли без потери данных
- Как предотвратить повторение
- First, stop the proliferation of duplicates
- Reason 1: The external identifier has changed
- Reason 2: Products and offers were swapped
- Reason 3: The website and 1C share ownership of the same field
- Reason 4: Full and incremental exports use different rules
- Reason 5: Repeating a package is not safe
- How to fix duplicates without losing data
- How to prevent recurrence
После очередного обмена в каталоге появляется второй товар с похожим названием. Иногда дублируется только один размер, иногда — целая группа. Удалить лишнюю карточку кажется быстрым решением, но при следующей выгрузке она возвращается.
Причина почти всегда находится не в названии, а в связи объектов. Интеграция должна узнавать уже существующий товар по постоянному идентификатору. Если этот ключ изменился, потерялся или сопоставляется не на том уровне, система считает запись новой.
Сначала остановите размножение дублей
Перед диагностикой приостановите автоматический обмен или переключите его на тестовый контур. Не удаляйте массово товары и не запускайте полную выгрузку «для исправления»: она может увеличить количество копий и усложнить восстановление связей.
Сделайте резервную копию базы данных и файлов, зафиксируйте время последнего успешного обмена и сохраните журналы. Выберите несколько пар «оригинал — дубль» из разных разделов. Для каждой пары запишите внутренний ID сайта, внешний идентификатор, артикул, тип сущности, дату создания и идентификаторы в 1С.
Этого небольшого набора обычно достаточно, чтобы увидеть общий рисунок.
Причина 1. Изменился внешний идентификатор
Артикул и название видны пользователю, но интеграция часто связывает объект по GUID или другому внешнему коду. Если в 1С товар пересоздали, перенесли между базами, объединили справочники или изменили правила выгрузки, он может получить новый идентификатор.
На сайте остаётся старая карточка, а новый ключ создаёт ещё одну. Сравните внешние коды оригинала и дубля с идентификатором одной и той же номенклатуры в 1С. Если они различаются, нужно восстановить соответствие по утверждённой таблице, а не выбирать карточку по совпадению названия.
Причина 2. Товар и предложение перепутаны местами
В «1С-Битрикс: Управление сайтом» товар с цветами и размерами часто представлен элементом каталога и связанными торговыми предложениями. В 1С аналогичная структура строится из номенклатуры и характеристик.
Если конфигурация выгружала характеристики как предложения, а после настройки начала создавать отдельные товары, каталог визуально дублируется. Возможен и обратный случай: идентификатор номенклатуры записывается вместо идентификатора характеристики, поэтому разные варианты спорят за одну связь.
Проверьте отдельно ключ родительского товара и ключ каждого предложения. Их нельзя объединять только потому, что совпадает артикул или часть названия.
Причина 3. У сайта и 1С два владельца одного поля
Ручное создание товара на сайте не всегда совместимо с последующей автоматической выгрузкой. Менеджер мог добавить карточку без внешнего идентификатора, а 1С позже создала собственную версию. То же происходит после импорта каталога из таблицы, если импорт не сохраняет ключи учётной системы.
Нужно определить единственный источник для структуры каталога или описать процедуру связывания ручных карточек. Автоматическое сопоставление по названию опасно: одинаковые модели бывают у разных поставщиков, а небольшое изменение текста разрывает связь.
Причина 4. Полная и инкрементальная выгрузки используют разные правила
Обычный обмен может передавать только изменения, а ручная полная выгрузка — другой набор полей или другую версию схемы. После обновления модуля, конфигурации 1С или доработки обработчика пути данных иногда расходятся.
Сравните пакет, после которого появился дубль, с предыдущим успешным: тип выгрузки, версию формата, идентификаторы, структуру групп и предложений. Важно установить точный момент появления, а не анализировать последний запуск, который мог только обновить уже созданную копию.
Причина 5. Повтор пакета не является безопасным
Сетевой сбой может произойти после записи товара, но до подтверждения приёма. 1С повторяет пакет, а обработчик на сайте создаёт объект ещё раз. Правильный импорт должен быть идемпотентным: повтор одной операции приводит к тому же состоянию, а не к новой сущности.
Проверьте, хранится ли идентификатор пакета, можно ли повторить его после тайм-аута и выполняется ли поиск существующего объекта до создания. Особое внимание нужно кастомным обработчикам, очередям и промежуточным сервисам.
Как исправлять дубли без потери данных
Сначала устраните причину создания новых копий. Затем составьте таблицу объединения: какая карточка остаётся, какой внешний идентификатор закрепляется, куда переносятся предложения, изображения, остатки, отзывы и SEO-поля.
Карточку для сохранения выбирают не только по дате. У старой страницы могут быть поисковый адрес, история просмотров и отзывы, а у новой — правильная связь с 1С. Иногда безопаснее перенести внешний идентификатор на старую карточку, иногда — оставить новую и настроить перенаправление со старого адреса. Решение зависит от данных и архитектуры каталога.
Заказы нельзя перепривязывать вслепую. Строки старых заказов должны сохранять историю товара, цены и налога. Перед массовой операцией проверьте копию базы и несколько заказов разных периодов.
После объединения выполните сначала малую выгрузку одного контрольного товара, затем повтор того же пакета и только потом полный обмен. Количество элементов и предложений сравнивают до и после каждого шага.
Как предотвратить повторение
Устойчивый процесс включает несколько правил:
внешние идентификаторы нельзя менять без плана миграции;
ручные импорты обязаны сохранять или корректно сопоставлять ключи;
товар и торговое предложение проверяются как разные сущности;
повтор пакета не создаёт новые записи;
журнал показывает созданные и обновлённые объекты отдельно;
после обновления модулей выполняется контрольный обмен на копии;
резкий рост количества товаров или предложений вызывает уведомление.
Главный критерий исправления — не исчезновение видимых копий. Нужно доказать, что один и тот же объект сохраняет связь при изменении, полном обмене и повторной загрузке. Только после этого каталог можно считать восстановленным.
After another exchange, a second product with a similar name appears in the catalog. Sometimes only one size is duplicated, sometimes an entire group. Deleting the extra card seems like a quick fix, but it returns with the next export.
The cause is almost never in the name, but in the object links. Integration must recognize an existing product by a permanent identifier. If this key changes, gets lost, or is matched at the wrong level, the system treats the record as new.
First, stop the proliferation of duplicates
Before diagnosing, pause the automatic exchange or switch it to a test circuit. Do not mass-delete products or run a full export to "fix" it: this can increase the number of copies and complicate restoring links.
Create a backup of the database and files, record the time of the last successful exchange, and save the logs. Select several "original–duplicate" pairs from different sections. For each pair, record the site internal ID, external identifier, SKU, entity type, creation date, and 1C identifiers.
This small set is usually sufficient to see the overall picture.
Reason 1: The external identifier has changed
The SKU and name are visible to the user, but integration often links objects by GUID or another external code. If an item in 1C was recreated, moved between databases, catalogs were merged, or export rules changed, it may receive a new identifier.
The website retains the old card, while the new key creates another one. Compare the external codes of the original and duplicate with the identifier of the same item in 1C. If they differ, you must restore the correspondence using the approved table, not by matching names.
Reason 2: Products and offers were swapped
In 1C-Bitrix: Site Management, a product with colors and sizes is often represented as a catalog element with associated trade offers. In 1C, a similar structure is built from items and characteristics.
If the export configuration previously exported characteristics as offers but now creates separate products after configuration changes, the catalog will visually duplicate. The reverse can also occur: an item identifier is recorded instead of a characteristic identifier, causing different variants to compete for the same link.
Check the parent product key and the key for each offer separately. Do not merge them just because the SKU or part of the name matches.
Reason 3: The website and 1C share ownership of the same field
Manually creating a product on the website is not always compatible with subsequent automatic export. A manager might have added a card without an external identifier, while 1C later created its own version. The same issue occurs after importing a catalog from a table if the import does not preserve the accounting system keys.
You must define a single source for the catalog structure or describe a procedure for linking manual cards. Automatic matching by name is risky: identical models can come from different suppliers, and even a minor text change can break the link.
Reason 4: Full and incremental exports use different rules
Standard exchange may transmit only changes, while a manual full export might use a different set of fields or a different schema version. After updating the module, 1C configuration, or modifying the data path handler, discrepancies can arise.
Compare the package that caused the duplicate with the previous successful one: export type, format version, identifiers, group structure, and offer structure. It is crucial to identify the exact moment the duplicate appeared, rather than analyzing the last run, which might have only updated an already existing copy.
Reason 5: Repeating a package is not safe
A network failure can occur after a product is recorded but before receipt is confirmed. 1C resends the packet, and the site handler creates the object again. A correct import must be idempotent: repeating an operation leads to the same state, not a new entity.
Check whether the packet identifier is stored, if it can be retried after a timeout, and if an existing object is searched for before creation. Pay special attention to custom handlers, queues, and intermediate services.
How to fix duplicates without losing data
First, eliminate the cause of new copies being created. Then compile a merge table: which card remains, which external identifier is locked, and where offers, images, stock levels, reviews, and SEO fields are moved.
The card to keep is chosen not just by date. An older page may have a search address, view history, and reviews, while a newer one may have the correct link to 1C. Sometimes it is safer to move the external identifier to the old card; other times, keep the new one and set up a redirect from the old address. The decision depends on the data and catalog architecture.
Orders cannot be remapped blindly. Old order lines must preserve product history, price, and tax. Before a mass operation, verify a database copy and several orders from different periods.
After merging, first perform a small export of a single test product, then repeat the same package, and only then execute the full exchange. Compare the number of items and offers before and after each step.
How to prevent recurrence
A stable process includes several rules:
External identifiers must not be changed without a migration plan;
Manual imports must preserve or correctly map keys;
Products and commercial offers are verified as separate entities;
Repeating a package does not create new records;
The log shows created and updated objects separately;
After updating modules, perform a test exchange on a copy;
A sudden increase in the number of products or offers triggers a notification.
The main criterion for a successful fix is the absence of disappearing visible copies. You must prove that the same object maintains its link during changes, full exchanges, and re-uploads. Only then can the catalog be considered restored.

Discussion0
Share your experience and ask questions. Comments without links appear after editorial review.
No comments yet. Start the discussion.