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