Как исправить ошибку преобразования данных XDTO при обновлении 1С:Розница?

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

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

Ошибка загрузки документа. Ошибка преобразования данных XDTO. НачалоСвойства: appearance, тип: TableCellAppearance... Ошибка отображения типов: Отображение типа 'Строка' в тип Color.

Стандартные операции обслуживания — очистка локального кэша, тестирование и исправление информационной базы, запуск утилиты chkdbfl.exe или выгрузка и последующая загрузка через файл .dt — в этой ситуации не дают положительного результата. Проанализируем природу данной неполадки и подробно рассмотрим эффективные пути ее устранения.

Причины возникновения ошибки десериализации XDTO

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

Сбой возникает в следующих ситуациях:

  1. Рассинхронизация метаданных при использовании файлов обновления (.cfu). Механизм пошагового обновления сначала десериализует шаблоны и настройки оформления СКД. Если новый элемент стиля в структуре метаданных еще не зафиксирован, платформа считывает строковое наименование стиля, но ожидает строго типизированный объект Color. В результате возникает исключение Ошибка преобразования данных XDTO.
  2. Ошибки релизов платформы 1С:Предприятие. В некоторых версиях платформы (в частности, релизах линеек 8.3.9 и 8.3.10) официально регистрировались внутренние ошибки разбора XDTO-пакетов при сравнении и объединении конфигураций.
  3. Поврежденные или устаревшие пользовательские настройки. В системных таблицах информационной базы (ХранилищеСистемныхНастроек, ХранилищеПользовательскихНастроекОтчетов) могут сохраняться пользовательские варианты списков задач или отчетов с некорректными ссылками на оформление.

Способ 1. Загрузка конфигурации из файла под лицензией ПРОФ

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

Для базовых версий операция прямой загрузки файла .cf стандартно заблокирована, однако при наличии лицензии уровня ПРОФ задачу можно решить следующим образом:

  1. Создание резервной копии. Обязательно сделаем полную копию каталога информационной базы перед выполнением любых сервисных действий.
  2. Запуск с лицензией ПРОФ. Откроем информационную базу в Конфигураторе на компьютере, где установлена и активна коммерческая лицензия уровня ПРОФ (программный или аппаратный ключ защиты).
  3. Включение возможности изменения. Перейдем в меню Конфигурация — Поддержка — Настройка поддержки и нажмем кнопку Включить возможность изменения. Это разблокирует метаданные для редактирования.
  4. Полная загрузка конфигурации. Выполним команду главного меню Конфигурация — Загрузить конфигурацию из файла... и выберем файл полной поставки требуемого релиза (файл с расширением .cf именно для базовой версии).
  5. Применение изменений. Нажмем Обновить конфигурацию базы данных (клавиша F7) и примем изменения структуры. После успешного обновления конфигурация восстановит свой исходный статус базовой версии с типовой поддержкой и в дальнейшем сможет штатно обновляться.

Способ 2. Обновление через полный файл конфигурации (cf) без снятия с поддержки

Если нет доступа к платформе ПРОФ, разберем альтернативный вариант обновления базовой конфигурации с помощью полного файла поставки .cf, не требующий включения возможности изменения:

  1. Загрузим полный дистрибутив нужного релиза конфигурации (файл поставки .cf, а не дельта-обновление .cfu) с официального портала обновлений.
  2. В меню Конфигуратора откроем Конфигурация — Поддержка — Обновить конфигурацию.
  3. Выберем вариант Выбор файла обновления и вручную укажем путь к скачанному файлу .cf.
  4. При таком подходе платформа не производит последовательное пошаговое применение разницы метаданных (diff), а замещает структуру целиком. Это исключает возникновение несоответствий между элементами стиля и схемами XDTO.

Способ 3. Временная смена версии платформы 1С:Предприятие

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

  1. Установим более актуальный и стабильный релиз платформы 1С:Предприятие (например, из веток 8.3.12, 8.3.14 или выше).
  2. Запустим Конфигуратор проблемной базы под управлением новой платформы.
  3. Выполним обновление конфигурации штатным способом. Более свежие версии платформы корректно обрабатывают чтение макетов оформления ячеек СКД и не вызывают аварийного завершения.
  4. После завершения реструктуризации при необходимости можно вернуть запуск базы под прежней версией платформы.

Способ 4. Очистка системных и пользовательских настроек оформления

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

В режиме «1С:Предприятие» перейдем в раздел Администрирование — Настройки пользователей и прав — Очистка настроек и сбросим оформление списков и отчетов для всех пользователей.

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


ВыборкаПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого Пользователь Из ВыборкаПользователей Цикл
    ХранилищеСистемныхНастроек.Удалить(Неопределено, Неопределено, Пользователь.Имя);
    ХранилищеПользовательскихНастроекОтчетов.Удалить(Неопределено, Неопределено, Пользователь.Имя);
КонецЦикла;

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

Способ 5. Пакетное обновление через командную строку

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

Пример команды для запуска обновления через командную строку Windows:


"C:\Program Files\1cv8\8.3.14.1976\bin\1cv8.exe" DESIGNER /F "C:\Bases\RetailBase" /UpdateCfg "C:\Updates\1Cv8.cf" /UpdateDBCfg

Параметр /UpdateCfg задает файл конфигурации, а ключ /UpdateDBCfg инициирует немедленное применение изменений к базе данных.

← На главную