Методы работы с универсальным отчетом в подсистеме "Варианты отчетов" на БСП

30.05.23

Разработка - Механизмы платформы 1С

В данной статье рассмотрим типовую подсистему "Варианты отчетов" БСП на примере применения в универсальном отчете любой современной конфигурации.

Введение

Всех приветствую! Наконец-то появилось немного свободного времени, которое я решил использовать на разбор и описание интересного и нужного встроенного функционала.

В текущем материале я хочу представить вам информацию, которая, по моему мнению, будет интересна всем программистам любого уровня и даже пользователям современных программ 1С. Я попробую описать применение на практике подсистемы "Варианты отчетов" в типовой Библиотеке стандартный подсистем 3.1 (БСП). Статья как всегда содержит только практические исследования - проверенные примеры и приемы работы с основными методами подсистемы "Варианты отчетов".

 

Данная подсистема "Варианты отчетов" довольно старая, но в своих примерах я буду использовать одну из последних БСП 3.1.8 (конец мая 2023 г.) на платформе 8.3.22.1750. Руководство направлено на экономию времени и обзору уже существующих методов работы с отчетами.

Есть желание в дальнейшем опубликовать еще и статью про подсистему "Рассылки отчетов" (как часть 2), но это будет возможно только в том случае, если данный материал "Варианты расчетов" наберет достаточное количество голосов - т.е. будет интересен широкой публики данного портала.

Итак, переходим сразу к практическому применению и рассмотрим практические примеры работы и получения результатов в подсистеме "Варианты отчетов".

 

Возможности использования подсистемы "Варианты отчетов"

 

1. ОтчетыТекущегоПользователя() Экспорт

Получим все отчеты текущего пользователя:

АА = ВариантыОтчетов.ОтчетыТекущегоПользователя();

В результате выполнения функции мы получим массив ссылок справочника "Идентификаторы объекта метаданных". Ссылка выглядит вот так:

 

Рис.1. Ссылка на запись об отчете из справочника "Идентификаторы объекта метаданных".

 

2. КлючиВариантовОтчета(Ключ, Пользователь) Экспорт

Код для получения ключей:

АА1 = ВариантыОтчетов.КлючиВариантовОтчета("Отчет.УниверсальныйОтчет", ПользователиКлиентСервер.ТекущийПользователь());

 

После выполнения данной функции по "ключу" (строка - полное название отчета) и "пользователю", я список значений всех сохранных вариантов данного отчета у пользователя. Например:

 

Рис.2. Одно из представлений настроек отчета для выбранного пользователя (Универсальный отчет - представления1).

 

Чтобы было понятно, привожу небольшое видео, где демонстрируется использование настроек в типовом "Универсальном отчете".

 

Рис.3. Настройки "универсального отчета".

 

Далее, перейдем к следующим методам:

 

3. УдалитьВариантОтчета(Ключ, Вариант, Пользователь) Экспорт

Попробуем удалить один из вариантов выбранного отчета для определенного пользователя, вот так:

ВариантыОтчетов.УдалитьВариантОтчета("Отчет.УниверсальныйОтчет","bd5152a0-5c7a-4c0e-9f2e-2c36ddb507ce", ПользователиКлиентСервер.ТекущийПользователь());

По "ключу варианта" - это гуид (полученный ранее), у меня получилось удалить вариант этих настроек для текущего пользователя.

 

4.СброситьПользовательскиеНастройки(ВалютыНастройки,ТипыНастроек) Экспорт

Данный код сбросит ваши настройки по ссылке на нужный отчет. Выглядит это вот так:

ТипыНастроек = Новый Структура("ЭлементОтбора, ЗначениеПараметраНастроек, ВыбранныеПоля, Порядок, ЭлементУсловногоОформления, Прочие");
	
	ТипыНастроек.ЭлементОтбора = Истина;	
	ТипыНастроек.ЗначениеПараметраНастроек = Истина;
	ТипыНастроек.ВыбранныеПоля = Истина;
	ТипыНастроек.Порядок = Истина;
	ТипыНастроек.ЭлементУсловногоОформления = Истина;
	ТипыНастроек.Прочие = Истина;                  
	
	ВалютыНастройки = Справочники.ВариантыОтчетов.НайтиПоНаименованию("Универсальный отчет - Валюты1");  // синоним отчеты
	
	ВариантыОтчетов.СброситьПользовательскиеНастройки(ВалютыНастройки,ТипыНастроек);

 

В результате, я сбросил все настройки (отборы) данного отчета на основе универсального. Проверено - сработало.

 

5. ОткрытьФормуОтчета(Знач ФормаВладелец, Знач Вариант, Знач ДополнительныеПараметры = Неопределено) Экспорт

Данная процедура позволит открыть форму отчета из справочника отчеты или внешние отчеты или обработки. Выглядит это вот так:

&НаКлиенте
Процедура ПолучитьВариант(Команда)
	
	ВариантыОтчетовКлиент.ОткрытьФормуОтчета(ЭтаФорма, ПолучитьВариантОтчет1());
	
КонецПроцедуры

&НаСервере
Функция ПолучитьВариантОтчет1()
	
	Возврат	Справочники.ВариантыОтчетов.НайтиПоНаименованию("Универсальный отчет - Валюты1")

КонецФункции

Отмечу, что у меня получилось открыть даже формы отчетов, помеченных на удаление (см. пункт 3 данного мануала).

 

Рис.4. Открыл настройки отчета, которые были ранее "удалены" у пользователя - "Универсальный отчет - Представления1".

 

6. ДоступныеОтчеты(ПроверятьФункциональныеОпции = Истина) Экспорт

Данная функция позволяет определить доступность отчета текущему пользователю. Как написано в мануале ее следует применять во всех случаях перед запуском отчета. Возвращает массив ссылок доступных отчетов:

Доступные1 = ВариантыОтчетовПовтИсп.ДоступныеОтчеты();

 

7. СформироватьОтчет(Знач Параметры, Знач ПроверятьЗаполнение, Знач ПолучатьФлажокПустой) Экспорт

Еще один интересный метод - сформировать уже настроенный вариант отчета в получить табличный документ. Код выглядит вот так:

Параметры1 = Новый Структура("СсылкаВарианта,СсылкаОтчета,КлючВарианта,ИдентификаторФормы");
	
Параметры1.СсылкаВарианта = Справочники.ВариантыОтчетов.НайтиПоНаименованию("Универсальный отчет - Валюты1").Ссылка;	
Параметры1.ИдентификаторФормы = Новый УникальныйИдентификатор();
	
ПроверятьЗаполнение  = Ложь;
ПолучатьФлажокПустой = Ложь;
	
СтруктураСформированногоОтчета = ВариантыОтчетов.СформироватьОтчет(Параметры1, ПроверятьЗаполнение, ПолучатьФлажокПустой);
	

 

В результате, я получаю табличный документ:

 

Рис.5. Получение табличного документа из выполненного метода "СформироватьОтчет".

 

Выгладит это вот так:

 

Рис.6. Загрузка данных произвольного отчета в реквизит с типом табличный документ.

 

Теперь понятно, что данные сформированного отчета можно получить в любой пользовательской форме. Так же, я могу использовать данный метод в рассылке отчетов - РассылкаОтчетов.СформироватьОтчет().

 

8. ИнформацияОбОтчете(Знач ОтчетПолноеИмя, Знач ВызыватьИсключение = Ложь) Экспорт

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

ААА111 = ВариантыОтчетов.ИнформацияОбОтчете("Отчет.УниверсальныйОтчет");

 

Результат вот такой:

 

Рис.7. Здесь можно понять, что это за отчет.

 

9. ПравоЧтения() Экспорт и ПравоДобавления() Экспорт

Так же есть простейшая проверка на чтение и добавление в справочник отчетов. Код этой проверки вот такой:

// Возвращает Истина если у пользователя есть право чтения вариантов отчетов.
Функция ПравоЧтения() Экспорт
	
	Возврат ПравоДоступа("Чтение", Метаданные.Справочники.ВариантыОтчетов);
	
КонецФункции

// Возвращает Истина если у пользователя есть право на сохранение вариантов отчетов.
Функция ПравоДобавления() Экспорт
	
	Возврат ПравоДоступа("СохранениеДанныхПользователя", Метаданные)
		И ПравоДоступа("Добавление", Метаданные.Справочники.ВариантыОтчетов);
	
КонецФункции

 

10. ПодсистемыТекущегоПользователя() Экспорт

Так же, для применения данной подсистемы, вам будет полезно знать о существовании функции определения доступности подсистем текущего пользователя. Использование функции:

ААА = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя();

 

Результат выглядит вот так:

 

Рис.8. Список подсистем, которые доступны пользователю.

 

Итак, мы разобрали на практике десять самых базовых методов подсистемы "Варианты отчетов", которые точно дают понимание о встроенных типовых возможностях:

 

1. ОтчетыТекущегоПользователя() Экспорт

2. КлючиВариантовОтчета(Ключ, Пользователь) Экспорт

3. УдалитьВариантОтчета(Ключ, Вариант, Пользователь) Экспорт

4. СброситьПользовательскиеНастройки(ВалютыНастройки,ТипыНастроек) Экспорт

5. ОткрытьФормуОтчета(Знач ФормаВладелец, Знач Вариант, Знач ДополнительныеПараметры = Неопределено) Экспорт

6. ДоступныеОтчеты(ПроверятьФункциональныеОпции = Истина) Экспорт

7. СформироватьОтчет(Знач Параметры, Знач ПроверятьЗаполнение, Знач ПолучатьФлажокПустой) Экспорт

8. ИнформацияОбОтчете(Знач ОтчетПолноеИмя, Знач ВызыватьИсключение = Ложь) Экспорт

9. ПравоЧтения() Экспорт и ПравоДобавления() Экспорт

10. ПодсистемыТекущегоПользователя() Экспорт

 

Конечно, таких методов не десять, а, условно говоря, сто десять.... но перейдем к заключению и сделаем выводы по статье "Варианты отчетов":

 

Заключение и выводы статьи

В текущей статье я постарался разобрать некоторые базовые методы работы с отчетами конфигураций в основе которых лежит библиотека стандартных подсистем (БСП).

Я специально выбрал основной "Универсальный отчет" как общий пример, использовав который вы самостоятельно сможете дорабатывать варианты отображения собственных данных.

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

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

Надеюсь, что статья будет вам полезна, позволит приобрести понимание работы с данным функционалом, даст повод к его изучению на практике.

Если вам понравилась эта статья, и вы хотите продолжения описания данного функционал - поддержите эту статью и продолжение незамедлительно выйдет. Следующую статью планирую посвятить развитию данной темы - "Рассылке отчетов".

Отмечу еще раз, что разработка велась на новой БСП 3.1.8 на 1С:Предприятии 8.3.22.1750. Если вас заинтересовала тема, мы можем обсудить ее в комментариях или личке данного ресурса или телеграмм канале автора.

Так же весь код статьи можно получить у автора в его телеграмм канале.

Спасибо, что дочитали данных материал до конца. Так же вы можете обратить ваше внимание на эти материалы автора:

 

Оценка производительности с помощью БСП

Стандартные подсистемы БСП - параметры работы клиента и возможности диалогов

Журнал регистрации - основные методы работы через БСП

Базовые принципы работы с регламентными заданиями подсистем БСП

Префиксация объектов - полезный типовой функционал БСП

 

Все материалы автора на портале бесплатны и в открытом доступе. Более интересные материалы и обработки - вы можете найти в телеграмм канале автора (по нику) - это бесплатные обмены, обработки, универсальные отчеты, моментальные обмены (переносы данных), работа с планами управленческих и бухгалтерских счетов, бухгалтерские отчеты, разные хитрости и другие полезные "фичи". Присоединяйтесь на канал - поддержите автора.

В заключение статьи напишу:

Все, кто хочет связаться с авторам для выполнения своих проектов или задач -  вы всегда можете связаться со мной через личный профиль, а также мой телеграмм-канал (по нику автора).

БСП универсальный отчет варианты отчетов подсистемы quazare

См. также

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    6187    human_new    19    

56

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    3079    YA_418728146    3    

85

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    3526    sebekerga    45    

76

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    8657    SeiOkami    24    

87

Расширение глобального поиска 1С, или Глобальный поиск "на максималках"

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Мало кто знает, что поле "Глобального поиска" в 1С можно доработать. Добавить свои варианты поиска, кнопочки в результатах и даже целые пользовательские меню.

27.03.2023    5433    SeiOkami    10    

129

Версионирование объектов VS История данных

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Давайте разберемся в механизме «История данных» и поэкспериментируем для наглядности. Сравним «Версионирование объектов» и «Историю данных».

06.03.2023    10037    dsdred    48    

143

Идентификатор объекта в запросе. Вы этого хотели?

Запросы Механизмы платформы 1С Платформа 1С v8.3 Запросы Бесплатно (free)

В платформе 8.3.22 появилась возможность получать идентификатор в запросе. Лично я ждал этого давно, но по итогу ждал большего. Что не так?

12.01.2023    22116    dsdred    24    

81

Практическая шпаргалка по новым возможностям языка запросов 1С

Механизмы платформы 1С Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

В предлагаемой статье решил привести примеры применения новых возможностей языка запросов 1С, начиная с версии платформы 8.3.20.

21.11.2022    19424    quazare    34    

120
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dhurricane 30.05.23 15:13 Сейчас в теме
Программный интерфейс модуля "ВариантыОтчетов" ни разу еще не приходилось использовать за мою практику. А вот переопределять обработчики событий отчетов для подсистемы вариантов - регулярно. Если опишете работу с событиями максимально подробно, с большим разнообразием примеров, нежели есть в комментариях к этим событиям, буду премного благодарен. Уверен, что и не я один.
ЛЛ Юрий; mrChOP93; puzo50; quazare; +4 Ответить
2. kser87 2387 30.05.23 15:56 Сейчас в теме
Полезные знания, позволят избежать кучу костылей при разработке отчетов. Никак не мог добраться и разобраться самостоятельно
topoviy1Cer; quazare; +2 Ответить
3. topoviy1Cer 31.05.23 14:27 Сейчас в теме
Круто
4. triviumfan 81 05.06.23 09:55 Сейчас в теме
Параметры1.СсылкаВарианта = Справочники.ВариантыОтчетов.НайтиПоНаименованию("Универсальный отчет - Валюты1").Ссылка;

Шутка?
Оставьте свое сообщение