Обмен настройками отчета

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Страницы: 1
RSS
Обмен настройками отчета
 
Пользователей очень много, большая часть из них не всегда "компьютерно-грамотные", а отчеты очень гибко-настраиваемые. Поэтому очень бы помогла такая сервисная возможность как обмен настройками отчета. Не знаю как реализовать, но что-то типа настроил отчет как надо и либо выгрузил в файл, чтобы переслать другому пользователю, а он у себя загрузил, либо (что еще удобнее) прямо из отчета возможность сохранить настройки для конкретного пользователя. Это бы, кстати, решило и проблему слетания настроек о которой пишут в соседних темах.
 
Присоединяюсь: было бы действительно удобно настраивать параметры для отчетов по каждому пользователю из одного места, как это делается для прав и настроек.
Тоже столкнулись с проблемой - менеджеры не всегда видят нужную/актуальную информацию, в связи с тем, что немного не так установлены настройки в отчетах...
 
Как вариант можете использовать следующие две процедуры, сохраняют настройки в файлы и загружают обратно. Но тоже не особо красивый вариант. Делаете в отчете две кнопки сохранить и загрузить. В конкретной, в общей или ещё где захотите.

Код
Функция СохранитьНастройкиОтчета(ЭтаФорма,ЭтотОбъект) Экспорт
   
   ТЗ = Новый ТаблицаЗначений;
   ТЗ.Колонки.Добавить("ИмяРеквизита");
   ТЗ.Колонки.Добавить("ЗначениеРеквизита");
   ТЗ.Колонки.Добавить("ТЗ");
   МеткаОтчета=ТЗ.Добавить();
   МеткаОтчета.ИмяРеквизита      = "ИмяОтчета";
   МеткаОтчета.ЗначениеРеквизита = Этаформа.ОтчетОбъект.Метаданные().Имя;
   МеткаФормы=ТЗ.Добавить();
   МеткаФормы.ИмяРеквизита      = "ИмяФормы";
   МеткаФормы.ЗначениеРеквизита = Этаформа.ИмяФормыНастроек;
      
 
   Для каждого РеквШапки Из ЭтаФорма.ЭлементыФормы Цикл 
      Если Строка(ТипЗнч(РеквШапки)) = "разделитель" ИЛИ Строка(ТипЗнч(РеквШапки)) = "Командная панель" 
         ИЛИ Строка(ТипЗнч(РеквШапки)) = "Надпись" ИЛИ Строка(ТипЗнч(РеквШапки)) = "Панель" ИЛИ Строка(ТипЗнч(РеквШапки)) = "Кнопка" Тогда
         Продолжить;
      КонецЕсли;     
      СтрТЗ = ТЗ.Добавить();
      Попытка
         СтрТЗ.ИмяРеквизита         = РеквШапки.Имя;
         СтрТЗ.ЗначениеРеквизита     = РеквШапки.Значение;
      Исключение
      КонецПопытки;
   КонецЦикла;
   Для АА = 1  По ЭтотОбъект.Метаданные().ТабличныеЧасти.Количество() Цикл
      СтрТЗ                     = ТЗ.Добавить();
      СтрТЗ.ИмяРеквизита         = Строка(ЭтотОбъект.Метаданные().ТабличныеЧасти[АА-1].Имя);
      СтрТЗ.ТЗ                     = ЭтотОбъект[Строка(ЭтотОбъект.Метаданные().ТабличныеЧасти[АА-1].Имя)].Выгрузить();
   КонецЦикла;
   
   МеткаОтбора = ТЗ.Добавить();
   МеткаОтбора.ИмяРеквизита      = "ПостроительОтчета";
   МеткаОтбора.ЗначениеРеквизита = ЭтотОбъект.ПостроительОтчета.ПолучитьНастройки();
   
   Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
   Диалог.Заголовок="Сохранение настроек построителя отчета в файл";
   Диалог.Расширение="set";
   Диалог.ПолноеИмяФайла = Строка(ЭтаФорма.Заголовок)+".set";
   Диалог.Фильтр="Настройки посторителя отчета (*.set)|*.set";
   Если Диалог.Выбрать() Тогда
      ЗначениеВФайл(Диалог.ПолноеИмяФайла, ТЗ);
   КонецЕсли;

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

Функция ЗагрузитьНастройкиОтчета(ЭтаФорма,ЭтотОбъект) Экспорт
   ЭтаФорма.ЗаполнитьНастройки = Истина;
   ЭтаФорма.ВосстанавливатьНастройки = Истина;
   Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок="Выбор файла настроек построителя отчета";
   Диалог.Расширение="set";
   Диалог.Фильтр="Настройки посторителя отчета (*.set)|*.set";
   Если Диалог.Выбрать() Тогда
      Попытка
         ТЗ = ЗначениеИзФайла(Диалог.ПолноеИмяФайла);
      Исключение
         Сообщить("Не удалось загрузить настройки построителя отчета.", СтатусСообщения.Внимание);
      КонецПопытки;
   КонецЕсли;
   
   Если ТЗ <> Неопределено Тогда 
      Если ТЗ[0].ЗначениеРеквизита = ЭтаФорма.Этаформа.ОтчетОбъект.Метаданные().Имя
         И ТЗ[1].ЗначениеРеквизита = Этаформа.ИмяФормыНастроек Тогда         
         Для каждого СтрТЗ Из ТЗ Цикл
            Если СтрТЗ.ИмяРеквизита = Неопределено Тогда
               Продолжить;
            КонецЕсли;  
            Попытка
               ЭтаФорма.ЭлементыФормы[СтрТЗ.ИмяРеквизита].Значение = СтрТЗ.ЗначениеРеквизита;//!!!
            Исключение
            КонецПопытки;   
            Если СтрТЗ.ИмяРеквизита = Строка("ПостроительОтчета") Тогда
               ЭтотОбъект.ПостроительОтчета.УстановитьНастройки(СтрТЗ.ЗначениеРеквизита);
            КонецЕсли;
            
            Если  НЕ СтрТЗ.ТЗ = Неопределено Тогда
               ЭтотОбъект[СтрТЗ.ИмяРеквизита].Загрузить(СтрТЗ.ТЗ)
            КонецЕсли;      
         КонецЦикла;
      Иначе Предупреждение("Выбранные настройки не предназначены для данного отчета!");
      КонецЕсли;
   КонецЕсли;
   
КонецФункции
 
В ветке пожелание уже было зарегистрировано. Если будем уходить от реализации сохранения отчетов методами, которые предлагаются платформой, то способ будет похож примерно на предложенный. Храниться настройки будут в регистре сведений. Настройки будут храниться для конкретных пользователей или будет использоваться общий шаблон настроек (это будет настраиваться), также будет  возможность для одного отчета использовать несколько вариантов настроек. Сказанное это все примерно, чтоб потом не забыть может еще что-нибудь придумаем или Вы посоветуете.
Страницы: 1
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С