Почему при обмене в 1С возникает ошибка по справочнику «НоменклатураГруппа» и где его найти?

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

При настройке или анализе результатов синхронизации данных между современными конфигурациями 1С (такими как «Управление торговлей», «Комплексная автоматизация», «Розница» или «Бухгалтерия предприятия») разработчики часто сталкиваются с загадочным объектом под названием Справочник.НоменклатураГруппа. При этом попытка найти данный справочник в дереве метаданных любой из этих конфигураций стандартными средствами конфигуратора заканчивается неудачей. Физически такого объекта в базах данных просто не существует.

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

Выясним причину этой архитектурной особенности платформы 1С и разберем по шагам логику работы механизмов интеграции.

---

Что такое «Справочник.НоменклатураГруппа» на самом деле?

Для начала снимем главный вопрос: справочника с именем «НоменклатураГруппа» нет ни в одной типовой конфигурации 1С. Не стоит искать его в CRM-системах, ERP или старых отраслевых решениях. Путаница часто возникает из-за созвучия со справочником НоменклатурныеГруппы (который действительно существует во многих учетных решениях и отвечает за разрезы калькуляции себестоимости и выручки), однако это абсолютно разные сущности.

Секрет кроется в особенностях работы механизма интеграции EnterpriseData (универсального формата обмена данными, основанного на XML/XDTO-пакетах) и технологии «Конвертация данных 3.0» (КД 3).

В базах данных 1С справочник Номенклатура спроектирован как иерархический. Это значит, что в одной таблице СУБД хранятся как конечные элементы (товары, услуги, работы), так и группы (папки), служащие для визуального структурирования каталога. Однако при обмене данными через жестко типизированный формат EnterpriseData такой подход неудобен по следующим причинам:

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

Именно поэтому проектировщики формата EnterpriseData разделили одну сущность базы данных на два независимых объекта формата:

---

Анализируем код обмена: как это реализовано в БСП

Рассмотрим подробнее, как именно данная концепция отражена в программном коде конфигураций 1С. В любой современной конфигурации, поддерживающей универсальный формат обмена, присутствует общий модуль МенеджерОбменаЧерезУниверсальныйФормат (или аналогичный специализированный модуль версии обмена).

Проанализируем фрагмент кода, инициализирующий правила обработки данных (ПОД) для выгрузки групп номенклатуры:


#Область НоменклатураГруппа

Процедура ДобавитьПОД_НоменклатураГруппа(ПравилаОбработкиДанных)
    
    ПравилоОбработки = ПравилаОбработкиДанных.Добавить;
    ПравилоОбработки.Имя = "НоменклатураГруппа";
    ПравилоОбработки.ОбъектВыборкиФормат = "Справочник.НоменклатураГруппа";
    ПравилоОбработки.ИспользуемыеПКО.Добавить("Справочник_НоменклатураГруппа");
    
КонецПроцедуры

#КонецОбласти

Обратите внимание на строку ПравилоОбработки.ОбъектВыборкиФормат = "Справочник.НоменклатураГруппа";. Здесь разработчики БСП напрямую указывают системе, что при обработке данного правила выборка данных будет приводиться к XDTO-типу формата Справочник.НоменклатураГруппа. При этом физическим источником данных в базе 1С остается все тот же стандартный справочник Номенклатура, но с наложенным фильтром ЭтоГруппа = Истина.

---

Почему механизмы обмена выдают ошибки и как их исправить?

Теперь, когда мы поняли архитектурную подоплеку разделения объектов, разберем типичные ситуации, когда при обмене между конфигурациями (например, УТ 11 и Бухгалтерия предприятия 3.0) система начинает выдавать ошибки о невозможности найти объект Справочник.НоменклатураГруппа.

Как правило, такие сбои происходят по трем основным причинам. Рассмотрим каждую из них и определим пути решения.

Ситуация 1. Несовместимость версий формата EnterpriseData

Каждая конфигурация поддерживает определенный набор версий универсального формата (например, ED 1.3, 1.4, 1.15 и т.д.). Если база-источник (допустим, обновленная УТ 11.5) отправляет пакет данных в формате версии 1.15, где структура Справочник.НоменклатураГруппа претерпела изменения или была переименована, а база-приемник (старая версия БП 3.0) еще «не знает» этих изменений, возникнет ошибка десериализации XML.

Решение:

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

Ситуация 2. Ошибки регистрации данных и «битые» ссылки

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

Решение:

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

Ситуация 3. Некорректно доработанные правила в «Конвертации данных 3.0»

Если вы самостоятельно дорабатывали правила обмена через конфигурацию «Конвертация данных 3.0» и вносили изменения в логику отправки справочника Номенклатура, высока вероятность нарушить цепочку связей ПКО (Правил конвертации объектов).

Пример некорректной настройки: в свойстве «Родитель» правила конвертации Справочник_Номенклатура_Отправка в качестве ПКО получателя ошибочно указано исходное правило номенклатуры вместо специализированного Справочник_НоменклатураГруппа_Отправка.

Решение:

  1. Откройте ваши правила в конфигурации «Конвертация данных 3.0».
  2. Перейдите в настройки правил конвертации свойств (РКС) для справочника Номенклатура.
  3. Найдите строку свойства Родитель и убедитесь, что для него в качестве правила конвертации объекта (ПКО) выбрано именно Справочник_НоменклатураГруппа.
  4. Выгрузите обновленный модуль менеджера обмена и загрузите его в свои рабочие конфигурации.

---

Резюме

Объект Справочник.НоменклатураГруппа — это классический пример «транспортного» или виртуального объекта, необходимого для обеспечения чистоты архитектуры интеграционных процессов 1С. Понимание его природы избавляет разработчика от бессмысленных поисков несуществующего справочника в метаданных и позволяет быстро локализовать проблемы синхронизации, связанные со структурой справочника номенклатуры.

← На главную