Единицы, генерирующие денежные средства / Форма выбора / Модуль формы

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

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

	Организация = Параметры.Отбор.Владелец;

	Если Не ЗначениеЗаполнено(Организация) Тогда
		ПриЧтенииСозданииНаСервере();
	КонецЕсли;

	УстановитьУсловноеОформление();

КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)

	УстановитьОтборПоОрганизации();
	УстановитьОтборПоАрхиву();
	
КонецПроцедуры
#КонецОбласти

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

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

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()
	
		ОформлениеСписка = Список.КомпоновщикНастроек.Настройки.УсловноеОформление;
		ОформлениеСписка.Элементы.Очистить();
		
		ОформлениеСтрокАрхива = ОформлениеСписка.Элементы.Добавить();
		
		ОтборСтрокАрхива = ОформлениеСтрокАрхива.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ОтборСтрокАрхива.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Архив");
		ОтборСтрокАрхива.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ОтборСтрокАрхива.ПравоеЗначение = Истина;
		
		ОформлениеСтрокАрхива.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.LightGray);
	
КонецПроцедуры

// Получить первую организацию.
//
// Возвращаемое значение:
//	СправочникСсылка.Организации - Первая не помеченная на удаление организация
//
&НаСервере
Функция ПолучитьПервуюОрганизацию()

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

	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();

	Пока Выборка.Следующий() Цикл
		Возврат Выборка.Организация;
	КонецЦикла;

	Возврат Справочники.Организации.ПустаяСсылка();
	
КонецФункции

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

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

КонецПроцедуры

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

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