Банковские счета организаций / Форма элемента / Модуль формы

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	УстановитьУсловноеОформление();

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
	
	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);

	Элементы.ГруппаОшибкаВНомереСчета.Видимость = Ложь;
	Элементы.СтраницыРеквизитовБанка.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
	Элементы.СтраницыРеквизитовБанкаДляРасчетов.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;

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

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

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

	ПриЧтенииСозданииНаСервере();
	
	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	
	МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
	
	МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ)
	
	Если Объект.РучноеИзменениеРеквизитовБанка Тогда
		ЗаполнитьЗначенияСвойств(Объект, ЭтотОбъект, ДенежныеСредстваКлиентСервер.РеквизитыБанка(Истина));
	КонецЕсли;
	
	Объект.НаименованиеБанкаМеждународное = НаименованиеБанкаМеждународное;
	
	Если Объект.РучноеИзменениеРеквизитовБанкаДляРасчетов Тогда
		ЗаполнитьЗначенияСвойств(Объект, ЭтотОбъект, ДенежныеСредстваКлиентСервер.РеквизитыБанка(Истина, Истина));
	КонецЕсли;
	
	Объект.НаименованиеБанкаДляРасчетовМеждународное = НаименованиеБанкаДляРасчетовМеждународное;
	
	Если ИспользоватьТекстКорреспондента Тогда
		Объект.ТекстКорреспондента = ТекстКорреспондента;
	Иначе
		Объект.ТекстКорреспондента = "";
	КонецЕсли;
	
	Если ПустаяСтрока(Объект.Наименование) Тогда
		Объект.Наименование = СформироватьАвтоНаименование(ЭтотОбъект);
	КонецЕсли;
	
	Если Не ИспользуетсяБанкДляРасчетов Тогда
		Объект.РучноеИзменениеРеквизитовБанкаДляРасчетов = Ложь;
	КонецЕсли;
	
	Если Модифицированность Тогда
		
		ДубльБанковскогоСчета = НайтиДубльБанковскогоСчета(Объект.Ссылка, Объект.НомерСчета, Объект.Владелец, Объект.ВалютаДенежныхСредств, Объект.Банк);
		Если ДубльБанковскогоСчета <> Неопределено Тогда
			
			ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru='Найден банковский счет ""%1"", с аналогичным номером в указанном банке.
					|Продолжить запись текущего элемента?'"),
				ДубльБанковскогоСчета);
				
			ОписаниеОповещения = Новый ОписаниеОповещения("ПроверкаДублейЗавершение", ЭтотОбъект);
			ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
			
			Отказ = Истина;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверкаДублейЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = КодВозвратаДиалога.Да Тогда
		Модифицированность = Ложь;
		Записать();
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ДекорацияПодключениеBankFeedsНажатие(Элемент)
	
	
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура ДекорацияДобавитьПодключениеBankFeedsНажатие(Элемент)
	
		
	Возврат;
		
КонецПроцедуры

&НаКлиенте
Процедура ВладелецПриИзменении(Элемент)
	
	ВладелецПриИзмененииНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура НомерСчетаПриИзменении(Элемент)
	
	НомерСчетаПриИзмененииСервер();
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект);
	
	
КонецПроцедуры

&НаКлиенте
Процедура ЭтоIBANПриИзменении(Элемент)
	
	Элементы.ГруппаОшибкаВНомереСчета.Видимость = Ложь;
	
	ЭтоИностранныйБанк = Истина;
	
	//++ Локализация
	ЭтоИностранныйБанк = НЕ ЭтоБанкРФ();
	//-- Локализация
	
	Если Объект.ЭтоIBAN Тогда
		ПроверитьIBAN(ЭтотОбъект)
	КонецЕсли;
	
	Если ЭтоИностранныйБанк <> Объект.ИностранныйБанк Тогда
		Объект.ИностранныйБанк = ЭтоИностранныйБанк;
		ИностранныйБанкПриИзменении();
	КонецЕсли;

	НастроитьЭлементыФормы(ЭтотОбъект, , РеквизитыФормы(ЭтотОбъект));
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект);

	ЗаполнитьСписокВыбораТипаСчета(Элементы.ТипСчета.СписокВыбора);
	
	//++ Локализация
	ЗаполнитьСписокВыбораТипаСчетаЛокализация();
	//-- Локализация


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

&НаКлиенте
Процедура БанкПриИзменении(Элемент)
	
	ПриИзмененииБанка();
	
КонецПроцедуры

&НаКлиенте
Процедура СпособУказанияБанкаПриИзменении(Элемент)
	
	Объект.РучноеИзменениеРеквизитовБанка = СпособУказанияБанка = "РучноеЗаполнениеРеквизитов";
	ПриИзмененииРучноеИзменениеРеквизитовБанка()
	
КонецПроцедуры

&НаКлиенте
Процедура БанкВГруппеПриИзменении(Элемент)
	
	ПриИзмененииБанка();
	
КонецПроцедуры

&НаКлиенте
Процедура БИКБанкаПриИзменении(Элемент)
	
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект)

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

&НаКлиенте
Процедура КоррСчетБанкаПриИзменении(Элемент)
	
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект)

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

&НаКлиенте
Процедура СчетВБанкеДляРасчетовПриИзменении(Элемент)

	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект)

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

&НаКлиенте
Процедура НаименованиеБанкаПриИзменении(Элемент)
	
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект);
	СформироватьАвтоНаименование(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура СВИФТБанкаПриИзменении(Элемент)
	
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект)

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

&НаКлиенте
Процедура НаименованиеБанкаМеждународноеПриИзменении(Элемент)

	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект);

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

&НаКлиенте
Процедура ВалютаДенежныхСредствПриИзменении(Элемент)
	
	ВалютаДенежныхСредствПриИзмененииКлиент();
	ВалютаДенежныхСредствПриИзмененииСервер();
	
	
КонецПроцедуры

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

&НаКлиенте
Процедура БанкДляРасчетовПриИзменении(Элемент)
	
	ПриИзмененииБанкаДляРасчетов();
	
КонецПроцедуры

&НаКлиенте
Процедура СпособУказанияБанкаДляРасчетовПриИзменении(Элемент)
	
	Объект.РучноеИзменениеРеквизитовБанкаДляРасчетов = СпособУказанияБанкаДляРасчетов = "РучноеЗаполнениеРеквизитов";
	ПриИзмененииРучноеИзменениеРеквизитовБанкаДляРасчетов();
	
	
КонецПроцедуры

&НаКлиенте
Процедура БанкДляРасчетовВГруппеПриИзменении(Элемент)
	
	ПриИзмененииБанкаДляРасчетов();
	
КонецПроцедуры

&НаКлиенте
Процедура БИКБанкаДляРасчетовПриИзменении(Элемент)

	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанкаДляРасчетов(ЭтотОбъект)

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

&НаКлиенте
Процедура НаименованиеБанкаДляРасчетовПриИзменении(Элемент)
	
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанкаДляРасчетов(ЭтотОбъект)

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

&НаКлиенте
Процедура СВИФТБанкаДляРасчетовПриИзменении(Элемент)
	
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанкаДляРасчетов(ЭтотОбъект)

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

&НаКлиенте
Процедура НаименованиеБанкаДляРасчетовМеждународноеПриИзменении(Элемент)
	
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанкаДляРасчетов(ЭтотОбъект)

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

&НаКлиенте
Процедура ТипСчетаПриИзменении(Элемент)
	
	ЗаполнитьСписокВыбораФорматаОбмена(Объект.ТипСчета, Элементы.ФорматОбмена.СписокВыбора);
	СформироватьАвтоНаименование(ЭтотОбъект);
	//++ Локализация
	УстановитьПараметрыОбменаСБанком(Объект);
	//-- Локализация
	НастроитьЗависимыеЭлементыФормы();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ФайлЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ВыборФайла(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура ФайлВыгрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ВыборФайла(Элемент, Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ФайлЗагрузкиОткрытие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ОткрытьФайлДляПросмотра(Элемент, НСтр("ru='Файл загрузки'"));
	
КонецПроцедуры

&НаКлиенте
Процедура ФайлВыгрузкиОткрытие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ОткрытьФайлДляПросмотра(Элемент, НСтр("ru='Файл выгрузки'"));
	
КонецПроцедуры

&НаКлиенте
Процедура РежимОбменаВключенПриИзменении(Элемент)
	
	СтрокаВключенОбменСБанком = ?(Объект.ОбменСБанкомВключен, НСтр("ru = 'включен'"), НСтр("ru = 'не включен'"));
	
	НастроитьЗависимыеЭлементыФормы(Элемент.Имя);
	
КонецПроцедуры

&НаКлиенте
Процедура ФорматОбменаПриИзменении(Элемент)
	
	Если Объект.ФорматОбмена = ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.ClientBankExchange1c")
		ИЛИ Объект.ФорматОбмена = ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.MT940") Тогда
		Объект.Кодировка = "Windows"
	Иначе
		Объект.Кодировка = "UTF-8"
	КонецЕсли;
	ДенежныеСредстваКлиентСервер.НастроитьЭлементыФормы(ЭтотОбъект, "ФорматОбмена", РеквизитыФормы(ЭтотОбъект));

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

&НаКлиенте
Процедура ДекорацияДобавитьСоглашениеЭДНажатие(Элемент)
	
	//++ Локализация
	НеДобавлять = Ложь;
	
	Если Не ЗначениеЗаполнено(Объект.Владелец) Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(
			НСтр("ru='Не указана организация'"), , "Владелец", "Объект", НеДобавлять); 
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(Объект.Банк) Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(
			НСтр("ru='Не выбран банк из справочника'"), , "Банк", "Объект", НеДобавлять); 
	КонецЕсли;
	
	Если НеДобавлять Тогда
		Возврат;
	КонецЕсли;
	
	Обработчик = Новый ОписаниеОповещения("ПослеСозданияНастройкиОбмена", ЭтотОбъект);
	ОбменСБанкамиКлиент.ОткрытьСоздатьНастройкуОбмена(
		Объект.Владелец, Объект.Банк, Объект.НомерСчета, Обработчик);
	//-- Локализация
	Возврат;
	
КонецПроцедуры

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

&НаКлиенте
Процедура ВвестиТранзитныйСчетНажатие(Элемент)
	
	//++ Локализация
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		ТекстСообщения = НСтр("ru = 'Счет будет записан перед вводом транзитного счета.'");
	ИначеЕсли Модифицированность Тогда
		ТекстСообщения = НСтр("ru = 'Счет изменен и будет записан перед вводом транзитного счета.'");
	КонецЕсли;
	
	Если Не ПустаяСтрока(ТекстСообщения) Тогда
		ТекстВопроса = СтрШаблон(НСтр("ru = '%1
							|Продолжить?'"), ТекстСообщения);
	Иначе
		
		ОткрытьФормуВводаТранзитногоСчета();
		Возврат;
		
	КонецЕсли;
	
	ОповещениеОЗавершении = Новый ОписаниеОповещения("ПередВводомТранзитногоСчета", ЭтотОбъект);
	Кнопки = РежимДиалогаВопрос.ДаНет;
	ПоказатьВопрос(ОповещениеОЗавершении, ТекстВопроса, Кнопки);
	//-- Локализация
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура РежимОбменаПрямойОбменПриИзменении(Элемент)
	
	//++ Локализация
	РежимОбменаПриИзменении("ИспользоватьПрямойОбменСБанком");
	//-- Локализация
	
	
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура РежимОбменаBankFeedsПриИзменении(Элемент)


	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтдельныйСчетГОЗПриИзменении(Элемент)
	
	//++ Локализация


	//-- Локализация
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура ГосударственныйКонтрактПриИзменении(Элемент)
	
	//++ Локализация


	//-- Локализация
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура ТекстДиректБанкГоризонтальноОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	//++ Локализация

	// ЭлектронноеВзаимодействие.ОбменСБанками
	ОбменСБанкамиКлиент.ОбработкаНавигационнойСсылкиРекламыДиректБанк(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
	// Конец ЭлектронноеВзаимодействие.ОбменСБанками

	//-- Локализация

	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура РежимОбменаКлиентБанкаПриИзменении(Элемент)
	
	//++ Локализация
	РежимОбменаПриИзменении("ИспользоватьОбменСБанком");
	//-- Локализация
	
	
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура СтранаБанкаПриИзменении(Элемент)
	
	Объект.СтранаБанка = СтранаБанка;
	
	//++ Локализация
	УстановитьПризнакИностранныйБанк();
	//-- Локализация
	
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект);
	НастроитьЗависимыеЭлементыФормы(Элемент.Имя);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура НаправлениеДеятельностиКазначейскогоСчетаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	//++ Локализация


	//-- Локализация
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура СчетПоГосконтрактуПриИзменении(Элемент)

	//++ Локализация


	//-- Локализация
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура НаправлениеДеятельностиКазначейскогоСчетаПриИзменении(Элемент)
	
	//++ Локализация


	//-- Локализация
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура НомерЛицевогоСчетаПриИзменении(Элемент)
	
	//++ Локализация


	//-- Локализация
	Возврат;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
	
	ОбщегоНазначенияУТКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтаФорма);
	
КонецПроцедуры

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

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

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

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

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




&НаСервере
Процедура УстановитьВерсиюФормата()
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) И НЕ ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
		Объект.ФорматОбмена = Перечисления.ФорматОбменаСБанком.ISO20022;
		Объект.Кодировка = "UTF-8"
	КонецЕсли;
	
	ФорматыОбмена = Новый Массив;
	КлиентБанкЛокализация.ПриЗаполненииФорматовОбмена(ФорматыОбмена);
	Для Каждого Элемент Из ФорматыОбмена Цикл
		Элементы.ФорматОбмена.СписокВыбора.Добавить(Элемент)
	КонецЦикла
	
КонецПроцедуры

// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

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

// СтандартныеПодсистемы.ПодключаемыеКоманды

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

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

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

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

// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

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

#Область ПриИзмененииРеквизитов

&НаКлиенте
Процедура ВалютаДенежныхСредствПриИзмененииКлиент()
	
	ВалютныйСчет = (ЗначениеЗаполнено(Объект.ВалютаДенежныхСредств) И Объект.ВалютаДенежныхСредств <> ВалютаРеглУчета);
	
КонецПроцедуры

&НаСервере
Процедура ВалютаДенежныхСредствПриИзмененииСервер()
	
	СформироватьАвтоНаименование(ЭтотОбъект);
	
	НастроитьЗависимыеЭлементыФормыНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура ВладелецПриИзмененииНаСервере()
	
	СформироватьАвтоНаименование(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ИностранныйБанкПриИзменении()
	
	ИностранныйБанкПриИзмененииНаСервере();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ПриИзмененииРучноеИзменениеРеквизитовБанка()
	
	РеквизитыФормы = РеквизитыФормы(ЭтотОбъект);
	Если Объект.РучноеИзменениеРеквизитовБанка Тогда
		Элементы.Банк.ПодсказкаВвода = НСтр("ru = '<реквизиты банка введены вручную>'");
		Объект.Банк = Неопределено;
	Иначе
		Элементы.Банк.ПодсказкаВвода = "";
	КонецЕсли;

	РучноеИзменениеРеквизитовБанкаПриИзмененииНаСервере();
	
	НастроитьЭлементыФормы(ЭтотОбъект, , РеквизитыФормы);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриИзмененииРучноеИзменениеРеквизитовБанкаДляРасчетов()
	
	РеквизитыФормы = РеквизитыФормы(ЭтотОбъект);
	Если Объект.РучноеИзменениеРеквизитовБанкаДляРасчетов Тогда
		Элементы.БанкДляРасчетов.ПодсказкаВвода = НСтр("ru = '<реквизиты банка введены вручную>'");
		Объект.БанкДляРасчетов = Неопределено;
	Иначе
		Элементы.БанкДляРасчетов.ПодсказкаВвода = "";
	КонецЕсли;

	РучноеИзменениеРеквизитовБанкаДляРасчетовПриИзмененииНаСервере();
	
	НастроитьЭлементыФормы(ЭтотОбъект, , РеквизитыФормы);
	
КонецПроцедуры

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

	Если Форма.Объект.РучноеИзменениеРеквизитовБанка Тогда
		Форма.Элементы.СтраницыРеквизитовБанка.ТекущаяСтраница = Форма.Элементы.РучныеРеквизитыБанка;
	Иначе
		Форма.Элементы.СтраницыРеквизитовБанка.ТекущаяСтраница = Форма.Элементы.РеквизитыБанкаПоСсылке;
	КонецЕсли;
	
	Если Форма.Объект.РучноеИзменениеРеквизитовБанкаДляРасчетов Тогда
		Форма.Элементы.СтраницыРеквизитовБанкаДляРасчетов.ТекущаяСтраница = Форма.Элементы.РучныеРеквизитыБанкаДляРасчетов;
	Иначе
		Форма.Элементы.СтраницыРеквизитовБанкаДляРасчетов.ТекущаяСтраница = Форма.Элементы.РеквизитыБанкаДляРасчетовПоСсылке;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура РучноеИзменениеРеквизитовБанкаПриИзмененииНаСервере()
	
	Если Объект.РучноеИзменениеРеквизитовБанка Тогда
		ЗаполнитьРеквизитыБанкаПоБанку("Банк", Справочники.КлассификаторБанков.ПустаяСсылка(), Истина);
	КонецЕсли;
	
	НастроитьЗависимыеЭлементыФормыНаСервере();
	
	Если НЕ Объект.РучноеИзменениеРеквизитовБанка Тогда
		ЗаполнитьРеквизитыБанкаПоБИК("Банк", БИКБанка, Истина)
	КонецЕсли;
	//++ Локализация
	РучноеИзменениеРеквизитовБанкаПриИзмененииНаСервереЛокализация();
	//-- Локализация
	БанкПриИзмененииНаСервере();
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект);
	
КонецПроцедуры

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

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

	ЗаполнитьСписокВыбораТипаСчета(Элементы.ТипСчета.СписокВыбора);
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ОткрытьФайлДляПросмотраЗавершениеПомещения(ПомещенныеФайлы, ДополнительныеПараметры) Экспорт
	
	Если ПомещенныеФайлы <> Неопределено
		И ПомещенныеФайлы.Количество() > 0 Тогда
		
		ОписаниеФайлов = ПомещенныеФайлы.Получить(0);
		АдресФайла     = ОписаниеФайлов.Хранение;
		
		Если АдресФайла = Неопределено Тогда
			Возврат;
		КонецЕсли;
		
		Текст = ПолучитьТекстовыйДокументИзВременногоХранилищаФайла(АдресФайла, Объект.Кодировка);
		Текст.Показать(ДополнительныеПараметры["Заголовок"], ДополнительныеПараметры["Элемент"].ВыделенныйТекст);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Функция ПолучитьТекстовыйДокументИзВременногоХранилищаФайла(АдресФайла, Кодировка)
	
	#Если ВебКлиент ИЛИ МобильныйКлиент Тогда
		Возврат "";
	#Иначе
		Если Объект.ФорматОбмена = ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.ISO20022") Тогда
			ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
		ИначеЕсли Объект.ФорматОбмена = ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.ClientBankExchange1c") Тогда
			ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt");
		Иначе
			ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
		КонецЕсли;
		ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресФайла); // ДвоичныеДанные
		ДвоичныеДанныеФайла.Записать(ИмяВременногоФайла);
		Текст = Новый ТекстовыйДокумент();
		Если Кодировка = "DOS" Тогда
			Кодир = "cp866";
		ИначеЕсли Кодировка = "Windows" Тогда
			Кодир = "windows-1251";
		Иначе
			Кодир = "UTF-8";
		КонецЕсли;
		
		Текст.Прочитать(ИмяВременногоФайла, Кодир);
		НачатьУдалениеФайлов(Новый ОписаниеОповещения("ПослеУдаленияФайлов", ЭтотОбъект), ИмяВременногоФайла);
		
		Возврат Текст;
	#КонецЕсли
	
КонецФункции

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

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

&НаКлиенте
Процедура ВыборФайлаПродолжение(РасширениеПодключено, ДополнительныеПараметры) Экспорт
	
	Если РасширениеПодключено Тогда
	
		Элемент = ДополнительныеПараметры["Элемент"];
		Загрузка = ДополнительныеПараметры.Загрузка;
		
		ИспользоватьКаталог = ?(Загрузка, Объект.ИспользоватьКаталогЗагрузки, Объект.ИспользоватьКаталогВыгрузки);
		РежимДиалога = ?(ИспользоватьКаталог, РежимДиалогаВыбораФайла.ВыборКаталога, РежимДиалогаВыбораФайла.Открытие);
		
		ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалога);
		
		Если Не ИспользоватьКаталог Тогда
		
			Если Объект.ФорматОбмена = ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.ISO20022") Тогда
				ДиалогВыбораФайла.Фильтр = НСтр("ru='XML файл (*.xml)|*.xml'");
				ДиалогВыбораФайла.Расширение = "xml";
				ИмяФайлаЗагрузки = "camt.xml"
			ИначеЕсли Объект.ФорматОбмена = ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.ClientBankExchange1c") Тогда
				ДиалогВыбораФайла.Фильтр = НСтр("ru='Текстовый файл (*.txt)|*.txt'");
				ДиалогВыбораФайла.Расширение = "txt";
				ИмяФайлаЗагрузки = "kl_to_1c.txt"
			Иначе
				ДиалогВыбораФайла.Фильтр = НСтр("ru='Любой файл (*.*)|*.*'");
			КонецЕсли;
			ДиалогВыбораФайла.ПредварительныйПросмотр = Ложь;
			ДиалогВыбораФайла.ИндексФильтра = 0;
			ДиалогВыбораФайла.ПроверятьСуществованиеФайла = Ложь;
			
		КонецЕсли;
		
		Если Загрузка Тогда
			ДиалогВыбораФайла.Заголовок = СтрШаблон(НСтр("ru='Выберите %1 для загрузки данных из программы банка'"),
											?(ИспользоватьКаталог, НСтр("ru = 'каталог'"), НСтр("ru = 'файл'")));
			Если Не ИспользоватьКаталог Тогда
				ДиалогВыбораФайла.ПолноеИмяФайла =
					?(ПустаяСтрока(Элемент.ТекстРедактирования), ИмяФайлаЗагрузки, Элемент.ТекстРедактирования);
			КонецЕсли;
		Иначе
			ДиалогВыбораФайла.Заголовок = СтрШаблон(НСтр("ru='Выберите %1 для выгрузки данных в программу банка'"),
											?(ИспользоватьКаталог, НСтр("ru = 'каталог'"), НСтр("ru = 'файл'")));
			Если Не ИспользоватьКаталог Тогда
				НазваниеФайла = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");
				ДиалогВыбораФайла.ПолноеИмяФайла = ?(ПустаяСтрока(Элемент.ТекстРедактирования), НазваниеФайла
					+ ?(ЗначениеЗаполнено(ДиалогВыбораФайла.Расширение), "." + ДиалогВыбораФайла.Расширение, ""),
					Элемент.ТекстРедактирования);
			КонецЕсли;
		КонецЕсли;
		
		ОписаниеОповещения = Новый ОписаниеОповещения(
			"ВыборФайлаЗавершение",
			ЭтотОбъект,
			Новый Структура("Загрузка", Загрузка));
		
		ДиалогВыбораФайла.Показать(ОписаниеОповещения);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВыборФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	Если ВыбранныеФайлы = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Модифицированность = Истина;
	
	Если ДополнительныеПараметры.Загрузка Тогда
		Объект.ФайлЗагрузки = ВыбранныеФайлы[0];
	Иначе
		Объект.ФайлВыгрузки = ВыбранныеФайлы[0];
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ЗаполнитьРеквизитыБанкаПоБИК(ТипБанка, Знач БИК = "", ПеренестиЗначенияРеквизитов = Ложь)
	
	НашлиПоБИК   = Ложь;
	ЗаписьОБанке = Неопределено;
	
	ИменаРеквизитов = ДенежныеСредстваКлиентСервер.РеквизитыБанка(Истина, ТипБанка <> "Банк");
	ДенежныеСредстваКлиентСервер.ОчиститьБанковскиеРеквизитыНаФорме(ЭтотОбъект, ИменаРеквизитов);
	
	Если ЗначениеЗаполнено(БИК) Тогда
		
		РаботаСБанками.ПолучитьДанныеКлассификатора(БИК,, ЗаписьОБанке);
		
		Если ЗначениеЗаполнено(ЗаписьОБанке) Тогда
			ЗаполнитьРеквизитыБанкаПоБанку(ТипБанка, ЗаписьОБанке, ПеренестиЗначенияРеквизитов);
			Объект[ТипБанка] = ЗаписьОБанке;
			НашлиПоБИК = Истина;
		КонецЕсли;
	КонецЕсли;
	
	Возврат НашлиПоБИК;
	
КонецФункции

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

&НаКлиентеНаСервереБезКонтекста
Процедура ПроверитьIBAN(Форма)

	Если ПустаяСтрока(Форма.Объект.НомерСчета) Тогда
		Возврат;
	КонецЕсли;
	
	Если ДенежныеСредстваКлиентСервер.ПравильнаяДлинаIBAN(Форма.Объект.НомерСчета) Тогда
		Если ДенежныеСредстваКлиентСервер.ВерныйКонтрольныйКлючIBAN(Форма.Объект.НомерСчета) Тогда
			Если Форма.Объект.РучноеИзменениеРеквизитовБанка Тогда
				SWIFT = Форма.Объект.СВИФТБанка;
			ИначеЕсли ЗначениеЗаполнено(Форма.Объект.Банк) Тогда
				SWIFT = ДенежныеСредстваВызовСервера.SWIFT(Форма.Объект.Банк);
			КонецЕсли;
			
			Если ЗначениеЗаполнено(SWIFT) Тогда
				Если ДенежныеСредстваКлиентСервер.НомерСчетаСоответствуетБанку(Форма.Объект.НомерСчета, SWIFT) Тогда
					Форма.Элементы.ГруппаОшибкаВНомереСчета.Видимость = Ложь;
				Иначе
					Форма.Элементы.ОшибкаВНомереСчета.Заголовок = НСтр("ru = 'IBAN не соответствует банку'");
					Форма.Элементы.ГруппаОшибкаВНомереСчета.Видимость = Истина;
				КонецЕсли;
			КонецЕсли;
		Иначе
			Форма.Элементы.ОшибкаВНомереСчета.Заголовок = НСтр("ru = 'Номер счета введен некорректно'");
			Форма.Элементы.ГруппаОшибкаВНомереСчета.Видимость = Истина;
		КонецЕсли
	Иначе
		Форма.Элементы.ОшибкаВНомереСчета.Заголовок = НСтр("ru = 'Номер счета не соответствует формату IBAN'");
		Форма.Элементы.ГруппаОшибкаВНомереСчета.Видимость = Истина;
	КонецЕсли;
	
КонецПроцедуры

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

#Область Прочее

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
	
	НастройкиПолейФормы = Справочники.БанковскиеСчетаОрганизаций.НастройкиПолейФормы();
	ЗначениеВРеквизитФормы(НастройкиПолейФормы, "НастройкиПолей");
	ЗависимостиПолейФормы = ДенежныеСредстваСервер.ЗависимостиПолейФормы(НастройкиПолейФормы);
	ЗначениеВРеквизитФормы(ЗависимостиПолейФормы, "ЗависимостиПолей");
	
	ИспользоватьНесколькоОрганизаций       = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций");
	ИспользоватьНесколькоВалют             = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВалют");
	МеждународныеРеквизитыБанковскихСчетов = ПолучитьФункциональнуюОпцию("МеждународныеРеквизитыБанковскихСчетов");
	НациональныеРеквизитыБанковскихСчетов  = ПолучитьФункциональнуюОпцию("НациональныеРеквизитыБанковскихСчетов");
	ИспользоватьОбменСБанкамиBankFeeds   =   ПолучитьФункциональнуюОпцию("ИспользоватьОбменBankFeeds");
	
	ВалютаРеглУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Владелец);
	ВалютныйСчет = (ЗначениеЗаполнено(Объект.ВалютаДенежныхСредств) И Объект.ВалютаДенежныхСредств <> ВалютаРеглУчета);
	
	НомерСчета = Объект.НомерСчета;
	
	Если ЗначениеЗаполнено(Объект.Ссылка) ИЛИ ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
		Если МеждународныеРеквизитыБанковскихСчетов И Объект.ЭтоIBAN Тогда
			ПроверитьIBAN(ЭтотОбъект);
		КонецЕсли;
		Если Объект.РучноеИзменениеРеквизитовБанка Тогда
			Элементы.Банк.ПодсказкаВвода = НСтр("ru = '<реквизиты банка введены вручную>'");
		КонецЕсли;
		Если Объект.РучноеИзменениеРеквизитовБанкаДляРасчетов Тогда
			Элементы.БанкДляРасчетов.ПодсказкаВвода = НСтр("ru = '<реквизиты банка введены вручную>'");
		КонецЕсли;
	Иначе
		Если МеждународныеРеквизитыБанковскихСчетов Тогда
			Объект.ИностранныйБанк = Истина;
		Иначе
			Объект.СтранаБанка = ОсновнаяСтрана;
		КонецЕсли;
		Если Не ЗначениеЗаполнено(Объект.Банк) Тогда
			Объект.РучноеИзменениеРеквизитовБанка = Истина;
		КонецЕсли;
		Если Не ЗначениеЗаполнено(Объект.АдресБанкаДляРасчетов) Тогда
			Объект.РучноеИзменениеРеквизитовБанкаДляРасчетов = Истина;
		КонецЕсли;
	КонецЕсли;
	
	Если Объект.ИспользоватьПрямойОбменСБанком Тогда
		РежимОбмена = 1;
	ИначеЕсли Объект.ИспользоватьОбменСБанком Тогда
		РежимОбмена = 2;   
	ИначеЕсли Объект.ИспользоватьОбменСБанкомBankFeeds Тогда
		РежимОбмена = 3;
	Иначе
		РежимОбмена = 0;
	КонецЕсли;
	
	СтрокаВключенОбменСБанком = ?(Объект.ОбменСБанкомВключен, НСтр("ru = 'включен'"), НСтр("ru = 'не включен'"));
	СпособУказанияБанка = ?(Объект.РучноеИзменениеРеквизитовБанка, "РучноеЗаполнениеРеквизитов", "ВыборИзСправочника");
	СпособУказанияБанкаДляРасчетов = ?(Объект.РучноеИзменениеРеквизитовБанкаДляРасчетов, "РучноеЗаполнениеРеквизитов",
										"ВыборИзСправочника");
	
	ЗаполнитьРеквизитыБанка();
	
	УправлениеЭлементамиФормы();

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

&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСписокВыбораТипаСчета(СписокВыбораТипаСчета)
	
	СписокВыбораТипаСчета.Очистить();
	СписокВыбораТипаСчета.Добавить(ПредопределенноеЗначение("Перечисление.ТипыБанковскихСчетов.Расчетный"));
	СписокВыбораТипаСчета.Добавить(ПредопределенноеЗначение("Перечисление.ТипыБанковскихСчетов.Депозитный"));
	СписокВыбораТипаСчета.Добавить(ПредопределенноеЗначение("Перечисление.ТипыБанковскихСчетов.Прочий"));
	
КонецПроцедуры

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

&НаКлиентеНаСервереБезКонтекста
Функция СформироватьАвтоНаименование(Форма)
	
	Форма.Элементы.Наименование.СписокВыбора.Очистить();
	
	Если Форма.Объект.РучноеИзменениеРеквизитовБанка Тогда
		
		Если ЗначениеЗаполнено(Форма.НаименованиеБанка) Тогда
			ШаблонНаименования = НСтр("ru = '%1 в %2, %3'");
			СтрокаНаименования = СтрШаблон(ШаблонНаименования, Прав(СокрЛП(Форма.Объект.НомерСчета), 4),
				Строка(Форма.НаименованиеБанка), СокрЛП(Форма.Объект.Владелец));
		Иначе
			ШаблонНаименования = НСтр("ru = '%1, %2'");
			СтрокаНаименования = СтрШаблон(
				ШаблонНаименования, Прав(СокрЛП(Форма.Объект.НомерСчета), 4), СокрЛП(Форма.Объект.Владелец));
		КонецЕсли;
		
		СтрокаНаименования = Лев(СтрокаНаименования, 150);
		
		Если Форма.Объект.ТипСчета = ПредопределенноеЗначение("Перечисление.ТипыБанковскихСчетов.Транзитный") Тогда
			СтрокаНаименования = НСтр("ru = 'Транзитный'") + " " + СтрокаНаименования;
		КонецЕсли;
		Форма.Элементы.Наименование.СписокВыбора.Добавить(СтрокаНаименования);
		
		СтрокаНаименования = ?(ЗначениеЗаполнено(Форма.НаименованиеБанка), Строка(Форма.НаименованиеБанка), "")
			+ ", " + СокрЛП(Форма.Объект.Владелец) + " (" + Строка(Форма.Объект.ВалютаДенежныхСредств) + ")";
		СтрокаНаименования = Лев(СтрокаНаименования, 150);
		
		Если Форма.Объект.ТипСчета = ПредопределенноеЗначение("Перечисление.ТипыБанковскихСчетов.Транзитный") Тогда
			СтрокаНаименования = НСтр("ru = 'Транзитный'") + " " + СтрокаНаименования;
		КонецЕсли;
		Форма.Элементы.Наименование.СписокВыбора.Добавить(СтрокаНаименования);
	Иначе
		
		Если ЗначениеЗаполнено(Форма.Объект.Банк) Тогда
			ШаблонНаименования = НСтр("ru = '%1 в %2, %3'");
			СтрокаНаименования = СтрШаблон(ШаблонНаименования, Прав(СокрЛП(Форма.Объект.НомерСчета), 4),
				Строка(Форма.Объект.Банк), СокрЛП(Форма.Объект.Владелец));
		Иначе
			ШаблонНаименования = НСтр("ru = '%1, %2'");
			СтрокаНаименования = СтрШаблон(
				ШаблонНаименования, Прав(СокрЛП(Форма.Объект.НомерСчета), 4), СокрЛП(Форма.Объект.Владелец));
		КонецЕсли;

		СтрокаНаименования = Лев(СтрокаНаименования, 150);
		
		Если Форма.Объект.ТипСчета = ПредопределенноеЗначение("Перечисление.ТипыБанковскихСчетов.Транзитный") Тогда
			СтрокаНаименования = НСтр("ru = 'Транзитный'") + " " + СтрокаНаименования;
		КонецЕсли;
		Форма.Элементы.Наименование.СписокВыбора.Добавить(СтрокаНаименования);
		
		СтрокаНаименования = ?(ЗначениеЗаполнено(Форма.Объект.Банк), Строка(Форма.Объект.Банк), "")
			+ ", " + СокрЛП(Форма.Объект.Владелец) + " (" + Строка(Форма.Объект.ВалютаДенежныхСредств) + ")";
		СтрокаНаименования = Лев(СтрокаНаименования, 150);
		
		Если Форма.Объект.ТипСчета = ПредопределенноеЗначение("Перечисление.ТипыБанковскихСчетов.Транзитный") Тогда
			СтрокаНаименования = НСтр("ru = 'Транзитный'") + " " + СтрокаНаименования;
		КонецЕсли;
		Форма.Элементы.Наименование.СписокВыбора.Добавить(СтрокаНаименования);
	КонецЕсли;
	
	Возврат СтрокаНаименования;
	
КонецФункции

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

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

&НаСервере
Процедура БанкПриИзмененииНаСервере()
	
	Объект.ФайлВыгрузки = Справочники.БанковскиеСчетаОрганизаций.ФайлВыгрузкиПоУмолчанию(Объект.Банк);
	Объект.ФайлЗагрузки = Справочники.БанковскиеСчетаОрганизаций.ФайлЗагрузкиПоУмолчанию(Объект.Банк);
	
КонецПроцедуры

&НаКлиенте
Процедура НастроитьЗависимыеЭлементыФормы(ИзмененныйРеквизит = "")
	
	НастроитьЭлементыФормы(ЭтотОбъект, ИзмененныйРеквизит, РеквизитыФормы(ЭтотОбъект));
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ВывестиПредупреждениеОПрекращенииДеятельностиБанка()

	ТекстИнформации = СведенияОбОстановкеДеятельностиБанка(Объект.Банк);
	
	Если ТекстИнформации <> "" Тогда
		ПоказатьПредупреждение(, ТекстИнформации);
	КонецЕсли;

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

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

	СтрокаСведений = "";
	ДействующийБанк = Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Банк, "ДеятельностьПрекращена");
	
	Если Не ДействующийБанк Тогда
		СтрокаСведений = РаботаСБанками.ПояснениеНедействительногоБанка(Банк);
	КонецЕсли;
	
	Возврат СтрокаСведений;

КонецФункции

&НаСервере
Процедура УправлениеЭлементамиФормы()

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

&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСписокВыбораФорматаОбмена(ТипСчета, СписокВыбора)

	СписокВыбора.Очистить();
	
	СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.ClientBankExchange1c"));
	СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.ISO20022"));
	СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.MT940"));
	
	Если ТипСчета = ПредопределенноеЗначение("Перечисление.ТипыБанковскихСчетов.Казначейский") Тогда
		СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.ФедеральноеКазначействоРФ"));
	КонецЕсли;

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

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

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

//++ Локализация
#Область Локализация

#Область Локализация_ПодключаемыеОбработчикиСобытийФормы

&НаСервере
Процедура Подключаемый_ПриСозданииНаСервереЛокализация(Отказ, СтандартнаяОбработка)
	
	ПриСозданииНаСервере(Отказ, СтандартнаяОбработка);
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		Если НЕ ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
			Объект.ФорматОбмена = Перечисления.ФорматОбменаСБанком.ClientBankExchange1c;
			Объект.Кодировка = "Windows";
		КонецЕсли;
		ПриЧтенииСозданииНаСервереЛокализация();
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ПриЧтенииНаСервереЛокализация(ТекущийОбъект)
	
	ПриЧтенииНаСервере(ТекущийОбъект);
	
	ПриЧтенииСозданииНаСервереЛокализация();
	
КонецПроцедуры

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

&НаСервере
Процедура Подключаемый_ОбработкаПроверкиЗаполненияНаСервереЛокализация(Отказ, ПроверяемыеРеквизиты)
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты);
	
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПередЗаписьюЛокализация(Отказ)

	ПередЗаписью(Отказ);
	
	Если Модифицированность Тогда
		
		ТекстОшибки = "";
		
		Если Не Объект.ИностранныйБанк
			И Не ДенежныеСредстваКлиентСерверЛокализация.ПроверитьКорректностьНомераСчета(НомерСчета, , ТекстОшибки) Тогда
			ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , "НомерСчета", , Отказ);
		КонецЕсли;
		
	КонецЕсли;

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

&НаСервере
Процедура Подключаемый_ПриЗаписиНаСервереЛокализация(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	
КонецПроцедуры

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

#Область Локализация_ПодключаемыеОбработчикиСобытийЭлементовФормы

&НаКлиенте
Процедура Подключаемый_НомерСчетаПриИзмененииЛокализация(Элемент)
	
	Элементы.ГруппаОшибкаВНомереСчета.Видимость = Ложь;
	НомерСчетаПриИзмененииСерверЛокализация();
	ДенежныеСредстваКлиентСервер.ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект);


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

&НаКлиенте
Процедура Подключаемый_БанкПриИзмененииЛокализация(Элемент)
	
	БанкПриИзмененииЛокализация();

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

&НаКлиенте
Процедура Подключаемый_БанкВГруппеПриИзмененииЛокализация(Элемент)
	
	БанкПриИзмененииЛокализация();

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

&НаКлиенте
Процедура БанкПриИзмененииЛокализация()
	
	Элементы.ГруппаОшибкаВНомереСчета.Видимость = Ложь;
	
	ПриИзмененииБанка();
	БанкПриИзмененииСерверЛокализация();
	
	НастроитьЗависимыеЭлементыФормы();
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура Подключаемый_НомерСчетаОкончаниеВводаТекстаЛокализация(
	Элемент,
	Текст,
	ДанныеВыбора,
	Параметры,
	СтандартнаяОбработка)
	
	ТекстОшибки = "";
	ОчиститьСообщения();
	Валютный = (Объект.ВалютаДенежныхСредств <> ВалютаРеглУчета);
	
	Текст = ВРег(СтрЗаменить(СтрЗаменить(СокрЛП(Текст), " ", ""), ".", ""));
	
	Если Не ПустаяСтрока(Текст) И Не Объект.ИностранныйБанк Тогда
		Если Не МеждународныеРеквизитыБанковскихСчетов Тогда
			ДенежныеСредстваКлиентСерверЛокализация.ПроверитьКорректностьНомераСчета(Текст, Валютный, ТекстОшибки);
		КонецЕсли;
		Если Объект.ТипСчета = ПредопределенноеЗначение("Перечисление.ТипыБанковскихСчетов.Казначейский")
			И Не ДенежныеСредстваКлиентСерверЛокализация.ЭтоКазначейскийСчет(Текст) Тогда
			ТекстОшибки = ?(ТекстОшибки <> "", ТекстОшибки + Символы.ПС, "") 
							+ НСтр("ru = 'Номер счета не соответствует формату казначейского счета'");
		КонецЕсли;
		Если ТекстОшибки <> "" Тогда
			ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , "НомерСчета");
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВладелецПриИзмененииЛокализация(Элемент)
	
	ВладелецПриИзмененииСерверЛокализация();
	
КонецПроцедуры

&НаСервере
Процедура ВладелецПриИзмененииСерверЛокализация()
	
	ВладелецПриИзмененииНаСервере();
	
	Если Не ИспользоватьТекстКорреспондента Тогда
		ЗаполнитьТекстКорреспондента();
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура РучноеИзменениеРеквизитовБанкаПриИзмененииНаСервереЛокализация()
	
	Если Объект.РучноеИзменениеРеквизитовБанка Тогда
		РежимОбмена = 2;
		Объект.ИспользоватьПрямойОбменСБанком = Ложь;
		Объект.ИспользоватьОбменСБанком = Истина;
		Объект.ИспользоватьОбменСБанкомBankFeeds = Ложь;
	КонецЕсли;
	
	ОбновитьЭлементыФормыИСоглашениеЭД();
	НастроитьЗависимыеЭлементыФормыНаСервере("ИспользоватьОбменСБанком");
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура Подключаемый_ТипСчетаПриИзмененииЛокализация(Элемент)
	
	ТипСчетаПриИзменении(Элемент);
	ПроверитьНомерСчета();
	
	
КонецПроцедуры

&НаСервере
Процедура БанкПриИзмененииСерверЛокализация()

	УстановитьТипКазначейскогоСчета();
	ОбновитьЭлементыФормыИСоглашениеЭД();
	ПроверитьНомерСчета();

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

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

#Область Локализация_ОбработчикиСобытийЭлементовФормы


&НаКлиенте
Процедура ПередВводомТранзитногоСчета(РезультатВопроса, ДополнительныеПараметры) Экспорт

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

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

&НаКлиенте
Процедура ПослеВводаТранзитногоСчета(Результат, ДополнительныеПараметры) Экспорт
	
	ОбновитьНадписьТранзитныйСчет();
	
КонецПроцедуры

&НаКлиенте
Процедура РежимОбменаПриИзменении(ИмяЭлемента)
	
	Объект.ИспользоватьПрямойОбменСБанком = (РежимОбмена = 1);
	Объект.ИспользоватьОбменСБанком = (РежимОбмена = 2);
	
	Если Не ЗначениеЗаполнено(Объект.Кодировка) Тогда
		Если Объект.ФорматОбмена = ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.ClientBankExchange1c")
			ИЛИ Объект.ФорматОбмена = ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.MT940") Тогда
			Объект.Кодировка = "Windows";
		Иначе
			Объект.Кодировка = "UTF-8";
		КонецЕсли;
	КонецЕсли;
	
	РежимОбменаПриИзмененииНаСервере(ИмяЭлемента);
	
КонецПроцедуры

&НаСервере
Процедура РежимОбменаПриИзмененииНаСервере(ИмяЭлемента)
	
	НастроитьЗависимыеЭлементыФормыНаСервере(ИмяЭлемента);
	УстановитьСтраницуСоглашенийЭД();
	
КонецПроцедуры

// ЭлектронноеВзаимодействие.ОбменСБанками

&НаКлиенте
Процедура ПослеСозданияНастройкиОбмена(НастройкаЭДО, Параметры) Экспорт
	
	Элементы.ДекорацияДобавитьСоглашениеЭД.Заголовок =
		ОбменСБанкамиКлиентСервер.ЗаголовокНастройкиОбменаСБанком(Объект.Владелец, Объект.Банк);
	
КонецПроцедуры

// Конец ЭлектронноеВзаимодействие.ОбменСБанками

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

#Область ЛокализацияСлужебные

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

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

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

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

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

&НаСервере
Процедура УстановитьСтраницуСоглашенийЭД()
	
	Если Не Объект.ИспользоватьПрямойОбменСБанком Тогда
		
		Элементы.ГруппаСоглашениеЭД.ТекущаяСтраница = Элементы.СтраницаЕстьСоглашениеЭД;
		Элементы.ДекорацияСоглашениеЭД.Заголовок = "";
		Элементы.ДекорацияСоглашениеЭД.Гиперссылка = Ложь;
		
	ИначеЕсли ЗначениеЗаполнено(СоглашениеЭД) Тогда
		
		Элементы.ГруппаСоглашениеЭД.ТекущаяСтраница = Элементы.СтраницаЕстьСоглашениеЭД;
		Элементы.ДекорацияСоглашениеЭД.Заголовок = СтрШаблон(НСтр("ru='%1, (%2)'"), СоглашениеЭД, СтатусСоглашенияЭД);
		Элементы.ДекорацияСоглашениеЭД.Гиперссылка = Истина;
		
	ИначеЕсли ПравоДоступа("Добавление", Метаданные.Справочники.НастройкиОбменСБанками) Тогда
		
		Элементы.ГруппаСоглашениеЭД.ТекущаяСтраница = Элементы.СтраницаНетСоглашенияЭДДобавление;
	Иначе
		
		Элементы.ГруппаСоглашениеЭД.ТекущаяСтраница = Элементы.СтраницаНетСоглашенияЭДНетПрав;
	КонецЕсли;
	
КонецПроцедуры

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

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

КонецФункции

&НаКлиенте
Процедура УстановитьПризнакИностранныйБанк()
	Объект.ЭтоIBAN = Объект.ЭтоIBAN
					И Не СтранаБанка = ПредопределенноеЗначение("Справочник.СтраныМира.Россия");
	
	Если МеждународныеРеквизитыБанковскихСчетов Тогда
		
		Объект.ИностранныйБанк = СтранаБанка <> ПредопределенноеЗначение("Справочник.СтраныМира.Россия") И ЗначениеЗаполнено(СтранаБанка);
		ИзмененИностранныйБанк = Объект.ИностранныйБанк = Истина;
		Если ИзмененИностранныйБанк Тогда
			ИностранныйБанкПриИзменении();
			ЗаполнитьСписокВыбораТипаСчетаЛокализация();
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПараметрыОбменаСБанком(ТекущийОбъект)

	Если ТекущийОбъект.ТипСчета = ПредопределенноеЗначение("Перечисление.ТипыБанковскихСчетов.Казначейский") Тогда
	
		Если ТекущийОбъект.ОбменСБанкомВключен Тогда
			ТекущийОбъект.ИспользоватьПрямойОбменСБанком = Ложь;
			ТекущийОбъект.ИспользоватьОбменСБанком = Истина;
			ТекущийОбъект.ИспользоватьОбменСБанкомBankFeeds = Ложь;
			
		КонецЕсли;
		
		ТекущийОбъект.ФорматОбмена = ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.ФедеральноеКазначействоРФ");
		ТекущийОбъект.Кодировка = "UTF-8";
	
	Иначе
	
		ТекущийОбъект.ФорматОбмена = ПредопределенноеЗначение("Перечисление.ФорматОбменаСБанком.ClientBankExchange1c");
		ТекущийОбъект.Кодировка = "Windows";
	
	КонецЕсли;

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

&НаСервере
Процедура ПроверитьНомерСчета()

	Если Объект.ТипСчета = Перечисления.ТипыБанковскихСчетов.Казначейский Тогда
		ДенежныеСредстваСерверЛокализация.ПроверитьЛицевойСчетКазначейскогоСопровождения(Объект);
	ИначеЕсли Объект.ТипСчета <> Перечисления.ТипыБанковскихСчетов.Прочий Тогда
		ДенежныеСредстваКлиентСерверЛокализация.ПроверитьФорматСчетаРФ(ЭтотОбъект);
	КонецЕсли;

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

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

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

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

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

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

#Область Инициализация

#Если НаСервере Тогда

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

#КонецЕсли

#КонецОбласти
//-- Локализация

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