При обновлении нетиповых или доработанных конфигураций, работающих под управлением платформы 1С:Предприятие 8.2 (например, Управление производственным предприятием 1.3), разработчики нередко сталкиваются со сбоем на этапе сравнения и объединения. В процессе сопоставления объектов конфигуратор аварийно прерывает операцию с сообщением об ошибке десериализации XDTO, указывающим на цепочку свойств: template, tableCell, item, value и scale.
Проанализируем техническую причину этой проблемы, выясним, почему прямая загрузка файла конфигурации (cf) проходит успешно, а интерактивное сравнение завершается аварийно, и разберем по шагам проверенные способы обхода и устранения данной ошибки.
Типичный текст ошибки в окне сообщений выглядит следующим образом:
Ошибка загрузки документа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: template Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: tableCell Форма: Элемент Тип: {http://v8.1c.ru/8.1/data-composition-system/area-template}TableCell по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: item Форма: Элемент Тип: {http://v8.1c.ru/8.1/data-composition-system/core}ParameterValue по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: value Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: scale Форма: Атрибут Тип: {http://www.w3.org/2001/XMLSchema}anySimpleType
Выясним причину сбоя, рассмотрев структуру сериализации схемы компоновки данных (СКД). Пространство имен http://v8.1c.ru/8.1/data-composition-system/area-template относится к макетам оформления областей СКД, а именно к ячейкам таблиц макета (TableCell) и значениям их параметров (ParameterValue).
Начиная с версии платформы 8.3.9 (в частности, 8.3.9.2170 и новее), внутренний сериализатор XDTO платформы 1С при сохранении метаданных начал записывать дополнительный XML-атрибут scale для числовых значений оформления ячеек макета СКД. Этот атрибут задает масштаб или разрядность числа.
Когда выгруженный файл конфигурации (cf) или файл обновления (cfu), подготовленный или пересохраненный в среде платформы 8.3.9+, открывается в Конфигураторе линейки 8.2 (например, 8.2.19.90 или 8.2.19.130), внутренний парсер XDTO платформы 8.2 встречает незнакомый атрибут scale. Поскольку во встроенной схеме XDTO платформы 8.2 такой атрибут отсутствует, механизм валидации вызывает критическую ошибку десериализации.
Важно понимать разницу между операциями Конфигуратора:
Рассмотрим основной и наиболее надежный способ решения проблемы. Если рабочая база работает в режиме совместимости с версией 8.2.13, всю процедуру сравнения и объединения можно выполнить с помощью Конфигуратора 8.3.
1Cv8.1CD / бэкапа СУБД).scale, построение дерева сравнения завершится штатно без ошибок.Если в силу системных ограничений сервера или регламента компании обновлять рабочую базу напрямую через платформу 8.3 нежелательно, разберем обходной путь с подготовкой промежуточного cf-файла.
Work_Current.cf).Work_Current.cf.Work_Merged.cf).Work_Merged.cf. Поскольку загрузка не валидирует структуры через XDTO, она применится без ошибок, после чего останется только обновить конфигурацию базы данных по клавише F7.Проанализируем альтернативный вариант, если необходимо сохранить возможность выполнять сравнение и объединение именно в среде 8.2.
Так как атрибут scale начал генерироваться в платформе ветки 8.3.9, файлы конфигураций, сохраненные в версиях 8.3.8 (например, 8.3.8.2054) и более ранних, еще не содержат этого новшества в XML-структурах СКД.
scale при этом не возникнет.Если требуется объединить только отдельные объекты метаданных и нет возможности запускать другие версии платформы, разберем точечный подход:
Таким образом, переход на выполнение операций сравнения под актуальной версией платформы 8.3 или пересохранение файла конфигурации полностью устраняют конфликт десериализации XDTO.