Многие разработчики при попытке доработать типовой отчет в Конфигураторе сталкиваются с неприятной ошибкой при попытке загрузить настройки, ранее сохраненные пользователем в режиме 1С:Предприятие. Система выдает ошибку преобразования данных XDTO, ссылаясь на отсутствие отображения для типов, например, CatalogRef.Склады. Давайте разберем, почему это происходит и как правильно поступать в таких ситуациях.
Основная причина конфликта заключается в принципиально разном контексте работы двух режимов платформы 1С:
GUID), существующие только в конкретной базе данных.СправочникСсылка.Склады как типом, но не имеет доступа к записям в этом справочнике.Когда вы сохраняете настройки отчета в Предприятии, СКД сериализует не только структуру (группировки, отборы), но и значения фильтров. Если вы поставили отбор «Склад = Центральный», то в файл настроек записывается GUID этого конкретного склада. При попытке загрузить этот файл в Конфигуратор, платформа пытается сопоставить этот GUID с объектами конфигурации, что невозможно, так как это данные, а не метаданные. Отсюда и возникает ошибка Отсутствует отображение для типа.
Поскольку прямой перенос настроек, содержащих ссылочные данные, между средами архитектурно не предусмотрен, рассмотрим способы достижения нужного результата при разработке отчетов.
Важно понимать разницу между Схемой компоновки данных (СКД) и настройками варианта отчета. Если вам нужно перенести логику построения отчета (запросы, параметры), выгружайте именно Схему компоновки данных, а не настройки пользователя.
Если же настройки необходимо перенести, попробуйте следующее:
Предприятие в консоли отчетов или настройках самого отчета сбросьте значения всех фильтров, содержащих ссылочные данные (склады, контрагенты и т.д.).Конфигуратор без ошибок, так как они не содержат привязки к конкретным GUID.В типовых конфигурациях на базе БСП (Библиотеки стандартных подсистем) предусмотрен механизм Вариантов отчетов. Вместо попыток импортировать файлы настроек, придерживайтесь стандартного процесса разработки:
Конфигураторе, описав структуру СКД.Вариантов отчета.Предприятии самостоятельно сохранит свой вариант настроек, который будет корректно работать в его базе.Если возникает острая необходимость передачи настроек, убедитесь, что в параметрах СКД используются только примитивные типы данных или стандартные типы, доступные везде. Избегайте использования ссылок на конкретные документы или справочники в настройках по умолчанию, если планируете переносить эти файлы между базами. Для выбора значений используйте параметры, которые заполняются программно при выполнении отчета:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Устанавливаем значение параметра программно, чтобы не зависеть от сохраненных настроек
ПараметрСклад = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Склад");
Если ПараметрСклад <> Неопределено Тогда
ПараметрСклад.Значение = Справочники.Склады.НайтиПоКоду("000000001");
ПараметрСклад.Использование = Истина;
КонецЕсли;
КонецПроцедуры
Резюмируя: попытка переноса файлов настроек «в лоб» через Загрузить настройки из файла в Конфигураторе является порочной практикой, так как настройки пользователя всегда «загрязнены» данными конкретной базы. Используйте Конфигуратор для настройки «скелета» отчета, а режим Предприятие — для настройки пользовательских фильтров. Если нужно зафиксировать настройки для всех, делайте это программно через ПриКомпоновкеРезультата или через механизм Вариантов отчетов БСП.