Как восстановить настройки отчета 1с
Настройки отчета обычно включают:
- Группировки строк и столбцов (для кросс-таблиц) с учетом их порядка и иерархии
- Показатели
- Дополнительные поля
- Отборы
- Условия сортировки
- Другие данные (флажки, поля ввода, таблицы, списки)
Возможность сохранять/восстанавливать настройки штатными средствами платформы доступна для форм отчетов и обработок, т.е. для таких форм, у которых основной реквизит имеет тип ОтчетОбъект, ОбработкаОбъект или для внешних обработок. В свойствах формы нужно устанавливить флажок "Сохранять значения" и заполнить список "Сохраняемые значения" (отметить галочками те элементы формы, значения которых надо сохранять). При сохранении и восстановлении настроек вызываются события ПередСохранениемЗначений и ПослеВосстановленияЗначений соответственно: в них можно запрограммировать свои действия.
Сохраненные настройки отчетов хранятся в профиле пользователя (в папке C:\Documents and Settings\\Application Data\1C\1Cv8), поэтому к нему нужно относиться бережно, не удалять его. Настройки отчетов привязаны к базе, поэтому при пересоздании базы они пропадают.
см. также статью на ИТС: Мет. поддержка 8.0 -> Администрирование -> Сохранение параметров между сеансами. Если база файловая - или в файле 1Cv8.pfl в каталоге базы, или в файле 1Cv8.pfl в каталоге C:\Documents and Settings\\Application Data\1C\1Cv8\\\
Чтобы настройки не пропадали и/или были глобальными (т.е. общими для всех пользователей этой базы), их можно сохранить в самой базе. Это можно сделать так:
1. Создать справочник "НастройкиОтчетов" с реквизитами:
- ИмяОтчета - индексирование с доп. упорядочиванием
- Комментарий
- СохраненныеНастройки - строка неогр. длины
В каждом отчете (или лучше сделать процедуры в общем модуле):
2. В форме отчета разместить поле ввода, типа "СправочникСсылка.НастройкиОтчетов"
У этого поля ввода есть события:
3. Далее нужно переписать обработчик события для формы:
4. У справочника "НастройкиОтчета" создать форму выбора, у которой переписать обработчик события
1) Появилось задание создать отчёт.
2) Отчёт сделан. Пользователь зашёл. В условном оформление, например, что то изменил. И сохранил настройки.
3) Далее появилась необходимость переделать отчёт.
4) Отчёт переделан. Тех полей что были раньше возможно уж нет. Пользовательские настройки идут в конфликт с текущим отчётом и отчёт валиться.
Есть ли возможность скинуть пользовательские настройки у всех пользователей?
Спасибо
Да но тогда каждый раз как отчёт открываеш он будет сбрасывать настройки. А нужно только тогда когда отчёт изменял программист.
Всё не то.
Эти настройки насколько мне известно не в кеше храняться а на локале. и всё сбрасывать мне не надо. А только настройки конкретного отчёта. Плюс не у одного пользователя, а у всех сразу
Открыл отчёт сохранил настройку. Проверил что настройка сохранилась, открытием заново отчёта. Захожу в РС Сохранённые настройки. И там нет строки где пользователь я, для этого отчёта. Этого отчёта там вообще нет. Значит где то в другом месте сохраняется.
Отчёт на базе СКД, никакого кода дополнительного для сохранения настроек не писалось, все кнопки штатные.
Восстановить (Refresh)
Синтаксис:
Тип: СпособВосстановленияНастроекКомпоновкиДанных.
Указывает способ восстановления настроек.
Значение по умолчанию: Полное
Описание:
Восстанавливает работоспособность настроек. В случае если был изменен источник доступных настроек, часть полей, использованных в настройках, может потерять связь с доступными полями. При использовании таких настроек в компоновке данных произойдет ошибка.
Вызов метода с параметром = Полное:
снимает признак использования у всех элементов настроек, потерявших связь с доступными полями;
в случае, если при работе метода у оформляемого поля условного оформления снят признак использования и в оформляемых полях этого элемента условного оформления отсутствуют оформляемые поля с установленным свойством использования, то признак использования отключается и у самого элемента оформления;
в случае если при работе метода у элемента отбора, находящегося в группе, отключается признак использования, и в группе отсутствуют элементы с установленным признаком использования, признак использования отключается у всей группы.
И, таким образом, работоспособность настроек восстанавливается.
Вызов метода с параметром = ПроверятьДоступность:
удалит из настроек все элементы, которые содержат поля, недоступные для текущих функциональных опций и прав.
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Задача: Необходим механизм, позволяющий сохранять произвольные пользовательские данные (настройки). Настройки относятся к внешней обработке, вариант с изменением конфигурации не рассматривается. План видов характеристик трогать тоже нет желания.
В рамках заметки предложено два вариант работы с настройками пользователя.
Ваиант 1
Сохранение настроек:
ИмяНастройки = "ТЕСТ" ;
ЗначениеНастройки = Новый Структура ( "Это настройки произвольного типа, к примеру структура" , "" );
СохранитьЗначение ( ИмяНастройки , ЗначениеНастройки ) ;
- ИмяНастройки - ключ настроек, тип “строка”.
- значение - значение произвольного типа, возможность заманчивая, но не стоит слишком увлекаться и сохранять все подряд.
Восстановление настроек:
ИмяНастройки = "ТЕСТ" ;
ЗначениеНастройки = ВосстановитьЗначение ( ИмяНастройки );
Если ЗначениеНастройки = Неопределено Тогда
Сообщить ( "Нет настройки с ключем ТЕСТ!" );
КонецЕсли;
- ИмяНастройки - ключ настройки, тип “строка”
- возвращает значение произвольного типа, сохраненное ранее.Если восстановить не удалось, возвращает “Неопределено”
Плюсы
- прост в использовании
- возможно сохранить настройки произвольного типа текущего пользователя в текущей информационной базе
Минусы
Только толстый клиент
Вариант 2
Использование объекта ХранилищеОбщихНастроек. Считаю этот вариант наиболее удобным и гибким.
Объект доступен в глобальном контексте. Содержит следующие методы:
Сохранение настроек:
// ключи могут быть произвольными строками
КлючОбъекта = " MIKO " ;
КлючНастроек = "ПанельТелефонии" ;
// настройки могут быть произвольного типа
Настройки = Новый Структура ( "Это настройки произвольного типа, к примеру структура" , "" );
ИмяПользователя = ИмяПользователя ();
// имя пользователя - пользователь владелец настроек, если параметр не указать,
// то настройки будут сохранены для ТЕКУЩЕГО пользователя
ИмяПользователя = ИмяПользователя ();
ХранилищеОбщихНастроек .C охранить ( КлючОбъекта , КлючНастроек , Настройки , , ИмяПользователя );
Под пользователем понимается именно пользователь информационной базы! Пример получения имени текущего пользователя:
// получим имя
ИмяТекущегоПользователя = ИмяПользователя ();
// в типовых конфигурация используется справочник "Пользователи"
// в этом справочнике в стандартном реквизите "Код" обычно
// хранят информацию по имени пользователя, пример получения имени:
ИмяПользователя = Справочники . Пользователи . НайтиПоНаименованию ( "Администратор" ). Код ;
// обычно "Код", для этого справочника - строка фиксированной длинны, потому вероятно разумно обрезать пробелы справа:
ИмяПользователя = СокрП ( ИмяПользователя );
Восстановление настроек:
КлючОбъекта = " MIKO " ;
КлючНастроек = "ПанельТелефонии" ;
ВладелецНастроек = ИмяПользователя ();
// Для восстановления настроек необходимо воспользоваться функцией Загрузить
СтруктураНастроек = Неопределено;
Попытка
СтруктураНастроек = ХранилищеОбщихНастроек . Загрузить ( КлючОбъекта , КлючНастроек ,, ВладелецНастроек );
// если настроек нет, то будет возвращено значение "Неопределено"
Исключение
Сообщить ( "Нет прав на восстановление настроек." );
КонецПопытки;
Если СтруктураНастроек = Неопределено Тогда
Сообщить ( "Не вышло восстановить настройки!" );
КонецЕсли;
ВладелецНастроек - это имя пользователя, владельца настроек. Параметр очень важный.
Настройки других пользователей могут получать ТОЛЬКО пользователи с расширенными правами.
Необходимо право "АдминистрированиеДанных".
Пробелы справа игнорируются!
Плюсы
- Возможно работать со значениями настроек других пользователей.
- Доступность: Сервер, толстый клиент, внешнее соединение.
Получение всех ключей настроек по ключу объекта
// Пример получения всех настроек по ключу объекта
КлючОбъекта = "MIKO" ;
ВладелецНастроек = ИмяПользователя ();
Попытка
// возвращает список значений
// элементы списка - ключи настроек
СтруктураНастроек = ХранилищеОбщихНастроек . ПолучитьСписок ( КлючОбъекта , ВладелецНастроек );
Исключение
Сообщить ( "Нет прав на восстановление настроек." );
КонецПопытки;
Подведем итог
В рамках этой заметки я рассказал о двух вариантах работы с настройками пользователя. Пробуйте :).
Задача: нужно хранить настройки отчета на СКД в базе, причем у каждого поль зователя должно быть произвольное количество настроек.
Для хранения настроек отчетов в УПП существуют два метаданных. Регистр сведений "Сохраненные настройки" и одноименный справочник.
Их структура похожа, в обоих есть информация:
- О пользователе, который может использовать данную настройку
- "СохранятьАвтоматически" - сохранять настройку при закрытии
- "ИспользоватьПриОткрытии" - при открытии будет выведен отчет по настройке с данной галочкой. Галочка может стоять только у одной настройки к каждому отчету. Если ни у одной настройки галочки нет, то будет выведена типовая настройка СКД.
- Реквизит с типом "Хранилище значения" (в справочнике реквизит "ХранилищеНастроек", в регистре сведений ресурс "СохраненнаяНастройка"). В данном объекте собсвенно и хранятся настройки. Как известно хранилище значения может хранить любое значение.
В регистре сведений хранятся настройки для отчетов, построенных на универсальном отчете, в справочнике - построенных на СКД. Логично сохранять настройки в справочнике. Но после беглого взгляда возникает несколько но:
- Данный справочник содержит предопределенные элементы, имя которых совпадает с именами отчетов. Свои же отчеты туда добавить нельзя, так как в результате обновления может возникнуть коллизия, 1с добавит новые элементы и в тоже время будут существовать предопределенные элементы, добавленные пользователем.
- Справочник заточен на работу с шаблоном отчета 1с, и процедуры и функции работы с сохранением настроек выдрать из него достаточно сложно.
Регистр сведений. Как говорилось выше - в нем хранятся настройки для отчетов на универсальном отчете. Но просмотрев механизм, я решил использовать его, так как процедуры работы с сохранением и восстановлением настроек взять гораздо проще, и более того, данный механизм использован не только в отчетах, но и в типовой обработке "Универсальный журнал", код из которой, немного изменив, я и приспоспособил для решения данной задачи.
Итак. На форму надо добавить кнопки сохранения и восстановления значений настроек , добавить процедуры к ним, и написать код в процедуры "ПриОткрытии" и "ПриЗакрытии".
Процедура ДействияФормыСохранитьНастройки ( Кнопка )
Если мТекущаяНастройка <>Неопределено Тогда
СтруктураНастройки = мТекущаяНастройка ;
Иначе
СтруктураНастройки = Новый Структура ;
СтруктураНастройки . Вставить ( "ИмяОбъекта" , Строка ( ЭтотОбъект ));
СтруктураНастройки . Вставить ( "НаименованиеНастройки" , Неопределено);
СтруктураНастройки . Вставить ( "ИспользоватьПриОткрытии" , Ложь);
СтруктураНастройки . Вставить ( "СохранятьАвтоматически" , Ложь);
КонецЕсли;
СтруктураНастройки . Вставить ( "Пользователь" , глЗначениеПеременной ( "глТекущийПользователь" ));
СохраненнаяНастройка = Новый ХранилищеЗначения ( КомпоновщикНастроек . ПолучитьНастройки ());
СтруктураНастройки . Вставить ( "СохраненнаяНастройка" , СохраненнаяНастройка );
ВозвращаемаяСтруктура = УниверсальныеМеханизмы . СохранениеНастроек ( СтруктураНастройки );
Если ВозвращаемаяСтруктура <> Неопределено Тогда
мТекущаяНастройка = ВозвращаемаяСтруктура ;
Иначе
мТекущаяНастройка = СтруктураНастройки ;
КонецЕсли;
Процедура ДействияФормыВосстановитьНастройки ( Кнопка )
СтруктураНастройки = Новый Структура ;
СтруктураНастройки . Вставить ( "Пользователь" , глЗначениеПеременной ( "глТекущийПользователь" ));
СтруктураНастройки . Вставить ( "ИмяОбъекта" , Строка ( ЭтотОбъект ));
СтруктураНастройки . Вставить ( "НаименованиеНастройки" , ?( мТекущаяНастройка = Неопределено, Неопределено, мТекущаяНастройка . НаименованиеНастройки ));
ВозвращаемаяСтруктура = УниверсальныеМеханизмы . ВосстановлениеНастроек ( СтруктураНастройки );
Если ВозвращаемаяСтруктура <> Неопределено Тогда
мТекущаяНастройка = ВозвращаемаяСтруктура ;
КомпоновщикНастроек . ЗагрузитьНастройки ( мТекущаяНастройка . СохраненнаяНастройка . Получить ());
КонецЕсли;
Процедура ПриОткрытии ()
СтруктураНастройки = Новый Структура ;
СтруктураНастройки . Вставить ( "Пользователь" , глЗначениеПеременной ( "глТекущийПользователь" ));
СтруктураНастройки . Вставить ( "ИмяОбъекта" , Строка ( ЭтотОбъект ));
Если УниверсальныеМеханизмы . ПолучитьНастройкуИспользоватьПриОткрытии ( СтруктураНастройки ) Тогда
мТекущаяНастройка = СтруктураНастройки ;
КомпоновщикНастроек . ЗагрузитьНастройки ( мТекущаяНастройка . СохраненнаяНастройка . Получить ());
Иначе
//установка первоначальных настроек, например периода и т.д.
КонецЕсли;
КонецПроцедуры
Если мТекущаяНастройка <> Неопределено И мТекущаяНастройка . НаименованиеНастройки <> Неопределено
И мТекущаяНастройка . Свойство ( "СохранятьАвтоматически" ) И мТекущаяНастройка . СохранятьАвтоматически Тогда
ТекПользователь = глЗначениеПеременной ( "глТекущийПользователь" );
Если ТекПользователь <> мТекущаяНастройка . Пользователь Тогда
Ответ = Вопрос ( "Вы восстановили настройку другого пользователя, сохранить ее в
|ваших настройках?" , РежимДиалогаВопрос . ДаНет );
Если Ответ = КодВозвратаДиалога . Да Тогда
Если ВвестиСтроку ( мТекущаяНастройка . НаименованиеНастройки ,
"Укажите наименование сохраняемой настройки" ) Тогда
мТекущаяНастройка . Пользователь = ТекПользователь ;
УниверсальныеМеханизмы . СохранитьНастройку ( мТекущаяНастройка );
КонецЕсли;
КонецЕсли;
Иначе
УниверсальныеМеханизмы . СохранитьНастройку ( мТекущаяНастройка );
КонецЕсли;
КонецЕсли;
Данный, достаточно небольшой код, позволяет сохранять и восстанавливать настройки внешнего отчета на СКД.
Пошаговая инструкция сохранения настройки отчета в файл.
Шаг 1. Откройте Универсальный отчет в разделе Отчеты — Стандартные отчеты — Универсальный отчет .
Шаг 2. Вызовите команду Изменить вариант отчета : кнопка ЕЩЕ — Прочее — Изменить вариант отчета…
Шаг 3. Из формы изменения варианта настройки вызовите команду Сохранить настройки : кнопка ЕЩЕ — Сохранить настройки .
Шаг 4. В форме сохранения настройки в файл укажите:
- Имя файла — название настройки, например, Переходящие договоры;
- Тип файла — Документ XML (*.xml).
Настройки Универсального отчета сохранены в файл Переходящие договоры.xml.
Загрузить настройки
Используя сохраненную в файл настройку Универсального отчета , можно загрузить на другие компьютеры и базы данных.
Пошаговая инструкция загрузки настроек Универсального отчета из файла.
Шаг 1. Откройте Универсальный отчет в разделе Отчеты — Стандартные отчеты — Универсальный отчет .
Шаг 2. Вызовите команду Изменить вариант отчета : кнопка ЕЩЕ — Прочее — Изменить вариант отчета…
Шаг 3. Из формы изменения варианта отчета вызовите команду Загрузить настройки : кнопка ЕЩЕ — Загрузить настройки .
Шаг 4. Выберите файл настройки для загрузки.
Шаг 5. Нажмите на кнопку Завершить редактирование .
Шаг 6. По кнопке Сформировать сформируйте отчет с загруженными настройками.
Для того чтобы каждый раз не пришлось загружать настройки отчета БухЭксперт8 советует сохранить настройки отчета в 1С по кнопке Сохранить вариант отчета .
После ввода наименования настройки, например Переходящие договоры нам не придется каждый раз настраивать отчет заново. По кнопке Выбрать настройки достаточно выбрать сохраненную настройку.
См. также:
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
В ЗУП 3 реализованы следующие возможности.В данной статье мы расскажем о том, как с помощью..У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.
(7 оценок, среднее: 4,43 из 5)
Публикацию можно обсудить в комментариях ниже.
Обратите внимание!
В комментариях наши эксперты не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно в Личном кабинете
У меня вопрос, пока я еще на версии 2.5. У меня там настроен очень удобный универсальный отчет, который я бы хотела перенести в версию 3, когда туда перейду. А переходить намерена с нового года. Поможете?
Здравствуйте!
Постараемся. Опишите пожалуйста Ваш настроенный Универсальный отчет из 2.5 в разделе «Задать вопрос»: Личный кабинет (вкладка «Мои вопросы» — «Задать вопрос»). Постараемся подсказать на основе каких регистров настроить этот отчет в ЗУП 3.
Читайте также: