Как решить проблему с загрузкой структуры формата в «1С:Конвертация данных 3.1»?

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

При работе с инструментом «1С:Конвертация данных 3.1» (КД 3) разработчики часто сталкиваются с неприятной ситуацией на этапе начала настройки обмена — при попытке загрузить структуру формата. Типичная ошибка выглядит как сообщение: «Неверно указано имя основного пакета XDTO» или «Ошибка проверки модели XDTO: пакет не определен». Это останавливает процесс создания правил конвертации, так как без описания структуры формата (EnterpriseData) невозможно сопоставить объекты конфигурации с объектами обмена.

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

Разберем причину возникновения проблемы

Давайте проанализируем ситуацию. Основная причина ошибок кроется в сложной структуре зависимостей XDTO-пакетов. Формат EnterpriseData (ED) не является изолированным файлом. Он активно использует типы данных, описанные в другом пакете — ExchangeMessage. Когда мы пытаемся загрузить только один XSD-файл формата в КД 3, система пытается разрешить ссылки на импортируемые типы. Не находя описания пакета ExchangeMessage, платформа выдает ошибку фабрики XDTO.

Кроме того, часто возникает путаница с тем, что именно вводить в поле «Имя основного пакета XDTO». Многие пользователи ошибочно вводят туда имя файла или произвольное название, в то время как система ожидает уникальный идентификатор пространства имен.

Способ 1: Множественная загрузка файлов (самый эффективный)

Рассмотрим наиболее простой и современный метод, который помогает в 90% случаев. Вместо того чтобы пытаться загружать файлы по одному, мы воспользуемся возможностью множественного выбора файлов в диалоговом окне загрузки.

Выполним следующие шаги:

  1. Запустим Конфигуратор той информационной базы, структуру которой мы хотим выгрузить.
  2. Перейдем в ветку Общие -> XDTO-пакеты.
  3. Найдем пакет сообщения обмена (обычно он называется ExchangeMessage) и нажмем на нем правой кнопкой мыши — «Экспортировать в XML-схему». Сохраним его под именем Message.xsd.
  4. Найдем пакет нужной версии формата (например, EnterpriseData_1_8_6) и аналогично экспортируем его в файл, например ED.xsd.
  5. Теперь откроем базу «Конвертация данных 3» и перейдем к обработке «Загрузка структуры формата».
  6. В поле выбора файла нажмем кнопку выбора. В открывшемся окне проводника, удерживая клавишу Ctrl на клавиатуре, выделим сразу оба файла: Message.xsd и ED.xsd.
  7. Нажмем «Открыть» и запустим выполнение загрузки.

При таком подходе КД 3 одновременно получает все необходимые определения типов, и ошибка «пакет не определен» исчезает.

Способ 2: Использование URI пространства имен

Выясним причину ошибки «Неверно указано имя основного пакета XDTO». Рассмотрим подробнее, что должно быть указано в соответствующем поле обработки загрузки.

Для системы критически важно, чтобы Имя основного пакета совпадало с Namespace (пространством имен) самого XDTO-пакета в конфигурации. Чтобы получить его правильно, выполним следующие действия:

  1. В Конфигураторе откроем свойства нужного пакета EnterpriseData_X_X_X.
  2. Найдем свойство Пространство имен (URI). Оно выглядит примерно так: http://www.1c.ru/EnterpriseData/1.8.
  3. Скопируем эту строку целиком.
  4. Вставим скопированное значение в поле «Имя основного пакета XDTO» в обработке загрузки КД 3.

Важно: Не пытайтесь вписывать туда имя файла или просто текст «EnterpriseData». Только полный URI гарантирует успешную идентификацию пакета системой.

Способ 3: Ручная корректировка зависимостей в XSD

Проанализируем ситуацию, когда множественный выбор не помогает из-за специфических путей в заголовках схем. Рассмотрим пример ручной правки XSD-файла для того, чтобы «подсказать» платформе, где искать импортируемые пакеты.

  1. Откроем выгруженный файл формата (например, EnterpriseData_1_0_beta.xsd) в текстовом редакторе (рекомендуется Notepad++).
  2. Найдем в начале файла строку с директивой xs:import. Обычно она выглядит так:
  3. Нам нужно явно указать путь к файлу сообщения обмена. Изменим строку, добавив атрибут schemaLocation:
  4. Убедимся, что файл Message.xsd лежит в той же папке, что и основной файл формата.

После такой правки загрузка даже одного основного файла может пройти успешно, так как он сам «знает», откуда подтянуть недостающие типы.

Способ 4: Борьба с техническими ошибками (BOM и кодировка)

Иногда при загрузке возникает фатальная ошибка: «Extra content at the end of the document» или «Ошибка разбора XML». Разберем по шагам, как это исправить:

Эти ошибки часто связаны с невидимыми символами BOM (Byte Order Mark), которые добавляют некоторые текстовые редакторы. Чтобы избежать этого, при сохранении XSD-файлов убедитесь, что используется кодировка UTF-8 без BOM.

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

Работа с версиями формата

Посмотрим на ситуацию с обновлением форматов. В КД 3 важно понимать логику версионирования EnterpriseData:

Полезный совет по программному получению схем

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

Во многих типовых решениях (ERP, УТ 11, БП 3) в разделе администрирования или в планах обмена существует функционал выгрузки параметров подключения. При выгрузке этих параметров система часто генерирует архив, содержащий актуальные и уже согласованные между собой XSD-схемы (включая ExchangeMessage и EnterpriseData). Использование этих файлов минимизирует риск ошибок несовместимости версий.

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

← На главную