Почему в 1С при обмене подставляется неправильная номенклатура и как это исправить

Программист 1С v8.3 (Управляемые формы) Управленческий учет IT и автоматизация бизнеса
← На главную

В процессе эксплуатации связок конфигураций, таких как 1С:Управление торговлей 11, 1С:Розница 2 и 1С:Бухгалтерия предприятия 3.0, специалисты часто сталкиваются с крайне неприятной ситуацией. После штатной синхронизации данных выясняется, что в документах (поступлениях, реализациях) названия товаров не соответствуют действительности. При этом суммы и количественные показатели верны, но вместо одного товара в базе-приемнике отображается совершенно другой.

Рассмотрим подробнее этот феномен. Ситуация осложняется тем, что проблема может возникнуть внезапно, например, после включения функциональной опции Дополнительные реквизиты и сведения или обновления конфигурации. Разберем по шагам, почему это происходит и как восстановить корректную работу обмена.

Выясняем причину: механизмы сопоставления EnterpriseData

Для начала проанализируем, как 1С понимает, что «Товар А» в УТ — это тот же самый «Товар А» в Бухгалтерии. В современном универсальном формате обмена EnterpriseData используется многоуровневая система идентификации объектов:

  1. Регистр сведений «Публичные идентификаторы синхронизируемых объектов». Это основной «мост». Система хранит в нем связь между внутренним уникальным идентификатором (GUID) объекта в текущей базе и идентификатором, под которым объект передается во внешнем файле обмена.
  2. Регистр сведений «Соответствия объектов информационных баз». Используется для хранения жестких связок между объектами разных баз. Если здесь записана неверная пара «ссылка — ссылка», то никакие изменения наименований не помогут.
  3. Поля поиска (алгоритмическое сопоставление). Если система не нашла связь в регистрах, она пытается сопоставить объекты по реквизитам: Код, Артикул, Наименование или ИНН/КПП (для контрагентов).

Проблема автора темы заключалась в том, что после изменения структуры номенклатуры (включения доп. реквизитов) в базе 1С:Бухгалтерия создались дубли. При обмене система начала путаться между «новыми» и «старыми» объектами. Из-за сбоя в регистре публичных идентификаторов один и тот же внешний код мог привязаться к разным внутренним ссылкам. В результате в документ подставляется первая попавшаяся номенклатура, подошедшая по формальным признакам (например, по коду), даже если это совершенно другой товар.

Шаг 1: Подготовительные работы и удаление дублей

Прежде чем приступать к манипуляциям с регистрами, нам необходимо привести справочник Номенклатура в порядок в обеих базах. Если в базе уже расплодились дубли с одинаковыми кодами, автоматика продолжит ошибаться.

Проанализируем ситуацию: в базе-приемнике (БП) есть две карточки товара с кодом «001» — одна «правильная» (с заполненными доп. реквизитами) и одна «старая» (пустая). Нам нужно объединить их. Воспользуемся стандартной обработкой «Поиск и удаление дублей».

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

Шаг 2: Работа с регистрами идентификаторов

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

Посмотрим на пример логики, которая поможет нам программно или через консоль запросов найти «битые» записи. Нам нужно отобрать записи, относящиеся к узлу обмена с проблемной базой. В интерфейсе это можно сделать через Функции для технического специалиста.

Алгоритм действий следующий:

  1. Заходим в Регистр сведений «Публичные идентификаторы синхронизируемых объектов».
  2. Устанавливаем фильтр по колонке Узел информационной базы.
  3. Удаляем все записи, связанные с номенклатурой. Это заставит систему при следующем обмене инициировать процедуру сопоставления «с чистого листа».

Аналогичную операцию стоит провести и для регистра Соответствия объектов информационных баз, если там остались записи по проблемному узлу.

Шаг 3: Повторная настройка и начальное сопоставление

После очистки регистров и удаления дублей нам нужно «подружить» базы заново. Просто запустить обмен недостаточно — нужно выполнить интерактивное сопоставление.

Выполним следующие действия:

  1. В базе (УТ или Розница) откройте Настройки синхронизации данных.
  2. Выберите нужный узел обмена и нажмите кнопку Синхронизировать.
  3. На этапе «Сопоставление данных» система покажет, что объекты не сопоставлены (так как мы удалили записи в регистрах).
  4. Нажмите «Установить сопоставление вручную» или используйте автоматическое сопоставление по Коду или Артикулу. Будьте предельно внимательны: именно здесь закладывается фундамент корректной работы обмена.

Как предотвратить проблему в будущем

Чтобы ситуация с «подменой» трусов на платья не повторилась, разберем несколько правил гигиены базы данных:

Во-первых, никогда не переименовывайте старую, неиспользуемую номенклатуру в новую. В 1С объект идентифицируется по GUID (внутреннему номеру). Если вы переименуете «Товар 1» в «Товар 2», для системы обмена это останется тот же самый объект. В других базах он тоже переименуется, что приведет к искажению исторической отчетности.

Во-вторых, следите за уникальностью кодов и артикулов. Если в EnterpriseData настроено сопоставление по полям поиска, наличие двух товаров с кодом «123» гарантированно приведет к ошибке Неоднозначность поиска, и программа выберет первый попавшийся объект.

В-третьих, используйте регистрацию изменений. Если вы массово исправили номенклатуру, рекомендуется принудительно зарегистрировать ее к обмену. Это можно сделать через обработку Регистрация изменений для обмена:


ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Метаданные.Справочники.Номенклатура);

Проанализируем ситуацию с технической точки зрения: при выполнении этой команды все объекты справочника попадут в таблицу изменений. При следующей синхронизации система выгрузит их актуальные данные, включая уникальные идентификаторы, и обновит записи в регистре Публичные идентификаторы синхронизируемых объектов на стороне приемника.

Резюме решения

Если в ваших документах 1С начала «плыть» номенклатура, не паникуйте. Проблема чаще всего кроется в «замусоривании» служебных таблиц синхронизации. Последовательное выполнение очистки дублей, удаления записей из регистра публичных идентификаторов и повторного сопоставления объектов через мастер синхронизации позволяет полностью восстановить корректный учет без потери данных в документах.

Помните, что EnterpriseData — это мощный, но чувствительный к чистоте данных инструмент. Регулярный аудит справочников и контроль уникальности ключевых реквизитов (код, артикул) избавят вас от подобных сюрпризов в будущем.

← На главную