Введение
Всех приветствую! Наконец-то появилось немного свободного времени, которое я решил использовать на разбор и описание интересного и нужного встроенного функционала.
В текущем материале я хочу представить вам информацию, которая, по моему мнению, будет интересна всем программистам любого уровня и даже пользователям современных программ 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. Если вас заинтересовала тема, мы можем обсудить ее в комментариях или личке данного ресурса или телеграмм канале автора.
Так же весь код статьи можно получить у автора в его телеграмм канале.
Спасибо, что дочитали данных материал до конца. Так же вы можете обратить ваше внимание на эти материалы автора:
Оценка производительности с помощью БСП
Стандартные подсистемы БСП - параметры работы клиента и возможности диалогов
Журнал регистрации - основные методы работы через БСП
Базовые принципы работы с регламентными заданиями подсистем БСП
Префиксация объектов - полезный типовой функционал БСП
Все материалы автора на портале бесплатны и в открытом доступе. Более интересные материалы и обработки - вы можете найти в телеграмм канале автора (по нику) - это бесплатные обмены, обработки, универсальные отчеты, моментальные обмены (переносы данных), работа с планами управленческих и бухгалтерских счетов, бухгалтерские отчеты, разные хитрости и другие полезные "фичи". Присоединяйтесь на канал - поддержите автора.
В заключение статьи напишу:
Все, кто хочет связаться с авторам для выполнения своих проектов или задач - вы всегда можете связаться со мной через личный профиль, а также мой телеграмм-канал (по нику автора).