Значения нефинансовых показателей / Форма списка / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	СохраненныеФлагиПоказателей.Загрузить(
		ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить(
			"Документ.УстановкаЗначенийНефинансовыхПоказателей.ФормаСписка",
			"ВыбранныеПоказатели", СохраненныеФлагиПоказателей.Выгрузить(Новый Массив))
			);
			
	СохраненныеФлагиШаблонов.Загрузить(
		ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить(
			"Документ.УстановкаЗначенийНефинансовыхПоказателей.ФормаСписка",
			"ВыбранныеШаблоны", СохраненныеФлагиШаблонов.Выгрузить(Новый Массив))
			);
			
	Элементы.ПанельОтбор.ТекущаяСтраница = Элементы[
		ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить(
			"Документ.УстановкаЗначенийНефинансовыхПоказателей.ФормаСписка",
			"ВариантФильтра", "ПоПоказателям")
			];
			
	ЗаполнитьПоказателиШаблоны(Ложь);
	
	Элементы.ДеревоПоказателейПоПоказателям.Пометка = Истина;
	Элементы.ДеревоШаблоновПоШаблонам.Пометка = Истина;
	
	УстановитьФильтрыСписка();
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "Список.Дата", Элементы.Дата.Имя);
	
	// ИнтеграцияС1СДокументооборотом
	ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец ИнтеграцияС1СДокументооборотом
	
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	Если ИмяСобытия = "Запись_УстановкаЗначенийНФП" Тогда
		УстановитьФильтрыСписка();
		Элементы.Список.ТекущаяСтрока = Параметр;
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ПоПоказателям(Команда)
	
	Элементы.ПанельОтбор.ТекущаяСтраница = Элементы.ПоПоказателям;
	УстановитьФильтрыСписка(Истина,3);
	
КонецПроцедуры

&НаКлиенте
Процедура ПоШаблонам(Команда)
	
	Элементы.ПанельОтбор.ТекущаяСтраница = Элементы.ПоШаблонам;
	УстановитьФильтрыСписка(Истина,3);
	
КонецПроцедуры

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

&НаКлиенте
Процедура ДеревоШаблоновВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	ТекущиеДанные = ДеревоШаблонов.НайтиПоИдентификатору(ВыбраннаяСтрока);
	ПараметрыОткрытия = Новый Структура("Ключ", ТекущиеДанные.Ссылка);
	ОткрытьФорму("Справочник.ШаблоныВводаНефинансовыхПоказателей.Форма.ФормаЭлемента", ПараметрыОткрытия);
	
КонецПроцедуры

&НаКлиенте
Процедура ДеревоПоказателейФлагПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.ДеревоПоказателей.ТекущиеДанные;
	Если Элементы.ДеревоПоказателей.ТекущиеДанные.ЭтоГруппа Тогда
		УстановитьФлагиСтрокРекурсивно(ТекущиеДанные, ТекущиеДанные.Флаг);
	КонецЕсли;
	УстановитьФильтрыСписка(Истина,1);
	
КонецПроцедуры

&НаКлиенте
Процедура ДеревоШаблоновФлагПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.ДеревоШаблонов.ТекущиеДанные;
	Если Элементы.ДеревоШаблонов.ТекущиеДанные.ЭтоГруппа Тогда
		УстановитьФлагиСтрокРекурсивно(ТекущиеДанные, ТекущиеДанные.Флаг);
	КонецЕсли;
	УстановитьФильтрыСписка(Истина,2);
	
КонецПроцедуры

&НаКлиенте
Процедура ПериодПриИзменении(Элемент)
	
	УстановитьФильтрыСписка();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтветственныйОтборПриИзменении(Элемент)
	
	УстановитьФильтрыСписка();
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийТаблицыФормы

&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	
	Если Копирование Тогда
		Возврат;
	КонецЕсли;
	
	Если Элементы.ПанельОтбор.ТекущаяСтраница = Элементы.ПоПоказателям Тогда
		ТекущиеДанные = Элементы.ДеревоПоказателей.ТекущиеДанные;
	Иначе
		ТекущиеДанные = Элементы.ДеревоШаблонов.ТекущиеДанные;
	КонецЕсли;
	
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Если ТекущиеДанные.ЭтоГруппа Тогда
		Возврат;
	КонецЕсли;
	
	Отказ = Истина;
	
	Ссылка = ТекущиеДанные.Ссылка;
	
	ПараметрыУстановки = Новый Структура();
	Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.ШаблоныВводаНефинансовыхПоказателей") Тогда
		ЗначенияЗаполнения = Новый Структура("ШаблонВвода, ВидОперации", Ссылка, 
			ПредопределенноеЗначение("Перечисление.ВидыОперацийУстановкиЗначенийНефинансовыхПоказателей.ВводЗначенийПоШаблону"));
	Иначе
		ЗначенияЗаполнения = Новый Структура("ВидОперации",
				ПредопределенноеЗначение("Перечисление.ВидыОперацийУстановкиЗначенийНефинансовыхПоказателей.ВводЗначенияПоказателя"));
		Реквизиты = ОбщегоНазначенияУТВызовСервера.ЗначенияРеквизитовОбъекта(Ссылка, "ЗагружатьИзДругихПодсистем, ПоСценариям");
		ВводНедоступен = Реквизиты.ЗагружатьИзДругихПодсистем И Не Реквизиты.ПоСценариям;
		Если Не ВводНедоступен Тогда
			ЗначенияЗаполнения.Вставить("НефинансовыйПоказатель", Ссылка);
		КонецЕсли;
	КонецЕсли;
	
	ПараметрыУстановки.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);
	ОткрытьФорму("Документ.УстановкаЗначенийНефинансовыхПоказателей.Форма.ФормаДокумента", ПараметрыУстановки);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список);
КонецПроцедуры


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


// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

&НаКлиенте
Процедура Обновить(Команда)
	
	ЗаполнитьПоказателиШаблоны();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтметитьВсе(Команда)
	
	Если Элементы.ПанельОтбор.ТекущаяСтраница = Элементы.ПоПоказателям Тогда
		СтрокиДерева = ДеревоПоказателей.ПолучитьЭлементы();
	Иначе
		СтрокиДерева = ДеревоШаблонов.ПолучитьЭлементы();
	КонецЕсли;
	
	Для Каждого СтрокаДерева Из СтрокиДерева Цикл
		СтрокаДерева.Флаг = Истина;
		УстановитьФлагиСтрокРекурсивно(СтрокаДерева, Истина);
	КонецЦикла;
	
	Если Элементы.ПанельОтбор.ТекущаяСтраница = Элементы.ПоПоказателям Тогда
		УстановитьФильтрыСписка(Истина,1);
	Иначе
		УстановитьФильтрыСписка(Истина,2);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СнятьВсе(Команда)
	
	Если Элементы.ПанельОтбор.ТекущаяСтраница = Элементы.ПоПоказателям Тогда
		СтрокиДерева = ДеревоПоказателей.ПолучитьЭлементы();
	Иначе
		СтрокиДерева = ДеревоШаблонов.ПолучитьЭлементы();
	КонецЕсли;
	
	Для Каждого СтрокаДерева Из СтрокиДерева Цикл
		СтрокаДерева.Флаг = Ложь;
		УстановитьФлагиСтрокРекурсивно(СтрокаДерева, Ложь);
	КонецЦикла;
	
	Если Элементы.ПанельОтбор.ТекущаяСтраница = Элементы.ПоПоказателям Тогда
		УстановитьФильтрыСписка(Истина,1);
	Иначе
		УстановитьФильтрыСписка(Истина,2);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура РазвернутьВсе(Команда)
	
	Если Элементы.ПанельОтбор.ТекущаяСтраница = Элементы.ПоПоказателям Тогда
		СтрокиДерева = ДеревоПоказателей.ПолучитьЭлементы();
		ИмяЭлемента = "ДеревоПоказателей";
	Иначе
		СтрокиДерева = ДеревоШаблонов.ПолучитьЭлементы();
		ИмяЭлемента = "ДеревоШаблонов";
	КонецЕсли;
	
	Для Каждого СтрокаДерева Из СтрокиДерева Цикл
		Элементы[ИмяЭлемента].Развернуть(СтрокаДерева.ПолучитьИдентификатор(), Истина);
	КонецЦикла;
	
КонецПроцедуры

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

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура СохранитьНастройки(НомерНастройки=0)
	
	Если НомерНастройки < 3 Тогда 
		СохранитьФлаги();
	КонецЕсли;
	
	Если НомерНастройки = 0 Или НомерНастройки = 1 Тогда 
		ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить(
			"Документ.УстановкаЗначенийНефинансовыхПоказателей.ФормаСписка",
			"ВыбранныеПоказатели", СохраненныеФлагиПоказателей.Выгрузить());
	КонецЕсли;
	Если НомерНастройки = 0 Или НомерНастройки = 2 Тогда
		ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить(
			"Документ.УстановкаЗначенийНефинансовыхПоказателей.ФормаСписка",
			"ВыбранныеШаблоны", СохраненныеФлагиШаблонов.Выгрузить());
	КонецЕсли;
	Если НомерНастройки = 0 Или НомерНастройки = 3 Тогда
		ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить(
			"Документ.УстановкаЗначенийНефинансовыхПоказателей.ФормаСписка",
			"ВариантФильтра", Элементы.ПанельОтбор.ТекущаяСтраница.Имя);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьФлагиСтрокРекурсивно(ТекущиеДанные, Флаг)
	
	ПодчиненныеСтроки = ТекущиеДанные.ПолучитьЭлементы();
	Для Каждого СтрокаДерева Из ПодчиненныеСтроки Цикл
		СтрокаДерева.Флаг = Флаг;
		УстановитьФлагиСтрокРекурсивно(СтрокаДерева, Флаг);
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПоказателиШаблоны(СохранятьФлаги = Истина)
	
	Если СохранятьФлаги Тогда
		СохранитьФлаги();
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Список.Флаг,
		|	Список.Ссылка
		|ПОМЕСТИТЬ СохраненныеЗначения
		|ИЗ
		|	&Список КАК Список
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	НефинансовыеПоказателиБюджетов.Ссылка КАК Ссылка,
		|	ВЫБОР
		|		КОГДА СохраненныеЗначения.Ссылка ЕСТЬ NULL
		|				ИЛИ СохраненныеЗначения.Флаг = ИСТИНА
		|			ТОГДА ИСТИНА
		|	КОНЕЦ КАК Флаг,
		|	ВЫБОР
		|		КОГДА НефинансовыеПоказателиБюджетов.ЭтоГруппа
		|			ТОГДА 42
		|		ИНАЧЕ 50
		|	КОНЕЦ КАК ИндексКартинки,
		|	НефинансовыеПоказателиБюджетов.ЭтоГруппа
		|ИЗ
		|	Справочник.НефинансовыеПоказателиБюджетов КАК НефинансовыеПоказателиБюджетов
		|		ЛЕВОЕ СОЕДИНЕНИЕ СохраненныеЗначения КАК СохраненныеЗначения
		|		ПО (СохраненныеЗначения.Ссылка = НефинансовыеПоказателиБюджетов.Ссылка)
		|ГДЕ
		|	(НЕ НефинансовыеПоказателиБюджетов.ЗагружатьИзДругихПодсистем
		|			ИЛИ НефинансовыеПоказателиБюджетов.ЗагружатьИзДругихПодсистем ЕСТЬ NULL)
		|
		|УПОРЯДОЧИТЬ ПО
		|	Ссылка ИЕРАРХИЯ
		|АВТОУПОРЯДОЧИВАНИЕ";

	Запрос.УстановитьПараметр("Список", СохраненныеФлагиПоказателей.Выгрузить());
	
	РезультатЗапроса = Запрос.Выполнить();
	Дерево = РеквизитФормыВЗначение("ДеревоПоказателей");
	Дерево.Строки.Очистить();
	ФинансоваяОтчетностьСервер.РезультатЗапросаВДерево(РезультатЗапроса, Дерево);
	ЗначениеВРеквизитФормы(Дерево, "ДеревоПоказателей");
	
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Список.Флаг,
		|	Список.Ссылка
		|ПОМЕСТИТЬ СохраненныеЗначения
		|ИЗ
		|	&Список КАК Список
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ШаблоныВводаНефинансовыхПоказателей.Ссылка КАК Ссылка,
		|	ВЫБОР
		|		КОГДА СохраненныеЗначения.Ссылка ЕСТЬ NULL
		|				ИЛИ СохраненныеЗначения.Флаг = ИСТИНА
		|			ТОГДА ИСТИНА
		|	КОНЕЦ КАК Флаг,
		|	ВЫБОР
		|		КОГДА ШаблоныВводаНефинансовыхПоказателей.ЭтоГруппа
		|			ТОГДА 42
		|		ИНАЧЕ 50
		|	КОНЕЦ КАК ИндексКартинки,
		|	ШаблоныВводаНефинансовыхПоказателей.ЭтоГруппа
		|ИЗ
		|	Справочник.ШаблоныВводаНефинансовыхПоказателей КАК ШаблоныВводаНефинансовыхПоказателей
		|		ЛЕВОЕ СОЕДИНЕНИЕ СохраненныеЗначения КАК СохраненныеЗначения
		|		ПО (СохраненныеЗначения.Ссылка = ШаблоныВводаНефинансовыхПоказателей.Ссылка)
		|ГДЕ
		|	НЕ ШаблоныВводаНефинансовыхПоказателей.ПоказателиШаблона.Показатель.ЗагружатьИзДругихПодсистем
		|
		|УПОРЯДОЧИТЬ ПО
		|	Ссылка ИЕРАРХИЯ
		|АВТОУПОРЯДОЧИВАНИЕ";

	Запрос.УстановитьПараметр("Список", СохраненныеФлагиШаблонов.Выгрузить());
	
	РезультатЗапроса = Запрос.Выполнить();
	Дерево = РеквизитФормыВЗначение("ДеревоШаблонов");
	Дерево.Строки.Очистить();
	ФинансоваяОтчетностьСервер.РезультатЗапросаВДерево(РезультатЗапроса, Дерево);
	ЗначениеВРеквизитФормы(Дерево, "ДеревоШаблонов");
	
КонецПроцедуры

&НаСервере
Процедура ОтобратьПоказатели(Запрос, ЕстьОтбор)
	
	Если Элементы.ПанельОтбор.ТекущаяСтраница = Элементы.ПоПоказателям Тогда
		Дерево = РеквизитФормыВЗначение("ДеревоПоказателей");
		ПоПоказателям = Истина;
	Иначе
		Дерево = РеквизитФормыВЗначение("ДеревоШаблонов");
		ПоПоказателям = Ложь;
	КонецЕсли;
	
	НайденныеСтроки = Дерево.Строки.НайтиСтроки(Новый Структура("ЭтоГруппа, Флаг", Ложь, Истина), Истина);
	
	Если НайденныеСтроки.Количество() = 
		Дерево.Строки.НайтиСтроки(Новый Структура("ЭтоГруппа", Ложь), Истина).Количество() Тогда
		Возврат;
	КонецЕсли;
	
	СписокОтбор = Новый СписокЗначений;
	Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
		СписокОтбор.Добавить(НайденнаяСтрока.Ссылка);
	КонецЦикла;
	
	ЕстьОтбор = Истина;
	
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	НефинансовыеПоказателиБюджетов.Ссылка КАК Ссылка
	|ПОМЕСТИТЬ ОтобранныеПоказатели
	|ИЗ
	|	Справочник.НефинансовыеПоказателиБюджетов КАК НефинансовыеПоказателиБюджетов
	|ГДЕ
	|	(&ПоПоказателям
	|				И НефинансовыеПоказателиБюджетов.Ссылка В (&Список)
	|			ИЛИ НЕ &ПоПоказателям
	|				И НефинансовыеПоказателиБюджетов.Ссылка В
	|					(ВЫБРАТЬ РАЗЛИЧНЫЕ
	|						ПоказателейПоказателиШаблона.Показатель
	|					ИЗ
	|						Справочник.ШаблоныВводаНефинансовыхПоказателей.ПоказателиШаблона КАК ПоказателейПоказателиШаблона
	|					ГДЕ
	|						ПоказателейПоказателиШаблона.Ссылка В (&Список)))
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Ссылка
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
	|	УстановкаЗначенийНефинансовыхПоказателейЗначенияПоказателей.Ссылка
	|ПОМЕСТИТЬ РегистраторыПоПоказателям
	|ИЗ
	|	Документ.УстановкаЗначенийНефинансовыхПоказателей.ЗначенияПоказателей КАК УстановкаЗначенийНефинансовыхПоказателейЗначенияПоказателей
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОтобранныеПоказатели КАК ОтобранныеПоказатели
	|		ПО УстановкаЗначенийНефинансовыхПоказателейЗначенияПоказателей.Показатель = ОтобранныеПоказатели.Ссылка
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	УстановкаЗначенийНефинансовыхПоказателейКолонкиДокумента.Ссылка
	|ИЗ
	|	Документ.УстановкаЗначенийНефинансовыхПоказателей.КолонкиДокумента КАК УстановкаЗначенийНефинансовыхПоказателейКолонкиДокумента
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОтобранныеПоказатели КАК ОтобранныеПоказатели
	|		ПО УстановкаЗначенийНефинансовыхПоказателейКолонкиДокумента.НефинансовыйПоказатель = ОтобранныеПоказатели.Ссылка
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	РегистраторыПоПоказателям.Ссылка КАК Регистратор
	|ПОМЕСТИТЬ ОтобранныеРегистраторы
	|ИЗ
	|	РегистраторыПоПоказателям КАК РегистраторыПоПоказателям
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	РегистраторыПоПоказателям.Ссылка";
	
	Запрос.УстановитьПараметр("Список", СписокОтбор);
	Запрос.УстановитьПараметр("ПоПоказателям", ПоПоказателям);
	
	Запрос.Выполнить();
	
КонецПроцедуры

&НаСервере
Процедура ОтобратьДокументыПериода(Запрос, ЕстьОтбор)
	
	Если Не ЗначениеЗаполнено(Период) Тогда
		Возврат;
	КонецЕсли;
	
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
	|	ЗначенияНефинансовыхПоказателейСрезПоследних.Регистратор
	|ПОМЕСТИТЬ ВсеРегистраторы
	|ИЗ
	|	РегистрСведений.ЗначенияНефинансовыхПоказателей.СрезПоследних(&НачалоПериода, ) КАК ЗначенияНефинансовыхПоказателейСрезПоследних
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ЗначенияНефинансовыхПоказателей.Регистратор
	|ИЗ
	|	РегистрСведений.ЗначенияНефинансовыхПоказателей КАК ЗначенияНефинансовыхПоказателей
	|ГДЕ
	|	ЗначенияНефинансовыхПоказателей.Период МЕЖДУ &НачалоПериода И &КонецПериода
	|;
	|////////////////////////////////////////////////////////////////////////////////
	|" + ?(ЕстьОтбор, "
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ТаблицаПоказателей.Регистратор
	|ПОМЕСТИТЬ РегистраторыПоПериоду
	|ИЗ
	|	ВсеРегистраторы КАК ТаблицаПоказателей
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОтобранныеРегистраторы КАК ОтобранныеРегистраторы
	|		ПО (ОтобранныеРегистраторы.Регистратор = ТаблицаПоказателей.Регистратор)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ ОтобранныеРегистраторы
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	РегистраторыПоПериоду.Регистратор
	|ПОМЕСТИТЬ ОтобранныеРегистраторы
	|ИЗ
	|	РегистраторыПоПериоду КАК РегистраторыПоПериоду", "
	|
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ТаблицаПоказателей.Регистратор
	|ПОМЕСТИТЬ ОтобранныеРегистраторы
	|ИЗ
	|	ВсеРегистраторы КАК ТаблицаПоказателей
	|");
	
	Запрос.УстановитьПараметр("НачалоПериода", Период.ДатаНачала);
	Запрос.УстановитьПараметр("КонецПериода", Период.ДатаОкончания);
	
	Запрос.Выполнить();
	
	ЕстьОтбор = Истина;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьФильтрыСписка(СохранятьНастройки=Ложь,НомерНастройки=0)
	
	Если СохранятьНастройки Тогда
		СохранитьНастройки(НомерНастройки);
	КонецЕсли;
	
	ОтборыСписковКлиентСервер.УдалитьЭлементОтбораСписка(Список, "Ссылка");
	ОтборыСписковКлиентСервер.УдалитьЭлементОтбораСписка(Список, "Ответственный");
	
	Если ЗначениеЗаполнено(Ответственный) Тогда
		ОтборыСписковКлиентСервер.УстановитьЭлементОтбораСписка(Список, "Ответственный", Ответственный);
	КонецЕсли;
	
	ЕстьОтбор = Ложь;
	
	Менеджер = Новый МенеджерВременныхТаблиц;
	Запрос = Новый Запрос();
	Запрос.МенеджерВременныхТаблиц = Менеджер;
	
	ОтобратьПоказатели(Запрос, ЕстьОтбор);
	ОтобратьДокументыПериода(Запрос, ЕстьОтбор);
	
	Если Не ЕстьОтбор Тогда
		Возврат;
	КонецЕсли;
	
	Запрос.Текст = "ВЫБРАТЬ Регистратор ИЗ ОтобранныеРегистраторы";
	
	Выборка = Запрос.Выполнить().Выбрать();
	СписокДокументов = Новый СписокЗначений;
	Пока Выборка.Следующий() Цикл
		СписокДокументов.Добавить(Выборка.Регистратор);
	КонецЦикла;
	
	ОтборыСписковКлиентСервер.УстановитьЭлементОтбораСписка(Список, "Ссылка", СписокДокументов, ВидСравненияКомпоновкиДанных.ВСписке);
		
КонецПроцедуры

&НаСервере
Процедура СохранитьФлаги()
	
	СохраненныеФлагиШаблонов.Очистить();
	Дерево = РеквизитФормыВЗначение("ДеревоШаблонов");
	НайденныеЭлементы = Дерево.Строки.НайтиСтроки(Новый Структура("ЭтоГруппа", Ложь), Истина);
	Для Каждого СтрокаЭлемента Из НайденныеЭлементы Цикл
		НоваяСтрока = СохраненныеФлагиШаблонов.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаЭлемента);
	КонецЦикла;
	
	СохраненныеФлагиПоказателей.Очистить();
	Дерево = РеквизитФормыВЗначение("ДеревоПоказателей");
	НайденныеЭлементы = Дерево.Строки.НайтиСтроки(Новый Структура("ЭтоГруппа", Ложь), Истина);
	Для Каждого СтрокаЭлемента Из НайденныеЭлементы Цикл
		НоваяСтрока = СохраненныеФлагиПоказателей.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаЭлемента);
	КонецЦикла;
	
КонецПроцедуры

#КонецОбласти

Связанные материалы