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