Почему при обмене УТ 11 и БП 2.0 появляются пустые ссылки на номенклатуру и как это исправить?

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

При настройке или регулярном выполнении обмена данными между конфигурациями 1С:Управление торговлей (редакция 11) и 1С:Бухгалтерия предприятия (редакция 2.0) специалисты и пользователи часто сталкиваются с неприятной ситуацией: документы (например, реализации, поступления, отчеты о розничных продажах) загружаются в приемник, но в табличных частях вместо наименований товаров отображаются пустые ссылки или надписи вида <Объект не найден...>.

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

Выясним причину: почему возникают пустые ссылки?

Рассмотрим архитектурные особенности современных типовых обменов 1С. В прежних правилах обмена (на базе 1С:Конвертация данных 2.0) при выгрузке документа система по умолчанию выгружала все связанные объекты по ссылкам. Вместе с накладной в пакет выгрузки автоматически попадали полные реквизиты всех позиций номенклатуры, контрагентов, договоров и складов.

Однако в подсистемах обмена на базе БСП и Универсального формата (EnterpriseData / МенеджерОбменаЧерезУниверсальныйФормат) разработчики 1С изменили этот подход в целях оптимизации производительности и размера передаваемых пакетов:

  1. Передача по уникальному идентификатору (GUID): При выгрузке документа выгружаются не полные данные элементов справочника, а лишь их Уникальные Идентификаторы (УИД / GUID).
  2. Разделение очереди выгрузки: Элементы справочника Номенклатура регистрируются к выгрузке только в момент их первичного создания или явного редактирования в базе-источнике (УТ 11).
  3. Отсутствие данных в приемнике: Если карточка номенклатуры была создана в УТ 11, но не попала в очередь изменений обмена (или правила отправки НСИ отключены), в базу БП 2.0 прилетает только ссылка (GUID). Попытка ссылки сослаться на несуществующую запись в БП 2.0 приводит к созданию пустой ссылки или «битого» объекта.

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

Способ 1. Настройка правил отправки НСИ в УТ 11

Первое, что необходимо проверить — это параметры выгрузки справочников в настройках самого синхронизатора данных базы УТ 11. Разберем по шагам, как активировать выгрузку справочников:

  1. Перейдем в раздел НСИ и администрирование > Синхронизация данных.
  2. Откроем ссылку Настройки синхронизации данных.
  3. Выберем действующую настройку обмена с 1С:Бухгалтерией предприятия 2.0 и нажмем кнопку Изменить правила отправки данных.
  4. Найдем блок настройки нормативно-справочной информации (НСИ).
  5. Если выбран вариант Не выгружать или Выгружать по фильтру, изменим значение на Выгружать всю номенклатуру (либо настроим точный фильтр по нужным группам и видам номенклатуры).
  6. Сохраним настройки и выполним повторный обмен данными.

Способ 2. Принудительная регистрация справочника «Номенклатура» к выгрузке

Если в параметрах обмена включена точечная выгрузка НСИ, но новые элементы по какой-то причине не попали в очередь изменений (например, были загружены сторонней обработкой без вызова событий записи), поможет ручная регистрация объектов.

Рассмотрим, как зарегистрировать справочник к выгрузке с помощью обработки регистрации изменений:

  1. В окне синхронизации данных выберем нужный обмен и перейдем по кнопке Состав отправляемых данных (или откроем обработку Регистрация изменений для обмена данными).
  2. В дереве объектов найдем справочник Номенклатура.
  3. Кликнем правой кнопкой мыши и выберем пункт Зарегистрировать все элементы справочника (или выберем конкретную папку / список новых элементов).
  4. Запустим процесс выгрузки из УТ 11 и последующей загрузки в БП 2.0.

После выполнения загрузки в базе-приемнике система заполнит данные по имеющимся GUID, и пустые ссылки в ранее загруженных документах автоматически заменятся на полноценные карточки номенклатуры.

Способ 3. Перезапись элементов номенклатуры в базе-источнике

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

  1. В конфигурации УТ 11 откроем справочник Номенклатура.
  2. Отберем элементы, которые отображаются в БП 2.0 как пустые ссылки.
  3. Зайдем в карточку номенклатуры, внесем минимальное изменение (или просто нажмем кнопку Записать и закрыть). Также можно использовать обработку Групповое изменение реквизитов для массовой перезаписи элементов без изменения их полей.
  4. При записи объекта сработает подписка на событие БСП ПриЗаписи, и ссылка на элемент попадет в узлы плана обмена.
  5. Выполним сеанс синхронизации.

Способ 4. Сопоставление данных при интерактивном обмене

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

  1. Запустим мастер синхронизации данных в интерактивном режиме.
  2. На этапе анализа данных перейдем к окну Сопоставление данных для справочника Номенклатура.
  3. Настроим правила сопоставления по ключевым полям: Артикул, Наименование или Код.
  4. Выполним автоматическое или ручное связывание элементов, после чего завершим загрузку данных.

Программный анализ регистрации объектов обмена

Для программистов и системных администраторов полезно знать, как проверить наличие объектов в очереди выгрузки план обмена программно. Разберем пример кода на языке 1С, который позволяет проверить, зарегистрирован ли конкретный элемент номенклатуры для выгрузки в узел обмена:


// Выбираем узел плана обмена с Бухгалтерией предприятия
УзелОбмена = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерияПредприятия30.НайтиПоКоду("БП");

Если ЗначениеЗаполнено(УзелОбмена) Тогда
    // Проверяем наличие регистрации для конкретной ссылки номенклатуры
    НоменклатураСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", "ART-10045");
    
    Если ЗначениеЗаполнено(НоменклатураСсылка) Тогда
        ЕстьРегистрация = ПланыОбмена.ИзмененияЗарегистрированы(УзелОбмена, НоменклатураСсылка);
        
        Если Не ЕстьРегистрация Тогда
            // Принудительно регистрируем объект на узле обмена
            ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, НоменклатураСсылка);
            Сообщить("Элемент номенклатуры успешно зарегистрирован к выгрузке!");
        Иначе
            Сообщить("Элемент уже находится в очереди выгрузки.");
        КонецЕсли;
    КонецЕсли;
КонецЕсли;

С помощью вызова метода ПланыОбмена.ЗарегистрироватьИзменения() можно создавать собственные обработки регламентной регистрации НСИ перед выгрузкой документов, если типовой механизм обмена по каким-то причинам пропускает отдельные справочники.

Резюме и практические рекомендации

Подводя итог, выделим главный алгоритм действий при обнаружении пустых ссылок на номенклатуру:

  1. Проверить настройки НСИ в правилах отправки данных обмена УТ 11.
  2. Выполнить полную или точечную регистрацию справочника Номенклатура в окне состава отправляемых данных.
  3. Провести сеанс выгрузки из УТ 11 и загрузки в БП 2.0.
  4. Убедиться, что пустые ссылки в документах БП 2.0 заполнились корректными наименованиями.
← На главную