Справедливости ради нужно отметить, что частично настройки все-таки сохраняются платформой. Так, оформление списка сохраняется и восстанавливается автоматически. Отборы сохраняются, но в выключенном состоянии; после открытия формы нужно зайти в настройки списка и включить отборы вручную. А вот группировки и сортировки не сохраняются вовсе. А хочется чтобы сохранялись все настройки, и чтобы можно было хранить несколько вариантов настроек одного списка, а также обмениваться настройками с другими пользователями.
Итак, «ближе к телу, как говорил Мопассан».
Возможности
-
- сохранение и восстановление настройки списка. Сохраняется отбор, сортировка, группировка, условное оформление;
-
- хранение произвольного количества вариантов настроек одного списка;
-
- автоматическое восстановление одной из настроек при открытии формы;
-
- автоматическое сохранение настройки при закрытии формы (для каждой настройки можно указать сохранять автоматически или нет).
- - обмен настройками между пользователями. Каждая сохраненная настройка имеет владельца — пользователя. Сохранять можно только свои настройки, восстановить — настройки любого пользователя.
Особенности
В большинстве случаев пользователю не хочется куда-то кликать, чего-то открывать, а тем более придумывать имя настройки. Пользователю нужно лишь чтобы сделанная настройка автоматически сохранялась и при следующем открытии формы автоматически восстанавливалась. Это предусмотрено: при первом закрытии формы будет создана настройка под именем «Основная», которая будет сохраняться и восстанавливаться автоматически.
Команды формы и кнопки для сохранения/восстановления настроек добавляются программно. Это избавляет от необходимости правки формы вручную и упрощает процесс обновления форм, в которых используется данный механизм.
Установка
Для установки объедините вашу конфигурацию с конфигурацией, прикрепленной к статье, по подсистеме УправлениеНастройкамиДинамическихСписков. Объекты, включенные в подсистему, имеют префикс унс.
Для работы механизма в конфигурации должен быть справочник Пользователи, а также параметр сеанса ТекущийПользователь. Если в вашей конфигурации этих объектов нет:
-
- загрузите их из прикрепленной конфигурации;
-
- скопируйте в свою конфигурацию процедуру ОпределитьТекущегоПользователя из общего модуля УправлениеПользователями;
-
- добавьте вызов этой процедуры в предопределенную процедуру УстановкаПараметровСеанса в модуле сеанса. Примерно так:
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
ПараметрыСеанса.ТекущийПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
КонецПроцедуры
Для того, чтобы включить управление настройками для элементов конкретной формы, нужно добавить в код формы следующие методы:
// по кнопке сохранения настройки
&НаКлиенте
Процедура СохранитьНастройкуДинамическогоСписка(Команда)
унсКлиент.СохранитьНастройку(ЭтаФорма, Команда.Имя);
КонецПроцедуры
// по кнопке восстановления настройки
&НаКлиенте
Процедура ВосстановитьНастройкуДинамическогоСписка(Команда)
унсКлиент.ВосстановитьНастройку( ЭтаФорма, Команда.Имя );
КонецПроцедуры
// для восстановления настроек при открытии формы
&НаКлиенте
Процедура ПриОткрытии(Отказ)
унсКлиент.ПриОткрытииФормы( ЭтаФорма );
КонецПроцедуры
// для программного создания кнопок управления настройками
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// 1 вариант: автоматический поиск таблиц с источником данных ДинамическийСписок
унсСервер.ПриСозданииНаСервере( ЭтаФорма );
//// 2 вариант: указываем через запятую имена элементов диалога (таблиц)
//унсСервер.ПриСозданииНаСервере( ЭтаФорма, "Контрагенты,Товары" );
//
//// 3 вариант: передаем имена таблиц в виде массива
//МассивОбрабатываемыеТаблицы = Новый Массив;
//МассивОбрабатываемыеТаблицы.Добавить("Заказы");
//МассивОбрабатываемыеТаблицы.Добавить("Товары");
//унсСервер.ПриСозданииНаСервере( ЭтаФорма, МассивОбрабатываемыеТаблицы );
КонецПроцедуры
// для сохранения настроек при закрытии формы
&НаКлиенте
Процедура ПриЗакрытии()
унсКлиент.При3акрытииФормы( ЭтаФорма );
КонецПроцедуры
Технические детали
Настройки сериализуются в структуру и хранятся в справочнике в реквизите типа ХранилищеЗначения.
В методе формы ПриСозданииНаСервере вызывается одноименная процедура общего модуля унсСервер. Она принимает два параметра: первый — форма, из которой вызвана; второй (необязательный) — списки, для которых нужно включить управление настройками. Второй параметр должен быть либо строкой, в которой через запятую перечислены имена элементов формы (таблиц); либо массивом строк, в котором каждый элемент является именем элемента формы (таблицы), связанного с динамическим списком. Если второй параметр не указан, то управление настройкам будет включено для всех найденных на форме динамических списков (т. е. элементов управления с источником данных типа ДинамическийСписок).
Важный момент: имя команд сохранения и восстановления настроек состоит из трех частей, разделенных символом подчеркивания («_»): действие (сохранение либо восстановление), ИмяЭлементаУправления, ИмяРеквизита. Это нужно для того, чтобы при нажатии на кнопку сохранения/восстановления настройки система могла распознать от какого списка на форме пришло событие и какой реквизит служит источником данных этого списка. Это накладывает ограничение: имя реквизита типа ДинамическийСписок и имя элемента управления, который с ним связан, не должны содержать символов подчеркивания («_»).
В прикрепленном архиве:
-
1Cv8.dt - демонстрационная база;
-
1Cv8.cf - конфигурация для объединения;
-
readme.txt - инструкция по установке.
Другие публикации на данную тему: