Как выгрузить пользовательский вариант отчета СКД и открыть его в Конфигураторе 1С

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

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

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

Выясняем причину: схема компоновки данных против настроек

Главная причина трудностей, с которыми сталкиваются начинающие разработчики, кроется в непонимании архитектуры Системы компоновки данных (СКД). Нам необходимо четко разделять два фундаментальных понятия:

  1. Схема компоновки данных (СКД) — это жесткий каркас, структура отчета. Она создается в Конфигураторе и содержит запросы к базе данных, описание наборов данных, связи между ними, доступные поля, ресурсы и параметры. Это неизменяемый базис (макет), описывающий, откуда и какие данные система в принципе может получить.
  2. Настройки компоновки данных (Вариант отчета) — это динамическая надстройка над схемой. Они определяют, как именно имеющиеся в схеме данные будут выведены пользователю. Настройки включают в себя структуру группировок (строки, колонки, таблицы), выбранные поля, сортировки, отборы и параметры условного оформления.

Когда пользователь создает новый вариант отчета в режиме «1С:Предприятие» (например, «Себестоимость товаров по 1 номенклатуре» на базе типового отчета АнализСебестоимостиТоваровРасширенный), платформа не создает новую схему СКД. Она сохраняет только настройки компоновки. Сама схема с тяжелыми SQL-запросами остается прежней.

Когда вы через меню «Изменить вариант» выгружаете настройки в файл, платформа создает XML-файл, содержащий исключительно объект типа НастройкиКомпоновкиДанных. Попытка загрузить этот файл в Конфигураторе в качестве основной схемы СКД закономерно приводит к ошибке: конфигуратор ожидает увидеть структуру схемы (с запросами и полями), а получает лишь перечень группировок и отборов.

Пошаговая инструкция: как правильно загрузить вариант отчета в Конфигуратор

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

Шаг 1. Сохранение настроек в режиме «1С:Предприятие»

Для начала нам нужно получить файл настроек из пользовательского интерфейса:

  1. Откройте нужный отчет в режиме «1С:Предприятие» и выберите интересующий вас вариант.
  2. Нажмите кнопку Еще в правом верхнем углу формы отчета.
  3. Перейдите по пути: Прочее -> Изменить вариант... (в некоторых интерфейсах БСП этот пункт доступен через Еще -> Настройки -> Настройки для разработчиков).
  4. В открывшемся окне настройки варианта отчета нажмите кнопку Еще (в шапке этого окна) и выберите пункт Сохранить настройки в файл....
  5. Укажите имя файла и сохраните его на диск (система создаст файл, обычно без расширения или с расширением XML).

Шаг 2. Подготовка оригинального отчета в Конфигураторе

Теперь нам нужен доступ к исходному коду и макету отчета:

  1. Откройте Конфигуратор и найдите интересующий вас отчет в дереве метаданных (в нашем примере это АнализСебестоимостиТоваровРасширенный).
  2. Если вы хотите проводить эксперименты, не затрагивая конфигурацию поставщика, сохраните этот отчет как внешний: нажмите на отчете правой кнопкой мыши и выберите Сохранить как внешний отчет, обработку....
  3. Откройте сохраненный внешний отчет в Конфигураторе и перейдите в его основную схему компоновки данных (обычно это макет с именем ОсновнаяСхемаКомпоновкиДанных).

Шаг 3. Импорт настроек в схему СКД

На этом этапе мы соединяем схему и пользовательские настройки:

  1. В окне конструктора схемы компоновки данных перейдите на самую последнюю вкладку — Настройки.
  2. Обратите внимание на верхнее левое окно («Варианты настройки»). По умолчанию там может быть один или несколько предопределенных вариантов.
  3. Нажмите кнопку Загрузить настройки из файла (иконка в виде папки со стрелкой на панели управления вариантами).
  4. Выберите XML-файл, который мы сохранили на Шаге 1.
  5. Платформа автоматически применит все пользовательские группировки, выбранные поля и отборы к текущей схеме компоновки. Теперь вы можете детально проанализировать структуру построения отчета во вкладках Группировки, Выбранные поля и Отборы.

Важное примечание: Если в пользовательском варианте были жестко заданы отборы по конкретным элементам справочников (например, по конкретному складу или номенклатуре из текущей базы данных), в Конфигураторе на их месте вы увидите надпись «Объект не найден» и уникальный идентификатор (GUID). Это абсолютно нормально, так как в конфигураторе нет данных самой информационной базы. Для корректной работы такие отборы перед сохранением или уже после загрузки в Конфигуратор рекомендуется очистить.

Где физически хранятся пользовательские варианты в 1С?

Поскольку современные конфигурации 1С (УТ 11, ERP, КА) построены на базе Библиотеки стандартных подсистем (БСП), механизмы работы с отчетами стандартизированы. Пользовательские варианты, созданные в режиме «1С:Предприятие», не меняют метаданные конфигурации. Они хранятся непосредственно в таблицах информационной базы:

Если вам необходимо быстро перенести пользовательский вариант отчета из одной базы данных в другую без использования Конфигуратора, воспользуйтесь встроенным механизмом БСП. В режиме «1С:Предприятие» в форме нужного отчета нажмите Еще -> Варианты отчета -> Сохранить в файл, а в базе-приемнике выполните аналогичную команду Обновить из файла.

Программная работа с настройками СКД

В некоторых случаях разработчику требуется программно применить сохраненные настройки пользователя для вывода данных в коде или при программном формировании отчета на сервере. Рассмотрим, как прочитать XML-файл настроек и загрузить его в компоновщик:


// Путь к файлу, который мы сохранили из режима Предприятие
ПутьКФайлу = "C:\Users\User\Documents\MyReportSettings.xml";

// Читаем файл XML
ЧтениеXML = Новый ЧтениеXML;
Попытка
    ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
Исключение
    ВызватьИсключение "Не удалось открыть файл настроек: " + ОписаниеОшибки();
КонецПопытки;

// Выполняем десериализацию XML-данных в объект 1С "НастройкиКомпоновкиДанных"
НастройкиКомпоновки = СериализаторXDTO.ПрочитатьXML(ЧтениеXML, Тип("НастройкиКомпоновкиДанных"));
ЧтениеXML.Закрыть();

// Загружаем полученные настройки в компоновщик отчета
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновки);

Этот код позволяет программно управлять структурой отчета, динамически загружая внешние файлы настроек в зависимости от бизнес-логики приложения. Для упрощения программного описания и модификации структуры отчетов можно воспользоваться библиотекой для программного создания СКД.

Специфика сложных типовых отчетов (на примере «Анализа себестоимости»)

Проанализируем важную особенность отчета АнализСебестоимостиТоваровРасширенный. Попытка использовать его схему СКД во внешнем отчете напрямую очень часто приводит к некорректным результатам или пустым таблицам. Почему так происходит?

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

Если вы хотите использовать логику построения себестоимости в своей собственной разработке, вам недостаточно просто скопировать схему компоновки. Вам придется перенести и адаптировать весь код из модуля объекта отчета АнализСебестоимостиТоваровРасширенный, убрав зависимости от глобальных серверных модулей БСП, которые не поддерживают работу с внешними отчетами напрямую.

Таким образом, мы детально разобрали механизм разделения схем и настроек СКД, научились переносить пользовательские варианты в среду разработки и узнали о подводных камнях при работе со сложными механизмами расчета себестоимости в типовых конфигурациях 1С.

← На главную