При работе с базами данных 1С на платформе 8.3 пользователи и администраторы иногда сталкиваются с критическим сбоем: при попытке открыть форму документа или справочника система аварийно завершает работу или выводит сообщение об ошибке преобразования данных XDTO. В тексте ошибки фигурирует свойство colorPalette и тип ParameterValue. Эта проблема носит платформенный характер и зачастую не связана с ошибками в коде самой конфигурации.
В данной статье мы подробно разберем причины возникновения этой ситуации, проанализируем механизмы работы платформы с XDTO и рассмотрим пошаговые алгоритмы решения проблемы — от простых манипуляций с кэшем до глубокого редактирования файлов конфигурации.
Проанализируем техническую сторону вопроса. Ошибка возникает из-за некорректной работы парсера XDTO (XML Data Transfer Objects) в определенных версиях платформы «1С:Предприятие 8.3». Механизм XDTO используется платформой для сериализации данных, в том числе для хранения настроек форм, элементов оформления и параметров диаграмм.
Суть дефекта заключается в том, что свойство colorPalette (цветовая палитра), которое используется в элементах оформления или диаграммах, ожидает данные строго определенного типа. Однако в системных таблицах базы данных или в метаданных формы это свойство может быть сохранено как anyType (произвольный тип). Когда «проблемная» версия платформы пытается прочитать такой XML-пакет, она не может сопоставить типы данных и выдает исключение. Это классическая ошибка регрессии, которая массово проявлялась в ветках 8.3.13, 8.3.14 и ранних релизах 8.3.15.
Как показывает практика и обсуждение в теме, самым быстрым и эффективным способом является манипуляция с версиями платформы. Если вы столкнулись с этой ошибкой, выполним следующие действия:
8.3.12 полностью устраняет проблему, так как в этой ветке механизмы XDTO работали по старым, менее строгим правилам.8.3.15.1747, 8.3.16.1063 и любые последующие актуальные ветки (8.3.17, 8.3.20, 8.3.25 и т.д.).Важно помнить, что простого обновления платформы на сервере или компьютере может быть недостаточно. Убедимся, что в настройках запуска базы (в окне выбора баз) не прописана конкретная старая версия в поле «Версия платформы».
Перед тем как приступать к более радикальным методам, выполним стандартные процедуры обслуживания. Ошибка XDTO может быть вызвана «мусором» в локальных файлах пользователя.
Рассмотрим порядок действий для очистки кэша:
%AppData%\1C\1cv8 и %LocalAppData%\1C\1cv8.Если очистка кэша не помогла, проанализируем состояние самой базы данных. Для этого воспользуемся утилитой chdbfl.exe (для файловых баз), которая находится в каталоге bin установленной платформы. После завершения проверки утилитой, запустим конфигуратор и выполним Тестирование и исправление (ТиИ) со следующими настройками:
Иногда «битые» данные XDTO сохраняются не в конфигурации, а в пользовательских настройках (таблицы системных настроек). В этом случае форма может не открываться только у конкретных пользователей. Выясним, как это исправить.
Мы можем программно очистить настройки, связанные с оформлением. Для этого создадим внешнюю обработку и воспользуемся следующим кодом:
Процедура ОчиститьНастройкиЦветовойПалитры()
// Удаляем системные настройки, которые могут содержать ошибочный XDTO
Выборка = ХранилищеСистемныхНастроек.Выбрать();
Пока Выборка.Следующий() Цикл
// Проверяем ключ объекта, если ошибка локализована в конкретной форме
// Или удаляем все настройки для полной очистки
Попытка
ХранилищеСистемныхНастроек.Удалить(Выборка.КлючОбъекта, Выборка.КлючНастроек, Выборка.Пользователь);
Исключение
Сообщить("Ошибка при удалении настройки: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Внимание: Данный метод удалит персональные настройки форм (ширину колонок, видимость полей), которые пользователи настраивали под себя, поэтому применять его следует осмотрительно.
Если форма не открывается даже в конфигураторе, это сигнализирует о повреждении самих метаданных. Разберем сложный, но эффективный метод восстановления формы через выгрузку конфигурации в файлы.
colorPalette.<chart:colorPalette> с некорректным содержимым или типом.Рассмотрим ситуацию, когда сменить платформу невозможно. В некоторых случаях помогает изменение режима совместимости конфигурации. Ошибка XDTO часто возникает на стыке версий, когда режим совместимости установлен значительно ниже версии используемой платформы (например, режим совместимости 8.3.10 при запуске на 8.3.14).
Попробуем временно повысить режим совместимости в свойствах корня конфигурации. Однако помните, что это серьезное изменение, которое требует полного тестирования всей системы, так как может изменить логику работы некоторых функций Запрос, Выполнить или механизмов работы с файлами.
Подведем итог: Основной причиной ошибки colorPalette является баг парсера XDTO в средних релизах платформы 8.3. Самым надежным решением является переход на актуальную версию платформы (выше 8.3.16.1063) или временный откат на стабильную 8.3.12.