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

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

См. также

Сервисы интеграции без Шины и интеграции

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

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    2554    dsdred    16    

58

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    5882    dsdred    53    

83

Как готовить и есть массивы

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

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

24.01.2024    5839    YA_418728146    25    

68

Планы обмена VS История данных

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

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6958    dsdred    36    

113

1С-ная магия

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

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    19043    SeiOkami    46    

118

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

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

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

14.09.2023    12750    human_new    27    

76

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

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

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

28.08.2023    9376    YA_418728146    6    

143

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

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

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

20.08.2023    6521    sebekerga    54    

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

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