Почему после обмена в 1С появляются дубли: устройство привязок объектов
Содержание
Привязка в 1С — это запись о том, что объект в одной базе и объект в другой базе считаются одним и тем же. При обмене данными программа сначала ищет пару по уникальному идентификатору (UUID ссылки), затем по ключевым полям вроде ИНН или артикула. Найденную пару, если идентификаторы различаются, запоминает в регистре сведений Соответствия объектов информационных баз, и в следующих сеансах обмена уже не ищет заново.
Когда этот механизм работает, его не видно. Когда ломается — в базе-приёмнике появляются два «ООО Ромашка», документы приходят с <Объект не найден> вместо контрагента, а остатки по номенклатуре расходятся.
Что называют привязками в 1С
Слово «привязка» в 1С используют в нескольких смыслах. Чтобы не искать решение не там, сверьтесь с таблицей.
| Что привязано | Где встречается | Чем ломается |
|---|---|---|
| Объект одной базы к объекту другой | Синхронизация данных, обмены по правилам конвертации | Дубли, <Объект не найден>, неверные остатки |
| Элемент формы к реквизиту | Свойство ПутьКДанным у элемента управляемой формы | Поле пустое или не сохраняется |
| Конфигурация к поставщику | Режим поддержки в Конфигураторе | Обновление предлагает сравнение и объединение |
| Конфигурация к хранилищу | Групповая разработка через хранилище конфигурации | Нельзя захватить объекты, конфликт версий |
| Программная лицензия к компьютеру | Файлы лицензий .lic | После замены оборудования лицензия «слетает» |
Дальше речь пойдёт о первом и самом частом случае — привязках объектов при обмене.
Механизм привязки объектов при обмене данными
Каждая ссылка в 1С (справочник, документ, план видов характеристик) хранит уникальный идентификатор — 128-битное число, которое платформа присваивает при первой записи объекта. Этот UUID и есть главный ключ привязки.
Порядок поиска пары в базе-приёмнике
Когда приходит пакет данных, программа ищет, к чему «пристегнуть» входящий объект:
- 🔎 Регистр соответствий. Если для узла обмена уже есть запись «UUID источника → объект приёмника», берётся она.
- 🆔 Поиск по UUID. Если записи нет, программа проверяет, нет ли в приёмнике объекта с тем же идентификатором. Так работают обмены между базами, созданными одна из другой.
- 🏷️ Поиск по ключевым полям. Не нашли по UUID — ищут по полям, заданным в правилах: для контрагентов обычно ИНН и КПП, для номенклатуры — артикул или наименование, для банковских счетов — номер счёта и БИК.
- ➕ Создание нового. Ничего не подошло — объект создаётся с новой ссылкой, а пара записывается в регистр, чтобы в следующий раз не искать.
Именно на четвёртом шаге рождаются дубли. Если в приёмнике уже был контрагент, но у него не заполнен ИНН, а наименование отличается одной кавычкой, программа его не узнает и заведёт второго.
Чем отличаются виды обменов
| Вид обмена | Как привязываются объекты | Нужен ли регистр соответствий |
|---|---|---|
| Распределённая информационная база (РИБ) | Ссылки одинаковые во всех узлах | Нет |
| Обмен через EnterpriseData (БП ↔ УТ, БП ↔ ЗУП и др.) | UUID, затем ключевые свойства из правил | Да, если UUID разные |
| Обмен по правилам «Конвертации данных» 2.x | По внутреннему идентификатору или по полям поиска, как задано в правилах | Да, в типовых обменах на БСП |
| Загрузка из Excel, внешние обработки | Обычно по наименованию или коду | Чаще всего нет |
В РИБ привязки не теряются: подчинённый узел создаётся из главного, и все ссылки у них совпадают. Проблемы с дублями в РИБ почти всегда означают, что объект завели вручную в двух узлах одновременно.
Где хранятся привязки в базе
В типовых конфигурациях на Библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP) привязки обмена лежат в регистре сведений Соответствия объектов информационных баз. Одна запись — одна пара объектов в рамках конкретного узла плана обмена.
В записи хранится:
- 🔗 узел обмена — с какой базой установлена связь;
- 📄 ссылка на объект в текущей базе;
- 🆔 идентификатор того же объекта в другой базе (строкой);
- 🧩 типы объектов с обеих сторон.
Отдельно от регистра работает регистрация изменений. Она отвечает на другой вопрос: что отправить в следующем сеансе. Таблицы регистрации изменений создаются платформой для каждого объекта, включённого в состав плана обмена. Путать их с привязками не стоит: очистка регистрации не трогает соответствия, а очистка соответствий не отменяет отправку.
Как посмотреть регистр соответствий
- Включите команду
Все функции:Главное меню → Сервис → Параметры→ флажок «Отображать команду “Все функции”». - Откройте
Главное меню → Все функции → Регистры сведений. - Найдите «Соответствия объектов информационных баз» и установите отбор по узлу обмена.
Для просмотра достаточно прав пользователя с полными правами. Менять записи здесь можно, но делать это стоит только по плану из раздела о восстановлении.
Как настроить привязки при первой синхронизации
Первый обмен — момент, когда закладываются все будущие привязки. Ошибка здесь потом тянется месяцами.
Подготовка обеих баз
- 🧹 Уберите дубли до обмена. В БП 3.0 и УТ 11 это обработка «Поиск и удаление дублей» в разделе
Администрирование → Обслуживание. Два одинаковых контрагента в источнике превратятся в два и в приёмнике. - 🧾 Заполните ключевые поля. ИНН и КПП у контрагентов, артикулы у номенклатуры, номера счетов. Пустой ключ — гарантированный дубль.
- 📏 Выровняйте наименования. «ООО “Ромашка”» и «Ромашка ООО» по наименованию не сопоставятся.
- 💾 Сделайте резервные копии обеих баз. Откат после неудачного первого обмена без копии — это ручная чистка сотен объектов.
Сопоставление данных в помощнике
Настройка синхронизации в типовых конфигурациях начинается с Администрирование → Синхронизация данных. После подключения к второй базе помощник предлагает этап сопоставления: показывает объекты обеих баз и предлагает связать их.
- Откройте этап сопоставления и выберите тип данных, например «Контрагенты».
- Запустите автоматическое сопоставление и укажите поля, по которым искать пары: ИНН, КПП, наименование.
- Проверьте результат. Строки, где пара найдена, отмечены как сопоставленные; несопоставленные висят отдельно.
- Несопоставленные объекты, у которых в другой базе есть двойник, свяжите вручную: выделите строку и укажите объект второй базы.
- Повторите для номенклатуры, договоров, банковских счетов, складов.
- Только после этого запустите обмен с загрузкой данных.
Если пропустить сопоставление и сразу нажать синхронизацию, программа применит только автоматический поиск по правилам. Всё, что не нашлось, будет создано заново.
После этого пары записываются в регистр соответствий, и следующие сеансы проходят без повторного поиска.
Где ломаются привязки: типичные сбои
Сломанная привязка проявляется не сразу. Обычно её замечают по отчётам: сальдо по 62 и 60 не сходится с данными учётной системы, в оборотно-сальдовой ведомости контрагент «раздвоился».
Отдельный частый сценарий — объединение дублей в одной базе, пока обмен активен. Если в приёмнике заменить «Ромашку-2» на «Ромашку-1» и удалить вторую, а запись регистра соответствий останется указывать на удалённую ссылку, следующий пакет может снова создать дубль. После объединения проверьте записи регистра по этому объекту.
Как восстановить сломанные привязки
Чинить привязки лучше от простого к радикальному. Каждый следующий способ затрагивает больше данных.
| Способ | Когда подходит | Риск |
|---|---|---|
| Объединить дубли | Дублей немного, привязки в целом верные | Низкий |
| Исправить запись в регистре | Привязка ведёт не на тот объект | Средний |
| Удалить записи по узлу и пересопоставить | Массовые ошибки после первого обмена | Высокий |
| Пересоздать обмен с нуля | Регистр полностью рассинхронизирован | Высокий, долго |
Перед любым из способов сделайте резервную копию обеих баз и остановите автоматическую синхронизацию по расписанию. Иначе в середине работы придёт пакет и создаст новые дубли.
Способ 1. Объединить дубли
- Откройте
Администрирование → Обслуживаниеи запустите «Поиск и удаление дублей». - Задайте область поиска (например, контрагенты) и условие: совпадение по ИНН.
- Для каждой группы выберите оригинал, остальные отметьте к замене.
- Программа заменит ссылки во всех документах на оригинал и пометит дубли на удаление.
- Откройте регистр соответствий и проверьте, на какой объект теперь указывает пара. Если на удалённый дубль — исправьте запись по способу 2.
Способ 2. Перепривязать объект вручную
- Найдите в регистре соответствий запись с ошибочным объектом (отбор по узлу и по ссылке).
- В поле со ссылкой укажите правильный объект текущей базы и запишите.
- Зарегистрируйте этот объект к отправке, чтобы вторая база получила его актуальную версию.
Если неясно, какой объект «настоящий», сверьте UUID. В Конфигураторе или в консоли запросов это проверяется так:
УИД = Новый УникальныйИдентификатор("3a1f6c2e-8b4d-11ee-9a01-005056a3b1c7");
Ссылка = Справочники.Контрагенты.ПолучитьСсылку(УИД);
Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
Сообщить("Объекта с таким идентификатором в базе нет");
Иначе
Сообщить("Найден: " + Строка(Ссылка));
КонецЕсли;
Идентификатор объекта во второй базе возьмите из той же записи регистра.
Способ 3. Сбросить привязки по узлу и сопоставить заново
Используйте, когда первый обмен прошёл неудачно и дублей сотни.
- Удалите или объедините дубли, созданные обменом, в приёмнике.
- В регистре соответствий установите отбор по узлу и удалите записи по проблемным типам данных.
- Запустите синхронизацию с этапом сопоставления и пройдите его заново, как при первой настройке.
Без записей в регистре программа снова пойдёт по цепочке «UUID → ключевые поля → новый объект». Если ключевые поля так и остались пустыми, дубли вернутся. Сначала исправьте данные, потом сбрасывайте.
Если не помогло
Когда регистр перепутан целиком, проще удалить настройку синхронизации в обеих базах и создать её заново. При удалении настройки удаляется и узел, а с ним — все привязки к нему. Новая настройка начнёт с чистого листа и предложит сопоставление. Делайте это в нерабочее время: пока обмена нет, документы между базами не ходят.
Как не допустить поломки привязок
Большинство сбоев предсказуемы. Их предотвращает порядок в справочниках и дисциплина при работе с обменом.
- 🗂️ Одна база — хозяин справочника. Решите, где заводят контрагентов и номенклатуру. Если их создают в обеих базах одновременно, дубли неизбежны.
- 🚫 Не удаляйте объекты в приёмнике. Удалённый в одной базе объект, на который ссылается другая, превращается в
<Объект не найден>при следующей загрузке документа. - 🧾 Контроль ключевых полей. Пустой ИНН у нового контрагента — повод не сохранять карточку.
- 🔄 Восстановление из копии — вместе. Если откатили одну базу, оцените, что приходило в обмене после даты копии. Иногда проще повторно выгрузить изменения за период.
- 🧪 Проверяйте обновления на копии. Новые правила обмена после обновления конфигурации могут поменять поля поиска.
Частые вопросы о привязках в 1С
Сохранятся ли привязки, если перенести базу на другой сервер?
.dt. Если копия используется как тестовая, отключите в ней синхронизацию, иначе она начнёт обмениваться с рабочей базой.Что такое свойство ПутьКДанным у элемента формы?
Как отвязать конфигурацию от поставщика?
Конфигурация → Поддержка → Настройка поддержки и снимите конфигурацию с поддержки. После этого типовые обновления придётся накатывать через сравнение и объединение, поэтому без необходимости снимать с поддержки не стоит.Почему программная лицензия перестала работать после замены диска?
%ALLUSERSPROFILE%\1C\licenses.Как отключиться от хранилища конфигурации?
Конфигурация → Хранилище конфигурации → Отключиться от хранилища. Захваченные объекты перед этим лучше поместить в хранилище, иначе изменения в них останутся только в вашей локальной конфигурации.