gifts2017

Доработка регистра сведений «Сохраненные настройки».

Опубликовал Дмитрий Бухалов (Re:аниматор) в раздел Программирование - Практика программирования

Сортировка и отбор настроек пользователей в отчете.

Доработка регистра сведений «Сохраненные настройки». Сортировка и отбор настроек пользователей в отчете.

В отчетах на базе «Универсального отчета» есть возможность выбора настройки других пользователей, но при большом кол-ве пользователей и настроек возникла сложность в навигации.

 

Предлагаю не большие доработки для устранения данной проблемы.

Добавление в форму списка настроек командной панели с функциями:

- Отбор по текущему значению

- Отключить отбор

- Упорядочить по возрастанию

- Упорядочить по убыванию

 

 

 

 

Регистр сведений «Сохраненные настройки» форма «ФормаУправленияНастройками»

Добавляем командную панель

 

 

Процедура КоманднаяПанельТабличноеПолеСписокНастроекОтборПоТекущемуЗначению(Кнопка)
	
	ТекКолонка = ЭлементыФормы.ТабличноеПолеСписокНастроек.ТекущаяКолонка;
	ТекЗначение = ЭлементыФормы.ТабличноеПолеСписокНастроек.ТекущиеДанные[ТекКолонка.Имя]; 
	
	КопияТЗ = Новый ТаблицаЗначений;
	КопияТЗ = СписокНастроек.Скопировать();
	
	КопияТЗ.Очистить();
	
	Отбор = Новый Структура();
	Отбор.Вставить(ТекКолонка.Имя,ТекЗначение);
	МассивЭлементов = СписокНастроек.НайтиСтроки(Отбор);
	
	Для Каждого ЭлементМассива Из МассивЭлементов Цикл 
		НоваяСтрока = КопияТЗ.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока,ЭлементМассива);
	КонецЦикла; 
	
	СписокНастроек = КопияТЗ.Скопировать();
	Заголовок = "Восстановление настройки - " + ТекЗначение;
	ЭлементыФормы.КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.ОтключитьОтбор.Доступность = Истина;	
КонецПроцедуры

 

 

Процедура КоманднаяПанельТабличноеПолеСписокНастроекОтключитьОтбор(Кнопка)
	
	ЗаполнитьНастройки();	
	Заголовок = "Восстановление настройки";
	ЭлементыФормы.КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.ОтключитьОтбор.Доступность = Ложь;	
КонецПроцедуры

Процедура КоманднаяПанельТабличноеПолеСписокНастроекУпорядочитьПоВозрастанию(Кнопка)
	
	ТекКолонка = ЭлементыФормы.ТабличноеПолеСписокНастроек.ТекущаяКолонка;
	СписокНастроек.Сортировать(ТекКолонка.Имя + " ВОЗР");
	
КонецПроцедуры

Процедура КоманднаяПанельТабличноеПолеСписокНастроекУпорядочитьПоУбыванию(Кнопка)
	
	ТекКолонка = ЭлементыФормы.ТабличноеПолеСписокНастроек.ТекущаяКолонка;
	СписокНастроек.Сортировать(ТекКолонка.Имя + " УБЫВ");
	
КонецПроцедуры

Изменения в других процедурах

Процедура УправлениеОтображениемФормы()
	
	Если мВосстановлениеНастройки = Истина Тогда
		
		Заголовок = "Восстановление настройки";
		ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Удалить(ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ДействиеДобавить);
		ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Удалить(ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ДействиеСкопировать);
		ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Удалить(ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ДействиеИзменить);
		ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Удалить(ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ДействиеУдалить);
		ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Удалить(ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ДействиеЗакончитьРедактирование);
		ЭлементыФормы.ТабличноеПолеСписокНастроек.ТолькоПросмотр = Истина;
		ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ДействиеНастройкиВсехПользователей.Пометка = НастройкиВсехПользователей;
		
		ЭлементыФормы.КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.ОтключитьОтбор.Доступность = Ложь; //RR 05.08.2013
				
	Иначе
		
		Заголовок = "Сохранение настройки";
		ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Удалить(ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ДействиеНастройкиВсехПользователей);
		
		//RR 05.08.2013
		КоманднаяПанельТабличноеПолеСписокНастроек = ЭлементыФормы.КоманднаяПанельТабличноеПолеСписокНастроек;
		Если КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.Найти("ОтборПоТекущемуЗначению") <> Неопределено Тогда
			КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.Удалить(КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.ОтборПоТекущемуЗначению);
		КонецЕсли;
		Если КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.Найти("ОтключитьОтбор") <> Неопределено Тогда
			КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.Удалить(КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.ОтключитьОтбор);
		КонецЕсли;
		
		Если КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.Найти("УпорядочитьПоВозрастанию") <> Неопределено Тогда
			КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.Удалить(КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.УпорядочитьПоВозрастанию);
		КонецЕсли;
		Если КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.Найти("УпорядочитьПоУбыванию") <> Неопределено Тогда
			КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.Удалить(КоманднаяПанельТабличноеПолеСписокНастроек.Кнопки.УпорядочитьПоУбыванию);
		КонецЕсли;
		//RR 05.08.2013
		
	КонецЕсли;
	
КонецПроцедуры // УправлениеОтображениемФормы()

 

Результат:

 

 

 

 

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Форма "ФормаУправленияНастройками" с процедурами и функциями
.epf 12,25Kb
10.09.15
2
.epf 12,25Kb 2 Скачать

См. также

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

Комментарии

1. Андрей Акулов (DrAku1a) 16.09.15 10:48
Не заморачиваясь - сделал фильтр. Сделай ещё поиск поля в универсальном отчете - будешь вообще крут ))
Прикрепленные файлы:
2. Николай ~ ~ (kuzyara) 24.10.16 17:25
Ещё бы сортировку по ФИО по-умолчанию. При отладке обработок по чужим настройкам задолбался каждый раз перетыкивать.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа