Имя: Пароль:
1C
 
Настройки отчетов
0 Злобный Фей
 
19.07.05
15:24
Вопрос такой: один пользователь настроил отчет (показатели, группировки, поля и т.д.) и сохранил настройку. Можно ли каким-нибудь образом сделать эту настройку доступной всем остальным? Пользователей очень много и настраивать для каждого пользователя несколько несколько вариантов нескольких отчетов довольно долго.
1 vvv29
 
19.07.05
15:31
Стандартными средствами нет, настройки храняться на компе пользователя локально, ИМХО это не всегда удобно
2 Волшебник
 
19.07.05
15:36
(1) У меня заведен справочник, в котором хранятся настройки, общие для всех пользователей. Могу поделиться решением.
3 vvv29
 
19.07.05
15:40
(2)Скинь на ящик, очень интересно посмотреть, по какому принципу?
4 Волшебник
 
19.07.05
15:40
НастройкиОтчетов

ИмяОтчета - индексирование с доп. упорядочиванием
Комментарий
СохраненныеНастройки - строка неогр. длины


В каждом отчете:

1. В диалоге есть поле ввода, типа СправочникСсылка.НастройкиОтчетов

У этого поля ввода есть события:

Процедура НастройкаОтчетаПриИзменении(Элемент)
   
   Если НЕ НастройкаОтчета.Пустая() Тогда
       
       Если ЗначениеЗаполнено(НастройкаОтчета.СохраненныеНастройки) Тогда
           СохраненныеНастройки = ЗначениеИзСтрокиВнутр(НастройкаОтчета.СохраненныеНастройки);
           ПослеВосстановленияЗначений();
           ОбновитьОтчет();
       КонецЕсли;
       
   КонецЕсли;
   
КонецПроцедуры


Процедура НастройкаОтчетаНачалоВыбора(Элемент, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   
   ФормаВыбора = Справочники.НастройкиОтчетов.ПолучитьФормуВыбора();
   ФормаВыбора.ВладелецФормы = ЭлементыФормы.НастройкаОтчета;
   ФормаВыбора.ИмяОтчета = ЭтотОтчет.Метаданные().Имя;
   ФормаВыбора.Открыть();
   
КонецПроцедуры



2. Переписаны обработчики событий для формы:


Процедура ПередСохранениемЗначений(Отказ)
   
   СохраненныеНастройки = ЭтотОтчет.СформироватьСтруктуруДляСохраненияНастроек(ПоказыватьЗаголовок);
   
   Если РольДоступна("ПолныеПрава") Тогда
       Если НЕ НастройкаОтчета.Пустая() И ЗначениеЗаполнено(НастройкаОтчета.СохраненныеНастройки) Тогда
           Если Вопрос("Вы действительно хотите перезаписать отчет '" + НастройкаОтчета.Наименование + "'?",РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Нет Тогда
               Об_НастройкаОтчета = НастройкаОтчета.ПолучитьОбъект();
               Об_НастройкаОтчета.СохраненныеНастройки = ЗначениеВСтрокуВнутр(СохраненныеНастройки);
               Об_НастройкаОтчета.Записать();
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
       
КонецПроцедуры // ПередСохранениемЗначений()

3. Событие

Процедура ПослеВосстановленияЗначений()

   // Если настройка восстанавливается, когда открывается форма сформровенного отчета, игнорируем
   Если НеЗаполнятьНастройкиПриОткрытии Тогда
       Возврат;
   КонецЕсли;
   
   Если ТипЗнч(СохраненныеНастройки) = Тип("Структура") Тогда
       
       ЭтотОтчет.ВосстановитьНастройкиИзСтруктуры(СохраненныеНастройки, ПоказыватьЗаголовок);
       
       // Очистим результат - он более не соответствует настройке
       ЭлементыФормы.ДокументРезультат.Очистить();
       ВысотаЗаголовка=0;
       
       ВыводЗаголовка();
       
       СформироватьЗаголовокФормы();
       
   КонецЕсли;

КонецПроцедуры // ПослеВосстановленияЗначений()
5 Злобный Фей
 
19.07.05
16:14
(4) Большой thanx! Очень полезная штука, сейчас попробую :)
6 Волшебник
 
19.07.05
16:16
процедуру ПослеВосстановленияЗначений() трогать не надо
7 Волшебник
 
19.07.05
16:18
в спр. НастройкиОтчета есть форма выбора:

у нее есть реквизит ИмяОтчета - строка

у формы есть событие ПередОткрытием

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   
   Если ЗначениеЗаполнено(ИмяОтчета) Тогда
       СправочникСписок.Отбор.ИмяОтчета.Установить(ИмяОтчета);
   КонецЕсли;
   
КонецПроцедуры
8 Shaytan
 
19.07.05
16:24
9 Волшебник
 
19.07.05
16:50
еще исправление ошибочки:

Если Вопрос("Вы действительно хотите перезаписать отчет '" + НастройкаОтчета.Наименование + "'?",РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да Тогда
10 колодина
 
19.07.05
16:52
мне очень понравилось.... здорово.
11 Злобный Фей
 
19.07.05
17:01
(1) А где они хранятся и в каком виде? Можно ли скопировать настройки одного пользователя на остальные компы?
12 Shaytan
 
19.07.05
17:29
(11) Свалены в файл. Скопировать можно,но работать не будут. Так хранятся в разрезе пользователь-БД