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

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

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

	ГоловнаяОрганизация = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВладелецПриОткрытии, "ГоловнаяОрганизация");

	СписокОрганизаций.Добавить(ВладелецПриОткрытии);

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

	ЭлементВладелец.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораОрганизации);

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

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

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

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

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

#КонецЕсли

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