gifts2017

Система компоновки данных - сохранение настроек как в стандартном отчёте с возможностью просмотра чужих настроек

Опубликовал alem alem (alem) в раздел Программирование - Практика программирования

Не смог в интернете найти решение этой проблемы (кроме платных шаблонов), поэтому сделал сам - если считаете, что нужно что то доработать - доработайте и выложите, воспользуюсь.

В стандартном варианте настройки сохраняются на диск и иногда теряются, плюс к этому нет возможности самому настроить и отдать готовую настройку пользователю (кроме как через файл настроек, что не всегда возможно и удобно).

Для решения данной проблемы необходимо:
1. Готовый отчет, созданный с помощью СКД.
2. Создать форму отчета (автоматически сюда всё что нужно будет добавлено). Форма выглятит так же, как и форма по умолчанию, но здесь уже можно при открытии формы заполнять параметры компоновщика настроек и что-то менять на своё усмотрение.
3. Создать свои кнопки сохранения и восстановления настроек (или изменить процедуры на старых).
4. Вставить код в соответствующие процедуры и всё работает.

Процедура ДействияФормыСохранитьНастройки(Кнопка)

  Перем СохраненнаяНастройка;
  СохраненнаяНастройка = КомпоновщикНастроек.ПолучитьНастройки();
  СтруктураНастройки = Новый Структура;
  СтруктураНастройки.Вставить("Пользователь", глЗначениеПеременной("глТекущийПользователь"));
  СтруктураНастройки.Вставить("ИмяОбъекта", Строка(ЭтотОбъект.Метаданные().ПолноеИмя()));
  СтруктураНастройки.Вставить("НаименованиеНастройки", "Основная");
  СтруктураНастройки.Вставить("СохраненнаяНастройка", СохраненнаяНастройка);
  СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", Ложь);
  СтруктураНастройки.Вставить("СохранятьАвтоматически", Ложь);

  Результат = УниверсальныеМеханизмы.СохранениеНастроек(СтруктураНастройки);

КонецПроцедуры

Процедура ДействияФормыВостановитьНастройки(Кнопка)

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

  Результат = УниверсальныеМеханизмы.ВосстановлениеНастроек(СтруктураНастройки);
  Если Результат <> Неопределено Тогда
     КомпоновщикНастроек.ЗагрузитьНастройки(Результат.СохраненнаяНастройка);
  КонецЕсли;

КонецПроцедуры

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Yaroslav (maddy) 31.05.14 00:28
Чтобы не создавать свои кнопки в форме есть события ПослеВосстановленияЗначений И ПередСохранениемЗначений .

К сожалению нет "ПередВосстановлениемЗначения")
2. Вадим Миляев (PrinzOfMunchen) 04.06.14 08:54
Воспользуйтесь стандартным шаблоном СКД - "Произвольный отчет". Сохраняет настройки в справочник сохраненные настройки. Назначайте там кому хотите свои настройки.
3. mikhailovaew (mikhailovaew) 04.06.14 11:38
Не во всех типовых решениях модуль УниверсальныеМеханизмы содержит процедуры СохранениеНастроек и ВосстановлениеНастроек. В ЗУПе их, например, нет.
Светлый ум; +1 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа