При настройке обмена данными между несколькими информационными базами, например, когда одна конфигурация 1С:Бухгалтерия принимает данные из нескольких баз 1С:Розница, нередко возникают ситуации, когда объекты номенклатуры «склеиваются» некорректно. Мы часто сталкиваемся с вопросом: почему 1С считает, что товар из «Магазина 1» — это тот же самый товар, что и в «Магазине 2», даже если их идентификаторы, коды и наименования различаются?
Давайте подробно разберем, как именно работает механизм сопоставления и где искать записи, которые заставляют систему принимать такие решения.
В типовых механизмах обмена (БСП — Библиотека Стандартных Подсистем) поиск объектов происходит по строго заданным алгоритмам. Чтобы понять, почему система нашла «свое» соответствие, нужно понимать, как именно хранится информация о связи между базами.
При первой загрузке объекта 1С пытается найти существующий элемент в базе-приемнике. Если поиск проходит успешно, создается запись в специальном регистре, которая жестко закрепляет связь: объект А в базе 1 равен объекту Б в базе 2. Именно наличие такой записи является причиной того, что при последующих обменах система не создает дубли, а обновляет уже найденный элемент.
Чтобы выяснить, почему номенклатура сопоставилась неверно, нам необходимо проанализировать регистры сведений, отвечающие за синхронизацию. Рассмотрим два основных инструмента, которые используются в современных конфигурациях 1С:
СоответствиеОбъектовИнформационныхБаз — это классический регистр, который годами использовался в механизмах обмена. Он хранит пары идентификаторов объектов. Если ваша номенклатура ошибочно «подхватывается», первым делом проверьте записи в этом регистре.ПубличныеИдентификаторыСинхронизируемыхОбъектов — это более современный механизм. В новых редакциях конфигураций (например, Управление торговлей или Управление холдингом) разработчики постепенно отходят от использования СоответствиеОбъектовИнформационныхБаз в пользу этого регистра.Важно помнить, что в одной и той же конфигурации могут одновременно работать оба этих регистра. Это происходит, если база настроена на обмен с несколькими разными информационными системами, каждая из которых использует свой протокол обмена.
Если вы столкнулись с проблемой «неправильного» сопоставления, выполним следующие шаги вместе:
Шаг 1: Проверка регистров соответствия. Откройте регистр СоответствиеОбъектовИнформационныхБаз через «Функции технического специалиста». Отфильтруйте записи по номенклатуре, которая вызывает вопросы. Если вы обнаружите там запись, связывающую вашу номенклатуру с объектом, который физически находится в другом магазине, значит, проблема в «наследственности» данных. Возможно, база «Магазин 2» была когда-то создана копированием из «Магазина 1», из-за чего в регистрах остались записи с одинаковыми идентификаторами.
Шаг 2: Анализ правил конвертации. Если в регистрах нет явных ошибочных записей, значит, система находит объект «на лету» в процессе загрузки. Это происходит согласно правилам конвертации. Система пытается найти объект по полям поиска:
// Пример логики поиска объекта в правилах обмена:
// 1. Поиск по УИД (ссылке)
// 2. Поиск по коду
// 3. Поиск по артикулу
// 4. Поиск по наименованию
Если в настройках обмена (в конфигурации Конвертация данных) для справочника Номенклатура указано, что поиск ведется, например, только по Артикулу, то при совпадении артикулов в двух разных магазинах 1С автоматически свяжет их, даже если это абсолютно разные товары.
Чтобы избежать подобных коллизий, мы рекомендуем следующие действия:
СоответствиеОбъектовИнформационныхБаз, удаление этой записи позволит 1С при следующем обмене попытаться найти объект заново или создать новый, если соответствие действительно отсутствует.ВидНоменклатуры или Родитель, чтобы сделать идентификацию уникальной.Бухгалтерию.Таким образом, мы видим, что «странное» поведение системы при обмене — это не магия, а результат работы жестких алгоритмов поиска. Анализируя регистры СоответствиеОбъектовИнформационныхБаз и ПубличныеИдентификаторыСинхронизируемыхОбъектов, вы всегда сможете найти причину возникновения нежелательных связей между объектами номенклатуры.