Отчеты и Аналитика · 12 мин
Как получить вариант отчета в 1С
Как получить вариант отчета в 1С: через интерфейс, программно из хранилища вариантов, по ключу и по имени. Примеры кода, ошибки и проверка результата.
Вариант отчета в 1С — это сохранённый набор настроек: отборов, группировок, сортировок, оформления и выбранных полей. Один и тот же отчёт может иметь десятки вариантов: «Продажи по менеджерам», «Продажи по регионам», «Остатки на складе на дату» и так далее. Получить нужный вариант требуется в двух ситуациях: когда пользователь хочет быстро сформировать отчёт с готовыми настройками, и когда разработчик программно обращается к варианту — например, чтобы сформировать отчёт в фоне, отправить по почте или вывести в произвольной форме.
Способ получения варианта зависит от того, где он хранится. В типовых конфигурациях на БСП (Библиотека стандартных подсистем) варианты пользовательских отчётов хранятся в справочнике «Варианты отчетов», а предопределённые варианты зашиты в схему компоновки данных самого отчёта. В простых конфигурациях без БСП варианты существуют только внутри СКД. Ниже разобраны оба подхода — через интерфейс и программно.
Что такое вариант отчета и где он хранится
Прежде чем получать вариант, полезно понимать, где его искать. В конфигурациях на основе БСП (УТ, ERP, БП, ЗУП и другие) существует два типа вариантов. Предопределённые — созданы разработчиком в конфигураторе, встроены в схему компоновки данных и зарегистрированы в подсистеме «Варианты отчетов». Пользовательские — сохранены конкретным пользователем через кнопку «Сохранить вариант» и доступны либо только автору, либо всем, если при сохранении снят флаг «Только для автора».
Физически пользовательские варианты хранятся в справочнике «Варианты отчетов» (ВариантыОтчетов), а сами настройки — в хранилище значения внутри элемента справочника. Предопределённые варианты «живут» в СКД отчёта: их список виден в конфигураторе на закладке «Настройки» схемы компоновки. Это различие критично: программно к ним обращаются по-разному.
Как получить вариант отчета через интерфейс пользователя
Самый простой сценарий — пользовательская работа. Откройте отчёт из раздела, где он размещён (например, «Продажи → Отчеты по продажам»). В форме отчёта нажмите кнопку «Выбрать вариант» или «Ещё → Выбрать вариант» — откроется список доступных вариантов с указанием автора и описания. Выберите нужный, и настройки подставятся автоматически.
Если нужного варианта нет в списке, проверьте три вещи. Первое — вариант мог быть сохранён «только для автора» другим пользователем, тогда он вам недоступен. Второе — вариант мог быть помечен на удаление или отключён в панели отчётов. Третье — отчёт может открываться сразу с конкретным предопределённым вариантом, и остальные скрыты настройкой размещения.
Для управления вариантами откройте «Ещё → Прочие варианты» или одноимённую команду панели. Там можно переименовать вариант, изменить описание, назначить его другим пользователям (при наличии прав) и удалить ненужный. Администратору доступна обработка «Панель администрирования → Печатные формы, отчеты и обработки → Варианты отчетов», где видны все варианты информационной базы.
- 1Откройте нужный отчет из рабочего раздела программы
- 2Нажмите «Выбрать вариант» (или «Ещё → Выбрать вариант»)
- 3Найдите вариант в списке, при необходимости включите отображение чужих вариантов
- 4Выберите вариант — настройки применятся автоматически
- 5Нажмите «Сформировать» и проверьте результат
Как получить вариант программно из схемы компоновки данных
Если отчёт построен на СКД и вариант предопределённый, его можно получить напрямую из схемы. Схема доступна через объект отчёта, а варианты — через коллекцию ВариантыНастроек. Каждый элемент коллекции имеет имя, представление и настройки.
ОтчетОбъект = Отчеты.ПродажиЗаПериод.Создать();
Схема = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Для Каждого Вариант Из Схема.ВариантыНастроек Цикл
Сообщить(Вариант.Имя + " — " + Вариант.Представление);
КонецЦикла;
// Получить конкретный вариант по имени
НужныйВариант = Схема.ВариантыНастроек.Найти("ПродажиПоМенеджерам");
Если НужныйВариант = Неопределено Тогда
ВызватьИсключение "Вариант отчета не найден";
КонецЕсли;
Настройки = НужныйВариант.Настройки;
Дальше найденные настройки загружаются в компоновщик настроек, и отчёт формируется программно. Этот способ работает в любой конфигурации, где отчёт построен на СКД, и не зависит от БСП. Ограничение: так вы получите только предопределённые варианты из схемы, но не пользовательские, сохранённые в базе.
// Поиск варианта в СКД по имени
Схема = Отчеты.ПродажиЗаПериод.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Вариант = Схема.ВариантыНастроек.Найти("ПродажиПоМенеджерам");
Если Вариант <> Неопределено Тогда
Компоновщик.ЗагрузитьНастройки(Вариант.Настройки);
КонецЕсли;Как получить вариант из хранилища вариантов БСП
В типовых конфигурациях пользовательские и предопределённые варианты единообразно доступны через справочник «Варианты отчетов». Поиск выполняется по реквизиту «Ключ варианта» (КлючВарианта) в связке с отчётом. Ключ варианта можно посмотреть в форме настройки варианта или в конфигураторе для предопределённых.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Варианты.Ссылка КАК Ссылка,
| Варианты.Наименование КАК Наименование
|ИЗ
| Справочник.ВариантыОтчетов КАК Варианты
|ГДЕ
| Варианты.КлючВарианта = &КлючВарианта
| И НЕ Варианты.ПометкаУдаления";
Запрос.УстановитьПараметр("КлючВарианта", "ПродажиПоМенеджерам");
Результат = Запрос.Выполнить().Выбрать();
Найденная ссылка — это уже «полученный» вариант: из неё можно извлечь настройки (реквизит с хранилищем значения, обычно доступен через механизмы БСП) или передать в процедуру формирования. В БСП для программного формирования отчёта по варианту используют общий модуль ВариантыОтчетов и функции формирования, которые принимают ссылку на вариант и параметры.
Практический сценарий — регламентная рассылка. В типовых конфигурациях есть подсистема «Рассылка отчетов»: вы указываете ссылку на вариант отчёта, расписание и получателей, а платформа сама формирует отчёт именно с этим вариантом настроек. Это самый безопасный способ «получить вариант» для автоматики без написания кода.
Как сформировать отчёт с полученным вариантом программно
Типовая задача — сформировать отчёт с конкретным вариантом и вывести результат в табличный документ. Последовательность: создать объект отчёта, получить схему, найти вариант, загрузить настройки в компоновщик, при необходимости переопределить параметры и выполнить компоновку.
ОтчетОбъект = Отчеты.ПродажиЗаПериод.Создать();
Схема = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Вариант = Схема.ВариантыНастроек.Найти("ПродажиПоМенеджерам");
Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
Компоновщик.ЗагрузитьНастройки(Вариант.Настройки);
// Переопределение параметра
Параметр = Компоновщик.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(
Новый ПараметрКомпоновкиДанных("Период"));
Если Параметр <> Неопределено Тогда
Параметр.Значение = Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотМесяц);
Параметр.Использование = Истина;
КонецЕсли;
Результат = Новый ТабличныйДокумент;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(
Новый МакетКомпоновкиДанных(Компоновщик, Схема));
Обратите внимание: в реальном коде макет компоновки создаётся через объект КомпоновщикМакетаКомпоновкиДанных, а не напрямую. Полный корректный фрагмент формирования обычно выглядит так: компоновщик макета получает схему и настройки, затем процессор компоновки инициализируется макетом, процессор вывода выводит результат в табличный документ. Пропуск любого звена — самая частая причина пустого или искажённого результата.
Как проверить, что получен правильный вариант
После получения варианта — любым способом — убедитесь, что это именно тот набор настроек. В интерфейсе признак правильного варианта: после выбора в форме отчёта меняются видимые отборы, период и заголовок варианта в шапке формы. Если после выбора ничего не изменилось — вероятно, вариант пустой или сброшен.
При программной работе проверьте содержимое настроек: количество элементов отбора, значения параметров, список выбранных полей. Полезный приём — вывести структуру настроек в сообщение или журнал перед формированием. Если вариант найден, но настройки пустые, чаще всего причина в том, что настройки не были сохранены в момент создания варианта или сброшены при обновлении конфигурации.
Как проверить результат
Нужный вариант виден и выбирается, настройки применяются
Варианта нет в списке или после выбора настройки не меняются
Запрос возвращает ровно одну строку без пометки удаления
Пустой результат или несколько строк с одинаковым ключом
Отборы, параметры и поля соответствуют ожидаемым
Настройки пустые или содержат значения по умолчанию
Ограничения и когда нужен администратор или разработчик
Не всё можно сделать самостоятельно. Если вариант сохранён другим пользователем с пометкой «только для автора», обычный пользователь его не увидит — требуется администратор с правом изменения вариантов отчётов. Если вариант исчез после обновления конфигурации, возможно, разработчик переименовал ключ варианта в схеме, и пользовательские настройки «отвязались» — это восстанавливается только анализом справочника вариантов.
Ещё одна граница — внешние отчёты. У внешнего отчёта (.erf) варианты хранятся внутри файла или в привязке к справочнику дополнительных отчётов, и стандартный поиск по справочнику «Варианты отчетов» требует фильтрации по реквизиту, ссылающемуся на внешний отчёт. Наконец, если нужно массово скопировать варианты другим пользователям, используйте типовую обработку настройки рассылок или обратитесь к разработчику — ручное копирование элементов справочника напрямую чревато потерей настроек.
Как выбрать способ получения варианта
FAQ
Где посмотреть ключ варианта отчета?
В форме отчёта откройте «Ещё → Прочие варианты», найдите нужный вариант и откройте его настройки — техническая информация о ключе доступна в карточке варианта в справочнике «Варианты отчетов». Для предопределённых вариантов ключ задаётся в конфигураторе на закладке «Настройки» схемы компоновки данных.
Почему вариант отчета виден одному пользователю и не виден другому?
При сохранении варианта по умолчанию стоит признак доступности только автору. Чтобы вариант стал общим, автор или администратор должен открыть настройку варианта и снять ограничение доступа либо явно указать пользователей, которым вариант доступен.
Можно ли получить вариант отчета во внешнем отчете без БСП?
Да, но только предопределённые варианты — через коллекцию ВариантыНастроек схемы компоновки данных внешнего отчёта. Пользовательские варианты без подсистемы «Варианты отчетов» сохранять некуда, если не реализовано собственное хранилище настроек.
Что делать, если после обновления конфигурации вариант отчета пропал?
Проверьте справочник «Варианты отчетов» — элемент мог остаться, но потерять связь с отчётом из-за смены ключа объекта или ключа варианта. Администратор может восстановить связь, исправив реквизиты элемента, либо пересохранить настройки в новый вариант.
Как программно получить список всех вариантов конкретного отчета?
Выполните запрос к справочнику «ВариантыОтчетов» с отбором по реквизиту «Отчет» и снятой пометкой удаления. Для предопределённых вариантов дополнительно переберите коллекцию ВариантыНастроек схемы компоновки данных — часть вариантов может существовать только там.
Можно ли изменить предопределённый вариант отчета без изменения конфигурации?
Напрямую — нет: предопределённый вариант зашит в схему компоновки. Но пользователь может настроить отчёт под себя и сохранить результат как новый пользовательский вариант, а предопределённый при этом останется нетронутым.
Что важно запомнить
Вариант отчета получают либо через кнопку «Выбрать вариант» в форме, либо программно: предопределённые — из коллекции ВариантыНастроек схемы компоновки, пользовательские — запросом к справочнику «ВариантыОтчетов» по ключу варианта. Ищите по ключу, а не по наименованию, и проверяйте загруженные настройки перед формированием.