При работе с управляемыми формами в платформе «1С:Предприятие» разработчики иногда сталкиваются с крайне специфической ошибкой преобразования данных XDTO. Проблема проявляется следующим образом: после внесения изменений в структуру реквизитов или макет формы у некоторых пользователей документ или справочник перестает открываться. При этом система выдает сообщение: «Ошибка преобразования данных XDTO: Неизвестный тип LFL элемента».
Давайте подробно разберем причины возникновения этой ошибки и рассмотрим практические способы ее устранения.
Аббревиатура LFL расшифровывается как Log Form Layouter (компоновщик/разметчик управляемых форм). Эта подсистема платформы отвечает за сохранение индивидуальных настроек интерфейса, которые пользователь вносит самостоятельно (например, изменение порядка и ширины колонок, группировка полей, видимость и положение элементов).
Данные настройки сериализуются в формат XML/XDTO по схеме http://v8.1c.ru/8.2/managed-application/logform/layouter и сохраняются в системных таблицах базы данных под конкретным пользователем. Ошибка возникает в следующих случаях:
Сбой происходит строго в промежутке между серверным событием ПриСозданииНаСервере (которое отрабатывает успешно) и клиентским событием ПриОткрытии (в которое управление уже не передается). Это связано с тем, что наложение пользовательских настроек LFL выполняется платформой на стороне клиента непосредственно перед отображением окна.
Обычная очистка локального кэша Windows в этом случае чаще всего не помогает, поскольку проблемные настройки хранятся непосредственно в базе данных.
---
Самый быстрый и точечный способ решить проблему для конкретного пользователя — удалить сохраненные настройки проблемной формы из системного хранилища настроек. Нам необходимо избавиться от двух ключей:
Документ.<ИмяДокумента>.Форма.<ИмяФормы>/НастройкиОкнаДокумент.<ИмяДокумента>.Форма.<ИмяФормы>/НастройкиФормыСделать это можно несколькими способами:
А. Использование сторонних инструментов разработчика
Если у вас установлена обработка «Инструменты разработчика» (ИР), откройте редактор хранилища настроек, найдите ветку нужного документа для проблемного пользователя и удалите указанные выше ключи настроек окна и формы.
Б. Программное удаление настроек (через внешнюю обработку)
Мы можем написать небольшую внешнюю обработку и запустить ее под проблемным пользователем (или под администратором, указав имя пользователя). Для программного удаления выполните следующий код:
// Пример удаления настроек формы для конкретного документа
КлючОбъектаФорма = "Документ.ПриходныйКассовыйОрдер.Форма.ФормаДокумента/НастройкиФормы";
КлючОбъектаОкна = "Документ.ПриходныйКассовыйОрдер.Форма.ФормаДокумента/НастройкиОкна";
// Если удаляем настройки текущего пользователя:
ХранилищеСистемныхНастроек.Удалить(КлючОбъектаФорма, "", ИмяПользователя);
ХранилищеСистемныхНастроек.Удалить(КлючОбъектаОкна, "", ИмяПользователя);
---
Если ваша конфигурация построена на базе «Библиотеки стандартных подсистем» (БСП), вам не обязательно писать код. Сбросить проблемные настройки можно через стандартный интерфейс в режиме «1С:Предприятие»:
---
Если вы провели масштабное обновление интерфейса и понимаете, что ошибка LFL может массово проявиться у большинства пользователей, лучшим решением будет превентивная очистка таблиц настроек в базе данных. Для этого выполните следующие действия:
Важно: Данное действие удалит сохраненные настройки форм (ширину колонок, видимость панелей) у всех пользователей для всех объектов базы данных. Пользователям придется настроить внешний вид окон заново, но это гарантированно избавит систему от ошибок десериализации XDTO.
---
В редких случаях некорректная XDTO-схема формы кэшируется на локальном компьютере пользователя локально. Если удаление системных настроек из базы данных не помогло, попробуйте принудительно обновить локальный кэш метаданных.
Для этого в дополнительных параметрах запуска информационной базы в окне запуска «1С:Предприятия» пропишите команду:
/ClearCache
Запустите сеанс, проверьте открытие формы, после чего данный параметр из настроек запуска можно удалить.