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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура КППКорреспондентаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	
	//++ Локализация
	ТекстСообщения = "";
	Если Не ПустаяСтрока(Текст) И
		Не РегламентированныеДанныеКлиентСервер.КППСоответствуетТребованиям(Текст, ТекстСообщения)
		И Текст <> "0" Тогда
		
		ОчиститьСообщения();
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "КППКорреспондента",,);
	КонецЕсли;
	//-- Локализация
	Возврат;
	
КонецПроцедуры

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Если ПустаяСтрока(Форма.Объект.НомерСчета) Тогда
		Возврат;
	КонецЕсли;

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

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

	СформироватьАвтоНаименование(ЭтотОбъект);
	НастроитьЭлементыФормы(ЭтотОбъект, , РеквизитыФормы(ЭтотОбъект));

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	УсловноеОформление.Элементы.Очистить();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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

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