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