#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
ИнициализироватьДанныеФормы();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОбновитьЗаголовок();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыБыстрыеНастройки
&НаКлиенте
Процедура БыстрыеНастройкиПриИзменении(Элемент)
ВариантМодифицирован = Истина;
КонецПроцедуры
&НаКлиенте
Процедура БыстрыеНастройкиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элемент.ТекущийЭлемент = Элементы.БыстрыеНастройкиВидСравнения Тогда
ВыбратьВидСравнения(Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура БыстрыеНастройкиПометкаПриИзменении(Элемент)
Запись = Элементы.БыстрыеНастройки.ТекущиеДанные;
ИзменитьРежимОтображенияЭлементаНастроек(Запись);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура УстановитьПометку(Команда)
ИзменитьРежимОтображенияНастроек();
ВариантМодифицирован = Истина;
КонецПроцедуры
&НаКлиенте
Процедура СнятьПометку(Команда)
ИзменитьРежимОтображенияНастроек(Ложь);
ВариантМодифицирован = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиКРасширеннымНастройкам(Команда)
НастройкиОтчета.ФормаНастроекРасширенныйРежим = 1;
ОписаниеНастроекОтчета = ОписаниеНастроекОтчета(НастройкиОтчета);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючВарианта", КлючТекущегоВарианта);
ПараметрыФормы.Вставить("Вариант", КомпоновщикНастроек.Настройки);
ПараметрыФормы.Вставить("ПользовательскиеНастройки", КомпоновщикНастроек.ПользовательскиеНастройки);
ПараметрыФормы.Вставить("НастройкиОтчета", НастройкиОтчета);
ПараметрыФормы.Вставить("ВариантНаименование", ОписаниеНастроекОтчета.Наименование);
ПараметрыФормы.Вставить("ИмяСтраницы", "СтраницаОтборы");
ПараметрыФормы.Вставить("СброситьПользовательскиеНастройки", Истина);
ОткрытьФорму(НастройкиОтчета.ПолноеИмя + ".ФормаНастроек", ПараметрыФормы, ВладелецФормы);
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура Применить(Команда)
СохранитьПорядокЭлементовНастроек();
Результат = ОтчетыКлиентСервер.ПараметрыОбновленияФормыОтчета(
ВариантыОтчетовСлужебныйКлиентСервер.ИмяСобытияИзмененияСоставаБыстрыхНастроек());
Результат.КомпоновщикНастроекКД = КомпоновщикНастроек;
Результат.ВариантМодифицирован = ВариантМодифицирован;
Результат.СброситьПользовательскиеНастройки = ВариантМодифицирован;
Результат.ПользовательскиеНастройкиМодифицированы = ВариантМодифицирован;
Результат.Вставить("ВыводитьЗаголовкиНастроек", ВыводитьЗаголовкиНастроек);
Закрыть(Результат);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ГруппаОтбораЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораЭлемента.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораЭлемента.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("БыстрыеНастройки.ТипНастройки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Тип("ЗначениеПараметраНастроекКомпоновкиДанных");
ОтборЭлемента = ГруппаОтбораЭлемента.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("БыстрыеНастройки.ТипНастройки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Тип("ЭлементОтбораКомпоновкиДанных");
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", "");
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.БыстрыеНастройкиВидСравнения.Имя);
ЦветНедоступногоЗначения = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение;
Элемент = УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("БыстрыеНастройки.ТипНастройки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Тип("ЗначениеПараметраНастроекКомпоновкиДанных");
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветНедоступногоЗначения);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.БыстрыеНастройкиВидСравнения.Имя);
КонецПроцедуры
#Область ИнициализацияДанныхФормы
&НаСервере
Процедура ИнициализироватьДанныеФормы()
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, "НастройкиОтчета, КлючТекущегоВарианта, ВыводитьЗаголовкиНастроек");
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(НастройкиОтчета.АдресСхемы));
КомпоновщикНастроек.ЗагрузитьНастройки(Параметры.КомпоновщикНастроек.ПолучитьНастройки());
ЗаполнитьБыстрыеНастройки();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьБыстрыеНастройки()
СведенияОНастройках = ОтчетыСервер.СведенияОПользовательскихНастройках(КомпоновщикНастроек.Настройки);
Схема = ПолучитьИзВременногоХранилища(НастройкиОтчета.АдресСхемы);
ПорядокЭлементовНастроек = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
КомпоновщикНастроек.Настройки.ДополнительныеСвойства, "ПорядокЭлементовНастроек", Новый Соответствие);
ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
Для Каждого СведенияОНастройке Из СведенияОНастройках Цикл
ИдентификаторПользовательскойНастройки = СведенияОНастройке.Ключ;
ЭлементПользовательскихНастроек = ПользовательскиеНастройки.Найти(ИдентификаторПользовательскойНастройки);
Если ЭлементПользовательскихНастроек = Неопределено Тогда
Продолжить;
КонецЕсли;
Настройки = СведенияОНастройке.Значение.Настройки;
Если ТипЗнч(Настройки) <> Тип("НастройкиКомпоновкиДанных") Тогда
Настройки = КомпоновщикНастроек.Настройки;
КонецЕсли;
ОписаниеНастройки = СведенияОНастройке.Значение.ОписаниеНастройки;
ЭлементНастроек = СведенияОНастройке.Значение.ЭлементНастройки;
Если ПараметрСхемыВыключен(Схема, ЭлементНастроек) Тогда
Продолжить;
КонецЕсли;
ТипНастройки = ТипЗнч(ЭлементНастроек);
Если ТипНастройки = Тип("ОтборКомпоновкиДанных") Тогда
Продолжить;
КонецЕсли;
Запись = БыстрыеНастройки.Добавить();
Запись.Пометка = (ЭлементНастроек.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ);
Запись.Заголовок = ЗаголовокНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки, ЭлементПользовательскихНастроек);
Запись.ИдентификаторПользовательскойНастройки = ИдентификаторПользовательскойНастройки;
Запись.ТипНастройки = ТипНастройки;
Запись.КартинкаНастройки = КартинкаНастройки(ЭлементНастроек, ТипНастройки);
Если ОписаниеНастройки <> Неопределено Тогда
Запись.ТипЗначения = ОписаниеНастройки.ТипЗначения;
КонецЕсли;
УстановитьУсловиеФильтра(Запись, ОписаниеНастройки, ТипНастройки, ИдентификаторПользовательскойНастройки);
ПорядокЭлемента = ПорядокЭлементовНастроек[ИдентификаторПользовательскойНастройки];
Если ПорядокЭлемента <> Неопределено Тогда
Запись.Порядок = ПорядокЭлемента;
КонецЕсли;
КонецЦикла;
БыстрыеНастройки.Сортировать("Порядок");
НайденныеЗаписи = БыстрыеНастройки.НайтиСтроки(Новый Структура("Порядок", 0));
Если НайденныеЗаписи.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Порядок = БыстрыеНастройки[БыстрыеНастройки.Количество() - 1].Порядок;
Для Каждого Запись Из НайденныеЗаписи Цикл
Порядок = Порядок + 1;
Запись.Порядок = Порядок;
КонецЦикла;
БыстрыеНастройки.Сортировать("Порядок");
КонецПроцедуры
&НаСервере
Функция ПараметрСхемыВыключен(Схема, ЭлементНастроек)
Если ТипЗнч(ЭлементНастроек) <> Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
Возврат Ложь;
КонецЕсли;
ПараметрСхемы = Схема.Параметры.Найти(Строка(ЭлементНастроек.Параметр));
Если ПараметрСхемы = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Возврат ПараметрСхемы.ОграничениеИспользования;
КонецФункции
&НаСервере
Функция ЗаголовокНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки, ЭлементПользовательскихНастроек)
ЗначениеНастройки = ЗначениеНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки, ЭлементПользовательскихНастроек);
ПредставлениеНастройки = ПредставлениеНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки);
Если ТипЗнч(ЗначениеНастройки) = Тип("ПолеКомпоновкиДанных") Тогда
ДоступноеПоле = КомпоновщикНастроек.Настройки.Выбор.ДоступныеПоляВыбора.НайтиПоле(ЗначениеНастройки);
Если ДоступноеПоле <> Неопределено Тогда
ЗначениеНастройки = ДоступноеПоле.Заголовок;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ЗначениеНастройки)
И ЗначениеНастройки <> ПредставлениеНастройки Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 (%2)'"), ЗначениеНастройки, ПредставлениеНастройки);
КонецЕсли;
Возврат ПредставлениеНастройки;
КонецФункции
&НаСервере
Функция ЗначениеНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки, ЭлементПользовательскихНастроек)
ЗначениеНастройки = Неопределено;
ИмяПоляНастройки = Неопределено;
Если ТипНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных")
И ТипЗнч(ЭлементПользовательскихНастроек.Значение) <> Тип("Булево") Тогда
ЗначениеНастройки = ЭлементПользовательскихНастроек.Значение;
ИмяПоляНастройки = Строка(ЭлементНастроек.Параметр);
ИначеЕсли ТипНастройки = Тип("ЭлементОтбораКомпоновкиДанных")
И Не (ТипЗнч(ЭлементПользовательскихНастроек.ПравоеЗначение) = Тип("Булево")
И ЗначениеЗаполнено(ЭлементНастроек.Представление)) Тогда
ЗначениеНастройки = ЭлементПользовательскихНастроек.ПравоеЗначение;
ИмяПоляНастройки = Строка(ЭлементНастроек.ЛевоеЗначение);
Иначе
Возврат ЗначениеНастройки;
КонецЕсли;
Если ОписаниеНастройки <> Неопределено
И ОписаниеНастройки.ДоступныеЗначения <> Неопределено Тогда
ДоступноеЗначение = ОписаниеНастройки.ДоступныеЗначения.НайтиПоЗначению(ЗначениеНастройки);
Если ДоступноеЗначение <> Неопределено
И ЗначениеЗаполнено(ДоступноеЗначение.Представление) Тогда
Возврат ДоступноеЗначение.Представление;
КонецЕсли;
КонецЕсли;
ДоступныеЗначения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
КомпоновщикНастроек.Настройки.ДополнительныеСвойства, "ДоступныеЗначения");
Если ИмяПоляНастройки = Неопределено
Или ТипЗнч(ДоступныеЗначения) <> Тип("Структура") Тогда
Возврат ЗначениеНастройки;
КонецЕсли;
Попытка
ДоступныеЗначенияНастройки = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
ДоступныеЗначения, ИмяПоляНастройки, Новый СписокЗначений);
Исключение
Возврат ЗначениеНастройки;
КонецПопытки;
НайденноеЗначениеНастройки = ДоступныеЗначенияНастройки.НайтиПоЗначению(ЗначениеНастройки);
Если НайденноеЗначениеНастройки <> Неопределено
И ЗначениеЗаполнено(НайденноеЗначениеНастройки.Представление) Тогда
Возврат НайденноеЗначениеНастройки.Представление;
КонецЕсли;
Если Не ЗначениеЗаполнено(ЗначениеНастройки) Тогда
Возврат НСтр("ru = 'Не установлено'");
КонецЕсли;
Возврат Строка(ЗначениеНастройки);
КонецФункции
&НаСервере
Функция ПредставлениеНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки)
ПредставлениеНастройки = "";
Если ЗначениеЗаполнено(ЭлементНастроек.ПредставлениеПользовательскойНастройки) Тогда
ПредставлениеНастройки = ЭлементНастроек.ПредставлениеПользовательскойНастройки;
ИначеЕсли ТипНастройки = Тип("ЭлементОтбораКомпоновкиДанных")
И ЗначениеЗаполнено(ЭлементНастроек.Представление) Тогда
ПредставлениеНастройки = ЭлементНастроек.Представление;
ИначеЕсли ОписаниеНастройки <> Неопределено Тогда
ПредставлениеНастройки = ОписаниеНастройки.Заголовок;
ИначеЕсли ТипНастройки = Тип("НастройкиКомпоновкиДанных")
Или ТипНастройки = Тип("ГруппировкаКомпоновкиДанных")
Или ТипНастройки = Тип("ДиаграммаКомпоновкиДанных")
Или ТипНастройки = Тип("ГруппировкаДиаграммыКомпоновкиДанных")
Или ТипНастройки = Тип("ТаблицаКомпоновкиДанных")
Или ТипНастройки = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеЭлементаСтруктуры(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных")
Или ТипНастройки = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных")
Или ТипНастройки = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеЭлементовСтруктуры(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеВыбранныхПолей(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("ПорядокКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеСортировки(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("ЭлементПорядкаКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеЭлементаСортировки(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("УсловноеОформлениеКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеУсловногоОформления(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
ПредставлениеНастройки = ОтчетыКлиентСервер.ПредставлениеЭлементаУсловногоОформления(
ЭлементНастроек, Неопределено, "");
КонецЕсли;
Возврат ПредставлениеНастройки;
КонецФункции
&НаСервере
Функция КартинкаНастройки(ЭлементНастроек, ТипНастройки)
КартинкаНастройки = -1;
Если ТипНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных")
Или ТипНастройки = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
КартинкаНастройки = 17;
ИначеЕсли ТипНастройки = Тип("НастройкиКомпоновкиДанных") Тогда
КартинкаНастройки = 20;
ИначеЕсли ТипНастройки = Тип("ГруппировкаКомпоновкиДанных")
Или ТипНастройки = Тип("ГруппировкаДиаграммыКомпоновкиДанных")
Или ТипНастройки = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
КартинкаНастройки = 7;
ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных")
Или ТипНастройки = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных")
Или ТипНастройки = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") Тогда
КартинкаНастройки = 22;
ИначеЕсли ТипНастройки = Тип("ТаблицаКомпоновкиДанных") Тогда
КартинкаНастройки = 9;
ИначеЕсли ТипНастройки = Тип("ДиаграммаКомпоновкиДанных") Тогда
КартинкаНастройки = 11;
ИначеЕсли ТипНастройки = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
КартинкаНастройки = 18;
ИначеЕсли ТипНастройки = Тип("ПорядокКомпоновкиДанных")
Или ТипНастройки = Тип("ЭлементПорядкаКомпоновкиДанных") Тогда
КартинкаНастройки = 19;
ИначеЕсли ТипНастройки = Тип("УсловноеОформлениеКомпоновкиДанных")
Или ТипНастройки = Тип("ЭлементУсловногоОформления") Тогда
КартинкаНастройки = 20;
КонецЕсли;
Возврат КартинкаНастройки;
КонецФункции
&НаСервере
Процедура УстановитьУсловиеФильтра(Запись, ОписаниеНастройки, ТипНастройки, ИдентификаторПользовательскойНастройки)
Если ТипНастройки <> Тип("ЗначениеПараметраНастроекКомпоновкиДанных")
И ТипНастройки <> Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Возврат;
КонецЕсли;
ЭлементПользовательскихНастроек = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(
ИдентификаторПользовательскойНастройки);
Если ТипНастройки = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Запись.ВидСравнения = ЭлементПользовательскихНастроек.ВидСравнения;
КонецЕсли;
Если ОписаниеНастройки = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
Если ОписаниеНастройки.ДоступенСписокЗначений Тогда
Запись.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
Иначе
Запись.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
КонецЕсли;
Возврат;
КонецЕсли;
ДоступныеУсловия = Запись.ДоступныеВидыСравнения;
Для Каждого Элемент Из ОписаниеНастройки.ДоступныеВидыСравнения Цикл
ЗаполнитьЗначенияСвойств(ДоступныеУсловия.Добавить(), Элемент);
КонецЦикла;
Если ДоступныеУсловия.НайтиПоЗначению(Запись.ВидСравнения) = Неопределено Тогда
Запись.ВидСравнения = ДоступныеУсловия[0].Значение;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИзменениеРежимаОтображения
&НаКлиенте
Процедура ИзменитьРежимОтображенияНастроек(Пометка = Истина)
Для Каждого Запись Из БыстрыеНастройки Цикл
Запись.Пометка = Пометка;
ИзменитьРежимОтображенияЭлементаНастроек(Запись);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьРежимОтображенияЭлементаНастроек(Запись)
Настройки = КомпоновщикНастроек.ПользовательскиеНастройки;
ЭлементыНастроек = Настройки.ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки(
Запись.ИдентификаторПользовательскойНастройки);
ЭлементНастроек = ЭлементыНастроек[0];
Если Запись.Пометка Тогда
ЭлементНастроек.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
Иначе
ЭлементНастроек.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
КонецЕсли;
ОбновитьЗаголовок();
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОбновитьЗаголовок()
КоличествоБыстрыхНастроек = 0;
Для Каждого Запись Из БыстрыеНастройки Цикл
Если Запись.Пометка Тогда
КоличествоБыстрыхНастроек = КоличествоБыстрыхНастроек + 1;
КонецЕсли;
КонецЦикла;
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Быстрые настройки (%1 из %2)'"), КоличествоБыстрыхНастроек, БыстрыеНастройки.Количество());
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьВидСравнения(Элемент, СтандартнаяОбработка)
Запись = Элементы.БыстрыеНастройки.ТекущиеДанные;
Если Запись = Неопределено
Или Запись.ТипНастройки <> Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ПараметрыВыбора = Новый Структура("ИдентификаторЗаписи", Элементы.БыстрыеНастройки.ТекущаяСтрока);
ПоказатьВыборИзМеню(
Новый ОписаниеОповещения("ПослеВыбораВидаСравнения", ЭтотОбъект, ПараметрыВыбора),
Запись.ДоступныеВидыСравнения,
Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораВидаСравнения(ВыбранныйВидСравнения, ДополнительныеПараметры) Экспорт
Если ТипЗнч(ВыбранныйВидСравнения) <> Тип("ЭлементСпискаЗначений") Тогда
Возврат;
КонецЕсли;
Запись = БыстрыеНастройки.НайтиПоИдентификатору(ДополнительныеПараметры.ИдентификаторЗаписи);
Запись.ВидСравнения = ВыбранныйВидСравнения.Значение;
Настройки = КомпоновщикНастроек.ПользовательскиеНастройки;
ЭлементыНастроек = Настройки.ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки(
Запись.ИдентификаторПользовательскойНастройки);
ЭлементНастроек = ЭлементыНастроек[0];
ЭлементНастроек.ВидСравнения = ВыбранныйВидСравнения.Значение;
ВариантМодифицирован = Истина;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеНастроекОтчета(Описание)
Возврат Описание;
КонецФункции
&НаКлиенте
Процедура СохранитьПорядокЭлементовНастроек()
ПорядокЭлементовНастроек = Новый Соответствие;
Порядок = 0;
Для Каждого Запись Из БыстрыеНастройки Цикл
Порядок = Порядок + 1;
Запись.Порядок = Порядок;
ПорядокЭлементовНастроек.Вставить(Запись.ИдентификаторПользовательскойНастройки, Порядок);
КонецЦикла;
КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ПорядокЭлементовНастроек", ПорядокЭлементовНастроек);
КонецПроцедуры
#КонецОбласти