Файл не обнаружен model xdto

Обновлено: 06.07.2024

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

Общая причина ошибки

На самом деле ошибка преобразования XDTO является не какой-то определенной ошибкой, а является большим семейством ошибок возникающих при работе одного из базовых механизмов платформы 1С. Этот механизм обеспечивает передачу данных между различными подсистемами платформы, при этом данные из внутреннего представления одной подсистемы преобразуются в текстовый формат XML, передаются в другую подсистему, и там проходят обратное преобразование во внутреннее представление. Ошибка преобразования XDTO говорит, что прямом или обратном преобразовании обнаружено какое-то несоответствие, из-за которого оно не может быть выполнено.

Частные причины ошибки

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

Прежде чем приступить к диагностике причины ошибки XDTO, следует выполнить стандартные профилактические операции над ИБ: очистить кэш, проверить состояния файла, выполнить тестирование ИБ.

Взаимодействие Клиента и Сервера

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

Сырые и Неоригинальные решения

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

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

Ошибка преобразования XDTO при загрузке данных из файлов

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

Анна Викулина

Гарантируем стабильный обмен без ошибок между программами 1С. Гарантии фиксируем в договоре.

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

Преимущества механизма XDTO

Этот функционал создавался как удобный инструмент обмена данными между конфигурациями и другими приложениями. Также этот механизм используют для работы с web-сервисами и для обработки произвольных данных. Большое преимущество XDTO перед другими способами – в нем есть возможность обращаться к файлу XML, как к объекту 1С. То есть все реквизиты можно будет получить, описывая структуру через точку, не задумываясь о скобках, тегах и атрибутах.

Взаимодействие с файлами XML происходит по заранее установленным правилам, описанным в объекте структуры конфигурации – XDTO – пакеты в 1С 8.3. Суть этих элементов структуры в том, что они представляют собой схемы, по которым будут распознаваться данные из XML-файлов. В типовых конфигурациях уже присутствуют подобные объекты, но при работе с конкретными файлами понадобятся другие схемы.

Существует два способа добавить XDTO-пакет в конфигурацию:

    Собственноручно создать. Этот вариант подойдет при самостоятельной работе с XML определенного формата. Зная, какие данные будут подаваться на вход для импорта с использованием XDTO, можно заранее создать в конфигурации нужный объект. Этот вариант хорош, если обмен данными налажен и никаких изменений не планируется;

Чтобы загрузить данные из присланной нам схемы, необходимо в режиме конфигуратор открыть раздел «Общие» и «XDTO-пакеты». Через контекстное меню выбрать пункт «Импорт XML-схемы…», выбрать файл и подтвердить пространство имен, взятое из файла. После этого необходимо обновить конфигурацию, и предварительные настройки сделаны.

Но на самом деле в последнем случае нам необязательно создавать XDTO-пакеты в конфигурации 1С 8.3. Существует возможность только использовать XSD-схему, присланную нам из отдельного файла, не внося изменения в структуру базы 1С. Для этого нужно воспользоваться кодом, объясняющим платформе 1С, какой тип объекта с какими параметрами будет загружаться.

Это происходит следующими командами:

Экспорт и импорт файла

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

  1. Заполняем URI-пространство имен в свойствах XDTO пакета. Среди разработчиков 1С принято заполнять этот реквизит адресом страницы, заполненной описанием тех данных, с которыми происходит работа. Это помогает в работе, но не всегда возможно. В иных случаях заполняют произвольным текстом;
  2. Задаем тип объекта и его свойства, используя контекстное меню. Задаем имя этих параметров и для свойств определяем тип, выбирая его из предложенных платформой.

Следующим этапом будет написание процедуры для создания файла XML по описанной выше схеме. Код достаточно прост, поскольку создан XDTO-пакет, а у элемента всего 2 свойства – «Наименование» и «Артикул». Обращаться к конкретной схеме позволяет объект платформы «ФабрикаXDTO». Сама процедура состоит из:

  1. Определение схемы будущей XML;
  2. Заполнение свойств номенклатуры;
  3. Создание нового XML файла.

Чтение XML-файлов с помощью конкретной фабрики XDTO по уже созданному в конфигурации пакету ничуть не сложнее. Алгоритм похож по структуре и отличается только операциями взаимодействия с XML-файлами. В данном случае нам нужно воспользоваться объектом платформы «ЧтениеXML» и прочитать содержимое в переменную. На выходе у нее будет тип «ОбъектXDTO», и вы сможете обращаться ко всем ее свойствам через точку.

Теперь попробуем прочитать файл, схемы которого нет в нашей конфигурации. Для этого экспортируем XDTO-пакет в файл формата xsd и удалим схему из конфигурации. После этого нам придется объяснить платформе, откуда ей брать схему читаемой XML-кодом, продемонстрированным ранее. Однако в простейших случаях 1С самостоятельно может распознать все свойства.

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

Исправление ошибок

Одной из достаточно распространенных ошибок, связанных с работой с XDTO-пакетами, является «Ошибка преобразования данных XDTO». Ее суть заключается в том, что платформа не может разобрать данный ей XML-файл по заданной схеме. При получении подобной ошибки при импорте данных, необходимо проверить формат файлов – возможно, присутствуют незакрытые теги.

Зачастую проблема с ошибками преобразования данных возникает и по другим причинам:

  • Ошибки в обновлении платформы или конфигурации;
  • Обмен между базами разных версий;
  • Недочеты в алгоритме приема данных;
  • Проблемы с временной памятью конкретного компьютера.

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

На первый взгляд работа с XDTO достаточно сложна, поэтому на первое время рекомендуется добавлять XDTO-пакеты в 1С для большего порядка и учета. Конечно, все нюансы изучить сразу невозможно, но в процессе работы вы будете продолжать учиться. Но с уверенной теоретической базой намного удобнее начинать разбираться в этом вопросе.


Процедура Создание_фабрики_XDTO () Экспорт

// Процедура создает фабрику XDTO (из файла XML) на основе схемы XML

// Создание объект чтения XML (по умолчанию)
XML = Новый ЧтениеXML ;
// Запуск файла XML
XML . ОткрытьФайл ( "D:\Example_XDTO\SсhemaXML.xsd" );

// Создание построителя документа DOM (по умолчанию)
Построитель_DOM = Новый ПостроительDOM ;
// Чтение файла XML (в документ DOM)
Док_DOM = Построитель_DOM . Прочитать ( XML );
// Создание построитель схемы XML (по умолчанию)
ПостроительСхемыXML = Новый ПостроительСхемXML ;
// Получение схемы XML (из документа DOM)
Схема_XML = ПостроительСхемыXML . СоздатьСхемуXML ( Док_DOM );

// Создание набора схем XML (по умолчанию)
Набор_Схем_XML = Новый НаборСхемXML ;
// Добавление схемы XML в набор схем
Набор_Схем_XML . Добавить ( Схема_XML );
// Создание фабрики XDTO на основе набора схем XML
ФабрикаXDTO = Новый ФабрикаXDTO ( Набор_Схем_XML );

Процедура Получение_фабрики_XDTO_из_нескольких_XSD () Экспорт

// Процедура получает фабрики XDTO из нескольких XSD

Схемы_XSD = Новый Массив ;
Схемы_XSD . Добавить ( "D:\Example_XDTO\SсhemaXML_1.xsd" );
Схемы_XSD . Добавить ( "D:\Example_XDTO\SсhemaXML_2.xsd" );
Схемы_XSD . Добавить ( "D:\Example_XDTO\SсhemaXML_3.xsd" );

Пакеты_XSD = Новый Массив ;
Пакеты_XSD . Добавить ( ФабрикаXDTO . Пакеты . Получить ( "URI пакета 1" )); //может быть произвольной
Пакеты_XSD . Добавить ( ФабрикаXDTO . Пакеты . Получить ( "URI пакета 2" )); //может быть произвольной
Пакеты_XSD . Добавить ( ФабрикаXDTO . Пакеты . Получить ( "URI пакета 3" )); //может быть произвольной

Фабрика_XSD = СоздатьФабрикуXDTO ( Схемы_XSD , Пакеты_XSD );

Процедура Создание_значения_XDTO () Экспорт

// Процедура создает новое значение XDTO (немутабельное) с помощью метода Создать()

// Создание значения XDTO из лексического представления
ТипЗначения_XDTO = ГлобФабрикаXDTO . Тип ( "http://www.w3.org/2001/XMLSchema" , "dateTime" );
Значение_XDTO = ГлобФабрикаXDTO . Создать ( ТипЗначения_XDTO , "2021-05-17T11:51:34" );

Процедура Создание_значения_XDTO_файл_XML () Экспорт

// Процедура создает новое значение XDTO (немутабельное) путем чтения файла XML

// Чтение данных значения XDTO (из файла XML)
XML = Новый ЧтениеXML ;
XML . ОткрытьФайл ( "D:/Example_XDTO/Test.xml" ); // обратный слэш!
Значение_XDTO = ГлобФабрикаXDTO . ПрочитатьXML ( XML );

XML = Новый ЗаписьXML ;
XML . ОткрытьФайл ( "D:/Example_XDTO/Test.xml" ); // обратный слэш!

// Запись данных XDTO в файл XML
ГлобФабрикаXDTO = ФабрикаXDTO ;
ГлобФабрикаXDTO . ЗаписатьXML ( XML , Значение_XDTO );

Процедура Создание_объекта_XDTO ( СправочникСсылка ) Экспорт

// Процедура создает новый объект XDTO (мутабельное) с помощью метода Создать()

// Создание пустого объекта XDTO
ТипОбъекта_XDTO = ГлобФабрикаXDTO . Тип ( "http://www.1cnik.by/demo-material" , "Материалы" );
Объект_ХDTO = ГлобФабрикаXDTO . Создать ( ТипОбъекта_XDTO );

// Заполнение его свойств
ОбъектСправочника = СправочникСсылка . ПолучитьОбъект ();
Объект_ХDTO . Наименование = ОбъектСправочника . Наименование ;
Объект_ХDTO . ПолноеНаименование = ОбъектСправочника . ПолноеНаименование ;
Объект_ХDTO . ЕдиницаИзмерения = ОбъектСправочника . ЕдиницаИзмерения ;
Объект_ХDTO . СтранаПроисхождения = ОбъектСправочника . СтранаПроисхождения ;
Объект_ХDTO . КодТНВЭД = ОбъектСправочника . КодТНВЭД ;

Механизм XDTO является универсальным способом представления данных для взаимодействия с различными внешними источниками данных и программными системами.

Импорт схемы XML в глобальную фабрику XDTO

Для того чтобы импортировать схему XML из файла .xsd в глобальную фабрику XDTO, следует выделить в дереве конфигурации ветку XDTO и выполнить команду контекстного меню Импорт XML-схемы…


Импорт XML-схемы

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


Выбор пространств имен

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

Экспорт схемы XML-данных конфигурации

Для того чтобы экспортировать схему XML, соответствующую типам данных конфигурации (без учета пакетов XDTO, созданных в дереве конфигурации), в файл .xsd, следует выделить в дереве конфигурации ветку XDTO и выполнить команду контекстного меню Экспорт XML-схемы данных конфигурации…

После выбора каталога и указания имени файла будет выполнен экспорт схемы XML в указанный файл.

Экспорт схемы XML-пакета XDTO



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

Проверка пакета XDTO

Окно редактирования пакета XDTO

Редактирование пакета XDTO выполняется в окне редактирования пакета XDTO.


Окно редактирования пакета XDTO

При добавлении нового пакета XDTO в дерево конфигурации окно редактирования пакета XDTO открывается автоматически.
Для того чтобы открыть окно редактирования для существующего пакета XDTO, следует выделить в дереве конфигурации требуемый пакет XDTO и выполнить команду контекстного меню Открыть пакет .

Иерархическая структура пакета XDTO

Окно редактирования пакета XDTO содержит иерархическую структуру пакета XDTO, отображенную в виде дерева. В корне дерева расположен идентификатор пакета XDTO, содержащий URI пространства имен данного пакета.



На первом уровне иерархии могут располагаться следующие элементы пакета:
● Директивы импорта – перечень директив импорта. Каждая директива импорта представляет собой ссылку на другой пакет, содержащий типы, на которые так или иначе ссылается данный пакет. При работе с данным пакетом XDTO средствами встроенного языка данный перечень директив импорта будет доступен в виде объекта КоллекцияПакетовXDTO , содержащегося в свойстве Зависимости пакета XDTO.
● Типы значений – перечень типов значений XDTO, которые содержит пакет XDTO.
● Типы объектов – перечень типов объектов XDTO, которые содержит пакет XDTO.
● Свойства – перечень свойств пакета XDTO. Представляет собой объявления объектов/значений, которые могут являться корневыми элементами документов XML, принадлежащих URI пространству имен данного пакета XDTO.
● Каждый тип значения XDTO описывается иерархической структурой и может содержать в своем составе следующие элементы:
● Образец – описывает один фасет XDTO типа Образец.
● Перечисление – описывает один фасет XDTO типа Перечисление.

Каждый тип объекта XDTO описывается иерархической структурой, которая может содержать в своем составе набор свойств объекта.

Свойства пакета XDTO

Редактирование свойств пакета XDTO выполняется в палитре свойств.
Если палитра свойств открыта для пакета XDTO, выделенного в дереве конфигурации, то в ней будут содержаться следующие свойства: Имя, Синоним, Комментарий и URI пространства имен . Кроме этого, палитра свойств будет содержать ссылку Пакет, по которой можно перейти в окно редактирования пакета XDTO.


Свойства пакета XDTO

Если палитра свойств открыта для пакета XDTO, выделенного в окне редактирования пакета XDTO (корневой элемент), то она содержит единственное свойство – URI пространства имен . Это свойство задает URI пространства имен пакета XDTO, к которому принадлежат все определенные в этом пакете типы.
Свойства директивы импорта
Редактирование свойств директивы импорта выполняется в палитре свойств. Для директивы импорта палитра свойств содержит единственное свойство – Пространство имен. Это свойство задает URI пространства имен импортируемого пакета.


Свойства директивы импорта

Свойства типа значения XDTO
Редактирование свойств типа значения XDTO выполняется в палитре свойств.


Свойства значения XDTOДля типа значения XDTO палитра свойств содержит следующие свойства:
● Имя – имя типа значения XDTO.
● Базовый тип – базовый тип для данного типа значения XDTO.
● Вариант – вариант простого типа (атомарный тип, список, объединение). Если значение установлено, то должно не противоречить значениям Тип элемента и Типы объединения.
● Тип элемента – тип элемента списка в случае, когда тип значения XDTO определяется списком. При этом все фасеты и свойство Типы подчиненных
должны быть пустыми.
● Типы объединения – список типов, образующих объединение в случае, когда тип значения XDTO определяется объединением. Объединяться могут
только типы значений XDTO. При этом все фасеты и свойство Тип элемента должны быть пустыми.
● Длина – фасет длины.
● Минимальная длина – фасет минимальной длины.
● Максимальная длина – фасет максимальной длины.
● Пробельные символы – фасет пробельного символа.
● Минимум, включающий границу – фасет минимума, включающего границу.
● Минимум, не включающий границу – фасет минимума, не включающего границу.
● Максимум, включающий границу – фасет максимума, включающего границу.
● Максимум, не включающий границу – фасет максимума, не включающего границу.
● Общее количество цифр – фасет общего количества цифр.
● Количество цифр дробной части – фасет количества цифр дробной части.

Свойства типа объекта XDTO
Редактирование свойств типа объекта XDTO выполняется в палитре свойств.


Для типа объекта XDTO палитра свойств содержит следующие свойства:
● Имя – имя типа объекта XDTO.
● Базовый тип – базовый тип для данного типа объекта XDTO. Это может быть только тип объекта XDTO.
● Открытый – признак, является ли тип объекта XDTO открытым. Данное свойство показывает, может ли экземпляр объекта XDTO содержать дополнительные свойства, не определенные в его типе.
● Абстрактный – признак, является ли тип объекта XDTO абстрактным.
● Смешанный – свойство показывает, имеет ли соответствующий объект XDTO смешанное содержание. Если значение свойства Смешанный равно Истина , то значение Последовательный обязательно равно Истина , так как смешанное содержание невозможно смоделировать без применения последовательности XDTO.
● Упорядоченный – признак, является ли порядок следования элементов, представляющих значения свойств, строго соответствующим порядку следования свойств в типе объекта XDTO. Если свойство Упорядоченный имеет значение Ложь, то на входе порядок следования элементов XML не контролируется, а на выходе определяется порядком следования свойств, если только свойство Последовательный не имеет значение Истина .
● Последовательный – это свойство показывает, содержит ли экземпляр соответствующего объекта XDTO последовательность XDTO. Данный признак
равен значению Истина в тех случаях, когда порядок следования вложенных элементов XML не может однозначно определяться порядком следования свойств в типе или соответствующий объект XDTO имеет смешанное содержание. Последовательность XDTO позволяет задать в явном виде порядок следования элементов, как они будут представлены в документе XML. Для объектов типов, у которых свойство Последовательный установлено в значение Ложь , порядок следования вложенных элементов соответствует порядку следования свойств.
Свойства свойств типа объекта XDTO
Редактирование свойства свойств типа объекта XDTO выполняется в палитре свойств.


Палитра свойств типа XDTO

Для типа объекта XDTO палитра свойств содержит следующие свойства:
● Имя – имя свойства. В пределах одного типа объекта XDTO имена свойств должны быть уникальными.
● Тип – тип свойства. Может быть как типом значения XDTO, так и типом объекта XDTO.
● Минимальное количество – минимальное количество значений свойства. Минимальное количество значений свойства может принимать значения >= 0. Естественно, значение Минимальное количество должно быть меньше или равно значению Максимальное количество (если, конечно, Максимальное количество не равно -1);
● Максимальное количество – свойство типа объекта XDTO может быть определено как содержащее одно или множество значений. Свойство считается содержащим одно значение, если свойство Максимальное количество равно 1. Если же свойство Максимальное количество больше 1, то считается, что свойство может содержать множество значений. Такое свойство в структуре объекта моделируется как список. Свойство Максимальное количество показывает максимальное количество значений свойства. Максимальное количество > 1 может быть задано только для свойств,
представляемых в виде элемента XML.
● Возможно пустое – показывает, может ли свойство принимать неопределенное значение. Свойство Возможно пустое, равное Истина, может быть определено только для свойств с формой представления Элемент. Если Максимальное количество > 1, неопределенное значение является допустимым для элемента списка значений свойства.
● Фиксированное – указывает, является ли значение свойства фиксированным. Если установлено в значение Истина, то само фиксированное значение можно получить через свойство По умолчанию.
● По умолчанию – значение свойства по умолчанию. Тип значения по умолчанию может быть только типом значения XDTO. При этом данное значение должно быть совместимо с типом свойства (быть того же типа, что и тип свойства или же унаследованного типа). При создании объекта XDTO свойство, если оно допускает единственное значение, принимает значение по умолчанию. Для свойств с множеством значений список значений
изначально пуст, независимо от того, определено или нет значение по умолчанию.
● Форма – форма представления свойства в XML. Это может быть Текст, Элемент или Атрибут. Если формой представления является Атрибут или
Текст, то значение свойства Максимальное количество не может быть больше 1. Если свойство принимает значение Текст, то значение свойства
Минимальное количество также должно быть равным 1. У одного типа только одно свойство может иметь форму представления Текст, при этом
остальные свойства должны иметь форму представления Атрибут.
● Локальное имя – локальное имя, используемое для представления свойства. Для свойств с формой представления Текст – пустая строка.

Глобальное свойство

Редактирование свойств глобального свойства выполняется в палитре свойств.


Палитра свойств глобального свойства

Для глобального свойства палитра свойств содержит следующие свойства:
● Имя – имя глобального свойства. В пределах одного типа объекта XDTO имена глобальных свойств должны быть уникальными.
● Ссылка – ссылка на корневое определение свойства пакета.
● Тип – тип глобального свойства.
● Минимальное количество – минимальное количество значений свойства. Если Минимальное количество = 0, то значение свойства может быть не установлено.
● Максимальное количество – максимальное количество значений свойства. Если Максимальное количество равно -1, то количество значений свойства неограниченно.
● Возможно пустое – показывает, может ли свойство принимать неопределенное значение.
● Фиксированное – указывает, является ли значение свойства фиксированным.
● По умолчанию – значение свойства по умолчанию. Лексическое представление значения свойства должно соответствовать правилам проверки типа
данного свойства.
● Форма – форма представления свойства в XML. Это может быть Текст, Элемент или Атрибут.
● Локальное имя – локальное имя, используемое для представления свойства.

Читайте также: