v8: Настройки отчетовНастройки отчетов - это входные параметры, которые пользователь обычно указывает для формирования отчета или выполнения обработки. К таким параметрам относятся те, которые определяют структуру отчета, его внешний вид, выводимые данные. | | Автор статьи: Волшебник | Редакторы: Последняя редакция №2 от 11.01.06 | История URL: http://kb.mista.ru/article.php?id=47 | |
Настройки отчетов - это входные параметры, которые пользователь обычно указывает для формирования отчета или выполнения обработки. К таким параметрам относятся те, которые определяют структуру отчета, его внешний вид, выводимые данные. К настройкам отчета обычно НЕ относится период формирования отчета.
Настройки отчета обычно включают:
- Группировки строк и столбцов (для кросс-таблиц) с учетом их порядка и иерархии
- Показатели
- Дополнительные поля
- Отборы
- Условия сортировки
- Другие данные (флажки, поля ввода, таблицы, списки)
Возможность сохранять/восстанавливать настройки штатными средствами платформы доступна для форм отчетов и обработок, т.е. для таких форм, у которых основной реквизит имеет тип ОтчетОбъект, ОбработкаОбъект или для внешних обработок. В свойствах формы нужно устанавливить флажок "Сохранять значения" и заполнить список "Сохраняемые значения" (отметить галочками те элементы формы, значения которых надо сохранять). При сохранении и восстановлении настроек вызываются события ПередСохранениемЗначений и ПослеВосстановленияЗначений соответственно: в них можно запрограммировать свои действия.
Сохраненные настройки отчетов хранятся в профиле пользователя (в папке C:\Documents and Settings\<имя юзера>\Application Data\1C\1Cv8), поэтому к нему нужно относиться бережно, не удалять его. Настройки отчетов привязаны к базе, поэтому при пересоздании базы они пропадают.
см. также статью на ИТС: Мет. поддержка 8.0 -> Администрирование -> Сохранение параметров между сеансами. Если база файловая - или в файле 1Cv8.pfl в каталоге базы, или в файле 1Cv8.pfl в каталоге C:\Documents and Settings\<Имя пользователя>\Application Data\1C\1Cv8\<UID базы>\<UID пользователя>\
Чтобы настройки не пропадали и/или были глобальными (т.е. общими для всех пользователей этой базы), их можно сохранить в самой базе. Это можно сделать так:
1. Создать справочник "НастройкиОтчетов" с реквизитами:
- ИмяОтчета - индексирование с доп. упорядочиванием
- Комментарий
- СохраненныеНастройки - строка неогр. длины
В каждом отчете (или лучше сделать процедуры в общем модуле):
2. В форме отчета разместить поле ввода, типа "СправочникСсылка.НастройкиОтчетов"
У этого поля ввода есть события:
Процедура НастройкаОтчетаПриИзменении(Элемент)
Если НЕ НастройкаОтчета.Пустая() Тогда
Если ЗначениеЗаполнено(НастройкаОтчета.СохраненныеНастройки) Тогда
СохраненныеНастройки = ЗначениеИзСтрокиВнутр(НастройкаОтчета.СохраненныеНастройки);
ПослеВосстановленияЗначений();
ОбновитьОтчет();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура НастройкаОтчетаНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.НастройкиОтчетов.ПолучитьФормуВыбора();
ФормаВыбора.ВладелецФормы = ЭлементыФормы.НастройкаОтчета;
ФормаВыбора.ИмяОтчета = ЭтотОтчет.Метаданные().Имя;
ФормаВыбора.Открыть();
КонецПроцедуры
3. Далее нужно переписать обработчик события для формы:
Процедура ПередСохранениемЗначений(Отказ)
СохраненныеНастройки = ЭтотОтчет.СформироватьСтруктуруДляСохраненияНастроек(ПоказыватьЗаголовок);
Если РольДоступна("ПолныеПрава") Тогда
Если НЕ НастройкаОтчета.Пустая() И ЗначениеЗаполнено(НастройкаОтчета.СохраненныеНастройки) Тогда
Если Вопрос("Вы действительно хотите перезаписать отчет '" + НастройкаОтчета.Наименование + "'?",РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да Тогда
Об_НастройкаОтчета = НастройкаОтчета.ПолучитьОбъект();
Об_НастройкаОтчета.СохраненныеНастройки = ЗначениеВСтрокуВнутр(СохраненныеНастройки);
Об_НастройкаОтчета.Записать();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры // ПередСохранениемЗначений()
4. У справочника "НастройкиОтчета" создать форму выбора, у которой переписать обработчик события
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Если ЗначениеЗаполнено(ИмяОтчета) Тогда
СправочникСписок.Отбор.ИмяОтчета.Установить(ИмяОтчета);
КонецЕсли;
КонецПроцедуры
Другой вариант на эту же тему рассматривается здесь:
http://itland.ru/forum/index.php?showtopic=9347
Если отчет использует ПостроительОтчета, тогда можно использовать его метод ПолучитьНастройки(), которые возвращают значение с типом НастройкиПостроителя. Это значение можно также сохранить в базу и после восстановить методом УстановитьНастройки().
|