Банковские счета / Форма выбора / Модуль формы

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

	// ИнтеграцияС1СДокументооборотом
	ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец ИнтеграцияС1СДокументооборотом
	
	ДенежныеСредстваСерверЛокализация.ДобавитьКомандыСозданияБанковскихСчетов(ЭтотОбъект);
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура ПоказыватьЗакрытыеСчета(Команда)

	Элементы.ФормаПоказыватьЗакрытыеСчета.Пометка = Не ОтображатьЗакрытыеСчета;
	ОтображатьЗакрытыеСчета = Не ОтображатьЗакрытыеСчета;
	УстановитьОграничениеСписка();

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

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

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

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

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

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

&НаСервере
Процедура УстановитьОграничениеСписка()

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

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

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

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

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

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