Подсистема сохранения и восстановления настроек динамических списков


В 1с 8.2 существует прекрасный интерфейсный механизм — настройка динамического списка. Пользователь может в режиме предприятия настроить внешний вид списка по вкусу: задать отборы и группировки, установить сортировку, выделить определенные строки или ячейки при помощи условного оформления. Но есть один неприятный момент: при закрытии формы настройки не сохраняются. Предлагаемая подсистема является одним из вариантов решения этой проблемы.

 

Справедливости ради нужно отметить, что частично настройки все-таки сохраняются платформой. Так, оформление списка сохраняется и восстанавливается автоматически. Отборы сохраняются, но в выключенном состоянии; после открытия формы нужно зайти в настройки списка и включить отборы вручную. А вот группировки и сортировки не сохраняются вовсе. А хочется чтобы сохранялись все настройки, и чтобы можно было хранить несколько вариантов настроек одного списка, а также обмениваться настройками с другими пользователями.

Итак, «ближе к телу, как говорил Мопассан».

 

Возможности

  • - сохранение и восстановление настройки списка. Сохраняется отбор, сортировка, группировка, условное оформление;

  • - хранение произвольного количества вариантов настроек одного списка;

  • - автоматическое восстановление одной из настроек при открытии формы;

  • - автоматическое сохранение настройки при закрытии формы (для каждой настройки можно указать сохранять автоматически или нет).

  • - обмен настройками между пользователями. Каждая сохраненная настройка имеет владельца — пользователя. Сохранять можно только свои настройки, восстановить — настройки любого пользователя.
  • возможности подсистемы

Особенности


В большинстве случаев пользователю не хочется куда-то кликать, чего-то открывать, а тем более придумывать имя настройки. Пользователю нужно лишь чтобы сделанная настройка автоматически сохранялась и при следующем открытии формы автоматически восстанавливалась. Это предусмотрено: при первом закрытии формы будет создана настройка под именем «Основная», которая будет сохраняться и восстанавливаться автоматически.

Команды формы и кнопки для сохранения/восстановления настроек добавляются программно. Это избавляет от необходимости правки формы вручную и упрощает процесс обновления форм, в которых используется данный механизм.

 

Установка


Для установки объедините вашу конфигурацию с конфигурацией, прикрепленной к статье, по подсистеме УправлениеНастройкамиДинамическихСписков. Объекты, включенные в подсистему, имеют префикс унс.

установка

Для работы механизма в конфигурации должен быть справочник Пользователи, а также параметр сеанса ТекущийПользователь. Если в вашей конфигурации этих объектов нет:

  • - загрузите их из прикрепленной конфигурации;

  • - скопируйте в свою конфигурацию процедуру ОпределитьТекущегоПользователя из общего модуля УправлениеПользователями;

  • - добавьте вызов этой процедуры в предопределенную процедуру УстановкаПараметровСеанса в модуле сеанса. Примерно так:

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
   
ПараметрыСеанса.ТекущийПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
КонецПроцедуры

Для того, чтобы включить управление настройками для элементов конкретной формы, нужно добавить в код формы следующие методы:

// по кнопке сохранения настройки
&НаКлиенте
Процедура СохранитьНастройкуДинамическогоСписка(Команда)
   
унсКлиент.СохранитьНастройку(ЭтаФорма, Команда.Имя);
КонецПроцедуры

// по кнопке восстановления настройки
&НаКлиенте
Процедура ВосстановитьНастройкуДинамическогоСписка(Команда)
   
унсКлиент.ВосстановитьНастройку( ЭтаФорма, Команда.Имя );
КонецПроцедуры

// для восстановления настроек при открытии формы
&НаКлиенте
Процедура ПриОткрытии(Отказ)
   
унсКлиент.ПриОткрытииФормы( ЭтаФорма );
КонецПроцедуры

// для программного создания кнопок управления настройками
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

   
// 1 вариант: автоматический поиск таблиц с источником данных ДинамическийСписок
   
унсСервер.ПриСозданииНаСервере( ЭтаФорма );

   
//// 2 вариант: указываем через запятую имена элементов диалога (таблиц)
    //унсСервер.ПриСозданииНаСервере( ЭтаФорма, "Контрагенты,Товары" );
    //
    //// 3 вариант: передаем имена таблиц в виде массива
    //МассивОбрабатываемыеТаблицы = Новый Массив;
    //МассивОбрабатываемыеТаблицы.Добавить("Заказы");
    //МассивОбрабатываемыеТаблицы.Добавить("Товары");
    //унсСервер.ПриСозданииНаСервере( ЭтаФорма, МассивОбрабатываемыеТаблицы );

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

// для сохранения настроек при закрытии формы
&НаКлиенте
Процедура ПриЗакрытии()
   
унсКлиент.При3акрытииФормы( ЭтаФорма );
КонецПроцедуры


Технические детали


Настройки сериализуются в структуру и хранятся в справочнике в реквизите типа ХранилищеЗначения.

В методе формы ПриСозданииНаСервере вызывается одноименная процедура общего модуля унсСервер. Она принимает два параметра: первый — форма, из которой вызвана; второй (необязательный) — списки, для которых нужно включить управление настройками. Второй параметр должен быть либо строкой, в которой через запятую перечислены имена элементов формы (таблиц); либо массивом строк, в котором каждый элемент является именем элемента формы (таблицы), связанного с динамическим списком. Если второй параметр не указан, то управление настройкам будет включено для всех найденных на форме динамических списков (т. е. элементов управления с источником данных типа ДинамическийСписок).

Важный момент: имя команд сохранения и восстановления настроек состоит из трех частей, разделенных символом подчеркивания («_»): действие (сохранение либо восстановление), ИмяЭлементаУправления, ИмяРеквизита. Это нужно для того, чтобы при нажатии на кнопку сохранения/восстановления настройки система могла распознать от какого списка на форме пришло событие и какой реквизит служит источником данных этого списка. Это накладывает ограничение: имя реквизита типа ДинамическийСписок и имя элемента управления, который с ним связан, не должны содержать символов подчеркивания («_»).

 

В прикрепленном архиве:

  1. 1Cv8.dt - демонстрационная база;

  2. 1Cv8.cf - конфигурация для объединения;

  3. readme.txt - инструкция по установке.

     

     

Другие публикации на данную тему:

http://avprog.ru/public/88010/

 

Файлы обработки:

-