Списание безналичных денежных средств / Форма документа / Модуль формы

файл
#Область ОписаниеПеременных

//используется механизмом обработки изменения реквизитов ТЧ
&НаКлиенте
Перем КэшированныеЗначения;

&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;

//++ Локализация
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;

&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
//-- Локализация

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

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

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


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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		
		ФинансыКлиент.ПроверитьЗаполнениеДокументаНаОсновании(Объект, Объект.ДокументОснование);
		
		ТекущаяДата = Объект.Дата;
		
		Если ПериодАвансовогоОтчета = НСтр("ru = 'Через неделю'") Тогда
			Объект.ДатаАвансовогоОтчета = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДата()) + 7 * 24 * 3600;
		КонецЕсли;
	КонецЕсли;
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	// СтандартныеПодсистемы.РаботаСФайлами
	РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
	// Конец СтандартныеПодсистемы.РаботаСФайлами

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	
	ПринудительноЗакрытьФорму = Истина;
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
	
	НужнаОбработка = ДатаПриИзмененииКлиент();
	Если НужнаОбработка Тогда
		ТекущаяДата = Объект.Дата;
		ДатаПриИзмененииСервер();
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура БанковскийСчетПриИзменении(Элемент)
	
	СтруктураВозврата = БанковскийСчетПриИзмененииКлиент("РазрешенПересчетВВалюту");
	Если СтруктураВозврата.НуженПереходНаСервер Тогда
		БанковскийСчетПриИзмененииСервер(СтруктураВозврата.РеквизитыБанковскогоСчета, СтруктураВозврата.ПересчитыватьСуммы);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

	НуженПереходНаСервер = ВалютаПриИзмененииКлиент();
	
	Если НуженПереходНаСервер Тогда
		ВалютаПриИзмененииНаСервере();
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура СуммаКонвертацииПриИзменении(Элемент)
	
	ПересчитатьПараметрыКонвертации("СуммаКонвертации");
	
	Если Объект.РасшифровкаПлатежа.Количество() = 1 Тогда
		Объект.РасшифровкаПлатежа[0].Сумма = Объект.СуммаДокумента;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
	
	Если ТекущаяСтраница = Элементы.СтраницаРасшифровка И Не ПереключательРасшифровки И Не ТолькоПросмотр Тогда
		РасшифровкаПлатежаПриНачалеРедактирования(Элемент, Ложь, Ложь);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВыполнитьПослеВыбораДаты(ВыбраннаяДата, Параметры) Экспорт
	
	ПериодАвансовогоОтчетаДата = (ТипЗнч(ПериодАвансовогоОтчета) = Тип("Дата"));
	НастроитьЗависимыеЭлементыФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ФискальнаяОперацияСтатусОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
	
	ФормированиеФискальныхЧековКлиент.ФискальнаяОперацияОбработкаНавигационнойСсылки(
		ЭтотОбъект, НавигационнаяСсылка, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура ФискальнаяОперацияЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	ФискальнаяОперацияЗавершениеНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура ФискальнаяОперацияЗавершениеНаСервере()
	
	ФормированиеФискальныхЧековСервер.ОбновитьГиперссылкуПробитияФискальногоЧека(Объект.Ссылка, ЭтотОбъект, ФискальнаяОперацияСтатус);
	
КонецПроцедуры

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

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

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

	СтандартнаяОбработка = Ложь;
	
	ДенежныеСредстваКлиент.ОткрытьСозданиеДоговораВозврата(ЭтотОбъект, Элемент);

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ДекорацияВалютыИКурсПлатежаНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ДекорацияВалютыИКурсПлатежаНажатиеЗавершениеНаСервере();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
	
	ЗаполнитьНалогообложениеНДС();
	
КонецПроцедуры

&НаКлиенте
Процедура ДекорацияИндексыСПАРКРискиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПлатежиПо275ФЗПриИзменении(Элемент)
	
	//++ Локализация


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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура РеквизитДоговораСБанкомПриИзменении(Элемент)
	
	//++ Локализация
	РеквизитДоговораСБанкомПриИзмененииНаСервере();
	//-- Локализация
	Возврат;
	
КонецПроцедуры

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

	//++ Локализация
	СписокКонтрагентовПриИзмененииСервер();
	//-- Локализация
	Возврат;

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

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

	КратностьКурсаКонвертацииПриИзмененииНаСервере();

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

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

	НаправлениеДеятельностиПриИзмененииНаСервере();

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

&НаКлиенте
Процедура ГруппаФинансовогоУчетаПриИзменении(Элемент)

	ГруппаФинансовогоУчетаПриИзмененииНаСервере();

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

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

	РасшифровкаПлатежаПартнерПриИзмененииНаСервере();

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

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыРасшифровкаПлатежа

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

&НаКлиенте
Процедура РасшифровкаПлатежаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура РасшифровкаБезРазбиенияПредставлениеОтраженияВРеглУчетеНажатие(Элемент, СтандартнаяОбработка)
	
	Возврат;
	
КонецПроцедуры

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

&НаКлиенте
Процедура РасшифровкаПлатежаПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
	
	РасшифровкаПлатежаПриОкончанииРедактированияНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура РасшифровкаПлатежаПриОкончанииРедактированияНаСервере()
	
	ЗаполнитьВалютуВзаиморасчетовДокумента();
	
КонецПроцедуры

&НаКлиенте
Процедура РасшифровкаПлатежаЗаявкаНаРасходованиеДенежныхСредствПриИзменении(Элемент)
	
	РасшифровкаПлатежаЗаявкаПриИзмененииСервер(Элементы.РасшифровкаПлатежа.ТекущиеДанные.ЗаявкаНаРасходованиеДенежныхСредств);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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


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

	НастроитьЗависимыеЭлементыФормыНаСервере();
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиенте
Процедура РасшифровкаПлатежаКурсЧислительВзаиморасчетовПриИзменении(Элемент)
	
	РасшифровкаПлатежаКурсЧислительВзаиморасчетовПриИзмененииНаСервере();
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура РасшифровкаПлатежаДоговорКредитаДепозитаПриИзменении(Элемент)
	
	РасшифровкаПлатежаДоговорКредитаДепозитаПриИзмененииСервер();
	
КонецПроцедуры

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

&НаКлиенте
Процедура РасшифровкаПлатежаТипСуммыКредитаДепозитаПриИзменении(Элемент)
	
	ТипСуммыКредитаДепозитаПриИзмененииСервер();
	
КонецПроцедуры

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

&НаКлиенте
Процедура РасшифровкаПлатежаСтатьяРасходовПриИзменении(Элемент)
	
	РасшифровкаПлатежаСтатьяРасходовПриИзмененииСервер(Элемент.Имя);
	
КонецПроцедуры

&НаСервере
Процедура РасшифровкаПлатежаСтатьяРасходовПриИзмененииСервер(ИмяЭлемента);
	
	ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элементы[ИмяЭлемента]);
	
КонецПроцедуры

&НаКлиенте
Процедура РасшифровкаПлатежаСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

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

&НаКлиенте
Процедура РасшифровкаПлатежаАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура РасшифровкаПлатежаАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура РасшифровкаПлатежаАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура ГиперссылкаРеквизитыОбъектаРасчетовНажатиеЗавершениеНаСервере()

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

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

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

&НаКлиенте
Процедура РасшифровкаПлатежаПослеУдаления(Элемент)
	
	РасшифровкаПлатежаПослеУдаленияСервер();
	
КонецПроцедуры

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

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

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

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

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

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

&НаКлиенте
Процедура РасшифровкаПлатежаДоговорАрендыПриИзменении(Элемент)
	
	
	Возврат;
	
КонецПроцедуры


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

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


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

&НаКлиенте
Процедура РасшифровкаПлатежаПриАктивизацииЯчейки(Элемент)
	
	ДенежныеСредстваКлиент.УстановитьДоступностьЭлементаРасшифровкаПлатежаСуммаВзаиморасчетов(ЭтотОбъект, Объект.Валюта);
	ДенежныеСредстваКлиент.УстановитьДоступностьЭлементаРасшифровкаПлатежаДоговор(ЭтотОбъект);
	
КонецПроцедуры

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

&НаКлиенте
Процедура РасшифровкаБезРазбиенияДатаПогашенияПриИзменении(Элемент)
	
	Объект.РасшифровкаПлатежа[0].ДатаПогашения = ДатаПогашенияБезРазбиения;
	ОбновитьПредставлениеДатыПогашения();
	
КонецПроцедуры

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

&НаКлиенте
Процедура РасшифровкаБезРазбиенияДатаПогашенияОчистка(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Объект.РасшифровкаПлатежа[0].ДатаПогашения = Дата(1, 1, 1);
	ОбновитьПредставлениеДатыПогашения();
	
КонецПроцедуры

&НаКлиенте
Процедура РасшифровкаБезРазбиенияДатаПогашенияОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	
	Если ТипЗнч(ДатаПогашенияБезРазбиения) = Тип("Дата") Тогда
		Возврат;
	КонецЕсли;
	
	СтандартнаяОбработка = Ложь;
	ДатаЦифрами = СтрСоединить(СтрРазделить(Текст, СтрСоединить(СтрРазделить(Текст, "0123456789"))));
	Если Не ПустаяСтрока(ДатаЦифрами) Тогда
		ВыбранныйДень  = Лев(ДатаЦифрами, 2);
		Если СтрДлина(ДатаЦифрами) > 2 Тогда
			ВыбранныйМесяц = Сред(ДатаЦифрами, 3, 2);
		Иначе
			ВыбранныйМесяц = Формат(ОбщегоНазначенияКлиент.ДатаСеанса(), "ДФ=MM")
		КонецЕсли;
		Если СтрДлина(ДатаЦифрами) > 4 Тогда
			ВыбранныйГод = Сред(ДатаЦифрами, 5, 4);
		Иначе
			ВыбранныйГод   = Формат(ОбщегоНазначенияКлиент.ДатаСеанса(), "ДФ=yyyy")
		КонецЕсли;
		ВыбраннаяДатаСтрокой = СтрШаблон("%1.%2.%3", ВыбранныйДень, ВыбранныйМесяц, ВыбранныйГод);
		ВыбраннаяДата = СтроковыеФункцииКлиентСервер.СтрокаВДату(ВыбраннаяДатаСтрокой);
		Объект.РасшифровкаПлатежа[0].ДатаПогашения = ВыбраннаяДата;
		ОбновитьПредставлениеДатыПогашения();
		ДанныеВыбора = Новый СписокЗначений();
		ДанныеВыбора.Добавить(ВыбраннаяДата);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура РасшифровкаПлатежаДоговорПриИзменении(Элемент)
	
	СтрокаТабличнойЧасти = Элементы.РасшифровкаПлатежа.ТекущиеДанные;
	
	Если СтрокаТабличнойЧасти = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Объект.Договор = СтрокаТабличнойЧасти.Договор;
	
	ДоговорПриИзмененииНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура РасшифровкаПлатежаДоговорНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ОбъектРасчетовДоговорНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка);
	
КонецПроцедуры

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

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

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

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

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

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

	РасшифровкаПлатежаПартнерПриИзмененииНаСервере();

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПровестиДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ПодборПоОстаткам(Команда)
	
	ПодборПоОстаткамОбработка("ПодборПоОстаткамЗавершение");
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура ПоместитьРасшифровкуПлатежаВоВременноеХранилище()
	ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма, "РасшифровкаПлатежаПодборПоОстаткам");
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ЗаполнитьОстаткамиНевыданныхСуммКонтрагенту(Команда)
	
	ЗаполнитьОстаткамиНевыданныхСуммКонтрагентуНаСервере();
	
КонецПроцедуры

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

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

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

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПодобратьСчетаФактуры(Команда)
	
	//++ Локализация
	ПодобратьСчетаФактурыЛокализация(Команда);
	//-- Локализация
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
	
	//++ Локализация
	ПроверитьКонтрагентовЛокализация(Команда);
	//-- Локализация
	Возврат;
	
КонецПроцедуры

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

&НаКлиенте
Процедура ЗаполнитьСтатьюДвиженияДенежныхСредств(Команда)

	ОчиститьСообщения();
	ДенежныеСредстваКлиент.ЗаполнитьСтатьюДвиженияДенежныхСредств(
		ЭтотОбъект, Элементы.ЛицевыеСчетаСотрудников, "ЛицевыеСчетаСотрудников");

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

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

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

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

&НаСервере
Процедура ДатаПриИзмененииСервер()

	ЗаполнитьНалогообложениеНДС();
	ДенежныеСредстваСервер.РассчитатьСуммыВВалютеОтправителяВРасшифровке(Объект, ВалютаБанковскогоСчета);

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

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

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

		Если ИзмениласьОрганизация Тогда
			
			ФилиалыОрганизации.ЗагрузитьЗначения(Справочники.Организации.ФилиалыСРасчетамиЧерезГоловнуюОрганизацию(Объект.Организация));
			ЕстьФилиалы = (ФилиалыОрганизации.Количество() > 0);

		КонецЕсли;
		
	Иначе
		ФилиалыОрганизации.Очистить();
	КонецЕсли;
	
	ТекущийБанковскийСчет = Объект.БанковскийСчет;

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

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

&НаКлиенте
Функция ВалютаПриИзмененииКлиент()
	
	Если ТекущаяВалюта = Объект.Валюта Тогда
		Возврат Ложь;
	КонецЕсли;
	
	Возврат Истина;
	
КонецФункции

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

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

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

&НаСервере
Процедура ОбновитьДанныеПоВалюте()

	Если ТекущаяВалюта <> Объект.Валюта Тогда
		ПриИзмененииВалюты();
	КонецЕсли;

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

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

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

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

&НаСервере
Процедура СписокФизЛицПриИзмененииНаСервере()

	СписокФизЛицВключеноПриИзмененииНаСервере();
	
	ОбновитьДанныеПоВалюте();

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

&НаСервере
Процедура ВалютаКонвертацииПриИзмененииСервер()
	
	УстановитьВозможныеЗначенияСчетаПолучателя();
	
	ПересчитатьПараметрыКонвертации("ВалютаКонвертации");
	УстановитьЗаголовокСуммыКонвертации();
	
КонецПроцедуры

&НаСервере
Процедура КратностьКурсаКонвертацииПриИзмененииНаСервере()

	ПересчитатьПараметрыКонвертации("КратностьКурсаКонвертации");

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

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

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

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

&НаСервере
Процедура ПриИзмененииРасшифровкаПлатежаСумма()

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

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

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

#Область Свойства

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

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

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

&НаКлиенте
Процедура Подключаемый_ПриНажатииНаСсылкуДиректБанк()

	ОбменСБанкамиКлиент.ОткрытьАктуальныйЭД(Объект.Ссылка, ЭтотОбъект);
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура ЛицевыеСчетаСотрудниковПриИзмененииНаСервере()

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

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

#Область УправлениеЭлементамиФормы

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

	УсловноеОформление.Элементы.Очистить();
	
	//ВалютаВзаиморасчетов
	ДенежныеСредстваСервер.УстановитьУсловноеОформлениеВалютыВзаиморасчетов(ЭтотОбъект);
	
	//Партнер
	ДенежныеСредстваСервер.УстановитьУсловноеОформлениеПартнера(ЭтотОбъект);
	
	//
	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Подразделение.Имя);

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
	
	//
	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РасшифровкаПлатежаЗаявкаНаРасходованиеДенежныхСредств.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

	ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОплатаПоЗаявкам");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Ложь;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Функция ПоместитьРасшифровкуПлатежаВХранилище()
	
	
	АдресПлатежейВХранилище = ДенежныеСредстваСервер.ПоместитьРасшифровкуПлатежаВХранилище(
		Объект.РасшифровкаПлатежа,
		УникальныйИдентификатор);
	Возврат АдресПлатежейВХранилище;
	
КонецФункции

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьОграничениеТипаДоговораРасшифровкиПлатежа()

	ДенежныеСредстваСервер.УстановитьОграничениеТипаДоговораРасшифровкиПлатежа(ЭтотОбъект);
	НастроитьЗависимыеЭлементыФормыНаСервере("СуммаНераспределено");

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

&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииНаСервере()

	ТекущаяСтрока = Объект.РасшифровкаПлатежа.НайтиПоИдентификатору(Элементы.РасшифровкаПлатежа.ТекущаяСтрока);
	ОчиститьОбъектРасчетов(ТекущаяСтрока);

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

&НаСервере
Процедура ГруппаФинансовогоУчетаПриИзмененииНаСервере()

	ТекущаяСтрока = Объект.РасшифровкаПлатежа.НайтиПоИдентификатору(Элементы.РасшифровкаПлатежа.ТекущаяСтрока);
	ОчиститьОбъектРасчетов(ТекущаяСтрока);

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

&НаСервере
Процедура РасшифровкаПлатежаПартнерПриИзмененииНаСервере()

	ТекущаяСтрока = Объект.РасшифровкаПлатежа.НайтиПоИдентификатору(Элементы.РасшифровкаПлатежа.ТекущаяСтрока);
	ОчиститьОбъектРасчетов(ТекущаяСтрока);

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

&НаСервере
Процедура ИзменитьСуммуНераспределено()

	СуммаНераспределено = ДенежныеСредстваСервер.НераспределенныйОстатокПлатежа(Объект);
	НастроитьЗависимыеЭлементыФормыНаСервере("СуммаНераспределено");

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

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

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

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

&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
	
	Закрыть();
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьРеквизитыБанковскогоСчета(БанковскийСчет)
	
	Возврат Справочники.БанковскиеСчетаОрганизаций.ПолучитьРеквизитыБанковскогоСчетаОрганизации(БанковскийСчет);
	
КонецФункции

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

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

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

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

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


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


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

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

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

&НаСервере
Функция ПоместитьРасшифровкуВоВременноеХранилище()
	Возврат ПоместитьВоВременноеХранилище(Объект.РасшифровкаПлатежа.Выгрузить());
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция НадписьКодыИнструкцийБанку(Объект)
	
	КодыИнструкцийБанку = "";
	
	Если Объект.ИнструкцииБанку.Количество() Тогда
		КодыИнструкцийБанку = НСтр("ru = 'Инструкции банку:'") + " ";
		Для каждого СтрокаИнструкции Из Объект.ИнструкцииБанку Цикл
			КодыИнструкцийБанку = КодыИнструкцийБанку + Строка(СтрокаИнструкции.Инструкция) + ", ";
		КонецЦикла;
		КодыИнструкцийБанку = Лев(КодыИнструкцийБанку, СтрДлина(КодыИнструкцийБанку) - 2);
	Иначе
		КодыИнструкцийБанку = НСтр("ru = '<Указать инструкции банку>'");
	КонецЕсли;
	
	Возврат КодыИнструкцийБанку;
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция НадписьИнформацияДляРегулирующихОрганов(Объект)
	
	ИнформацияДляРегулирующихОрганов = НСтр("ru = 'Для регулятора (77B):'");
	
	Если ЗначениеЗаполнено(Объект.ИнформацияДляРегулирующихОрганов) Тогда
		ИнформацияДляРегулирующихОрганов = ИнформацияДляРегулирующихОрганов + " " + Объект.ИнформацияДляРегулирующихОрганов;
	Иначе
		ИнформацияДляРегулирующихОрганов = ИнформацияДляРегулирующихОрганов + " " + НСтр("ru = '<Указать>'");
	КонецЕсли;
	
	Возврат ИнформацияДляРегулирующихОрганов;
	
КонецФункции

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

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

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

&НаСервере
Процедура РазблокироватьДанные()
	РазблокироватьДанныеДляРедактирования(,ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция ЗаголовокЭквайринговойКомиссии(Сумма, Валюта, Ставка)
	
	Возврат НСтр("ru='Комиссия'") + " " + Строка(Сумма) + " " + Строка(Валюта) + " " + Строка(Ставка) + "%";
	
КонецФункции

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

&НаСервере
Процедура ЗаполнитьКурсВзаиморасчетов()
	
	Для каждого СтрокаТЧ Из Объект.РасшифровкаПлатежа Цикл
		ЗаполнитьКурсИКратностьВСтрокеРасшифровки(СтрокаТЧ);
	КонецЦикла;
	
	ЗаполнитьВалютуВзаиморасчетовДокумента();
	
КонецПроцедуры

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

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

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

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

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

&НаСервере
Процедура ПеречислениеСотрудникуЧерезБанкПриИзменении_Сервер()

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

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

// Устанавливает надпись о наличии документа "Зачисление ДС на лицевые счета"
//
&НаСервере
Процедура УстановитьНадписьЗачисленияДС()

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

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

&НаСервере
Функция СтрокаИсключенныхСвойствПоДоговору(СтрокаРасшифровкиПлатежа, СвойстваПоДоговору)
	
	ИсключенныеСвойства = "";
	
	Для Каждого ТекущееСвойство Из СвойстваПоДоговору Цикл
		
		Если Не СтрокаРасшифровкиПлатежа.Свойство(ТекущееСвойство.Ключ) Тогда
			Продолжить;
		КонецЕсли;
		
		Если Не ЗначениеЗаполнено(ТекущееСвойство.Значение)
			И ЗначениеЗаполнено(СтрокаРасшифровкиПлатежа[ТекущееСвойство.Ключ]) Тогда
			ИсключенныеСвойства = ?(ИсключенныеСвойства <> "", ИсключенныеСвойства + ",", "") + ТекущееСвойство.Ключ;
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат ИсключенныеСвойства;
	
КонецФункции


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

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

&НаСервере
Процедура ПриИзмененииКонтрагента(
	Контрагент,
	БанковскийСчетКонтрагента,
	ЗаполнитьРасшифровкуПоКонтрагенту = Истина,
	ТекущийПартнер = Неопределено,
	ТекущаяСтрокаРасшифровки = Неопределено) Экспорт

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

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

&НаСервере
Процедура ЗаполнитьРасшифровкуПлатежа(ТекущаяСтрокаТаблицы, ОбъектРасчетовДоговор)

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

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

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

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

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

&НаКлиенте
Процедура ПроверитьВозможностьЗаполненияЗаявки(СобытиеПослеПроверки)

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

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

&НаКлиенте
Процедура ДополнитьОтборПоСпискуФизЛиц(Отбор)

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

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

&НаСервере
Процедура СписокФизЛицВключеноПриИзмененииНаСервере()

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

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

&НаСервере
Процедура ЗаполнитьВалютуПоСчетуПолучателя(Счет)

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

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

&НаСервере
Процедура ОчиститьОбъектРасчетов(СтрокаРасшифровки)

	ДенежныеСредстваСервер.ОчиститьОбъектРасчетов(Объект, СтрокаРасшифровки);

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

&НаСервере
Процедура ДобавитьСтрокуРасшифровкиПоЗаявке(СтрокаПлатежа, ДополнительныеПараметры)

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

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

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

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

	НастроитьЗависимыеЭлементыФормыНаСервере("ПлатежСКонвертацией");

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

&НаСервере
Функция ВыплатаОдномуФизЛицу()

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

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

&НаКлиенте
Процедура УстановитьПризнакОплатыПоЗаявкам()

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

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

&НаСервере
Процедура ЗаполнитьПоДоговоруСтрокуРасшифровкиПлатежа(СтрокаРасшифровки, РеквизитыДоговора)

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

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

&НаСервере
Функция СуммаОстаткаЗаявки(ЗаявкаНаОплату)

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Подключаемый_ПередЗаписьюЛокализация(Отказ, ПараметрыЗаписи)
	
	ХозОперацииИсключения = Новый Массив;
	ХозОперацииИсключения.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыПоЗарплатномуПроекту"));
	ХозОперацииИсключения.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыплатаЗарплатыНаЛицевыеСчета"));
	
	ПередЗаписьюОбработка(Отказ, ПараметрыЗаписи, ХозОперацииИсключения);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Подключаемый_РасшифровкаБезРазбиенияДоговорКредитаДепозитаПриИзмененииЛокализация(Элемент)
	
	Подключаемый_РасшифровкаПлатежаДоговорКредитаДепозитаПриИзмененииЛокализация(Элемент);
	
КонецПроцедуры

&НаСервере
Процедура РасшифровкаПлатежаДоговорКредитаДепозитаПриИзмененииСерверЛокализация()
	
	РасшифровкаПлатежаДоговорКредитаДепозитаПриИзмененииСервер();
	
	
КонецПроцедуры

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

	ОперацияССамозанятымПриИзмененииНаСервере();

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

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

	ДоговорПриИзмененииЛокализацияНаСервере();

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

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

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

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

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

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


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

&НаСервере
Процедура ОперацияССамозанятымПриИзмененииНаСервере()

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

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

&НаСервере
Процедура СписокКонтрагентовПриИзмененииСервер()

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

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

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

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

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

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

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

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

#Область ЛокализацияОбработчикиСобытийЭлементовТаблицыФормыРасшифровкаПлатежа

// Обработчик выбора в расшифровке
//
// Параметры:
//    Элемент - ПолеФормы - Поле расшифровки платежа
//    ВыбраннаяСтрока - Число - Индекс строки
//    Поле - ПолеФормы - Активная колонка
//    СтандартнаяОбработка - Булево - Признак стандартной обработки
&НаКлиенте
Процедура Подключаемый_РасшифровкаПлатежаВыборЛокализация(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	РасшифровкаПлатежаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
	Возврат;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура Подключаемый_РасшифровкаПлатежаПриОкончанииРедактированияЛокализация(Элемент, НоваяСтрока, ОтменаРедактирования)
	
	РасшифровкаПлатежаПриОкончанииРедактированияСерверЛокализация(НоваяСтрока, ОтменаРедактирования);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_РасшифровкаПлатежаКонтрагентПриИзмененииЛокализация(Элемент)
	
	ИдентификаторСтроки = Элементы.РасшифровкаПлатежа.ТекущаяСтрока;
	РасшифровкаПлатежаКонтрагентПриИзмененииСерверЛокализация(ИдентификаторСтроки);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_РасшифровкаПлатежаПартнерПриИзмененииЛокализация(Элемент)
	
	ИдентификаторСтроки = Элементы.РасшифровкаПлатежа.ТекущаяСтрока;
	РасшифровкаПлатежаПартнерПриИзмененииСерверЛокализация(ИдентификаторСтроки);
	
КонецПроцедуры

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

#Область ЛокализацияКоманды


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


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


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

&НаКлиенте
Процедура ПодобратьСчетаФактурыЛокализация(Команда)
	
	Возврат;
	
КонецПроцедуры

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


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

// Проверяет наличие документа зачисления перед выгрузкой файла
//
&НаКлиенте
Процедура ПередВыгрузкойРеестраНаЗачислениеДенежныхСредств()

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

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

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

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

#Область РаботаСКонтрагентами

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура УправлениеПоказателямиПлатежаВБюджет()
	
	ПлатежиВБюджет.УстановитьНадписьРеквизитовПлатежаВБюджет(ЭтаФорма);
	
КонецПроцедуры

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


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

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

&НаСервере
Процедура ПроверитьКорректностьЗаполненияПлатежаВБюджет()
	
	ТекущаяДата = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
	ПлатежиВБюджет.ПроверитьКорректностьЗаполненияПлатежаВБюджет(ЭтотОбъект, ТекущаяДата);
	
КонецПроцедуры

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

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

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


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

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

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

// ИнтернетПоддержкаПользователей.СПАРКРиски

// Обновляет отображение индексов СПАРК Риски.
//
// Параметры:
//  Нет.
//
&НаКлиенте
Процедура Подключаемый_ОбновитьОтображениеИндексыСПАРК()

	ОбновитьОтображениеИндексыСПАРК(Объект.Контрагент);

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

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

&НаСервереБезКонтекста
Функция ВидКонтрагентаСПАРК(Контрагент)
	
	Возврат Перечисления.ЮрФизЛицо.ВидКонтрагентаСПАРКРиски(Контрагент);
	
КонецФункции

// Конец ИнтернетПоддержкаПользователей.СПАРКРиски

// Заполняет номер и дату договора, отделение банка, филиал банка и кодировку файла для реестра
//
&НаСервере
Процедура ЗаполнитьДанныеОбменаСБанком()

	Если Не Объект.СписокФизЛиц Тогда
		Возврат;
	КонецЕсли;
	
	
	Если Объект.КодировкаФайла = "" Тогда
		Объект.КодировкаФайла = "UTF-8";
	КонецЕсли;
	
	УстановитьЗаголовокГруппыДанныеОбменаСБанком();

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

// Устанавливает заголовок для группы реквизитов обмена с банком
//
&НаСервере
Процедура УстановитьЗаголовокГруппыДанныеОбменаСБанком()

	ТекстЗаголовка = СтрШаблон(НСтр("ru = 'Договор обмена с банком № %1 от %2, отделение банка: %3, филиал: %4'"), 
								?(Объект.НомерДоговораСБанком = "", "-", Объект.НомерДоговораСБанком),
								Формат(Объект.ДатаДоговораСБанком, "ДЛФ=D; ДП=-"),
								?(Объект.ОтделениеБанка = "", "-", Объект.ОтделениеБанка),
								?(Объект.ФилиалОтделенияБанка = "", "-", Объект.ФилиалОтделенияБанка));
	
	Элементы.ГруппаРеквизитыОбменаСБанком.Заголовок = ТекстЗаголовка;

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

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

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

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

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

// Выполняет действия после проверки документа перед выгрузкой реестра
//
// Параметры:
//  РезультатВопроса - КодВозвратаДиалога - ответ на вопрос
//  ДополнительныеПараметры - Структура:
//    * Записывать - Булево - признак необходимости выполнения записи документа после проверки реестра
//
&НаКлиенте
Процедура ПроверкаВыгрузкиРеестраЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт

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

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

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

&НаКлиенте
Процедура ПодборПоОстаткамЗавершениеЛокализация(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат <> Неопределено Тогда
		ПодборПоОстаткамЗавершениеСерверЛокализация();
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура ПередВыгрузкойРеестрСамозанятых()

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

&НаКлиенте
Функция РазрешеноПродолжитьВыгрузкуРеестра()

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

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

&НаСервере
Процедура РасшифровкаПлатежаКонтрагентПриИзмененииСерверЛокализация(ИдентификаторСтроки)

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

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

&НаСервере
Процедура РасшифровкаПлатежаПартнерПриИзмененииСерверЛокализация(ИдентификаторСтроки)

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

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

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

	ДоговорПриИзмененииНаСервере();

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

&НаСервере
Процедура РасшифровкаБезРазбиенияОбъектРасчетовПриИзмененииСерверЛокализация(ИдентификаторСтроки)
	
	РасшифровкаБезРазбиенияОбъектРасчетовПриИзмененииСервер(ИдентификаторСтроки);
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьВариантыКодировокФайла()

	Элементы.КодировкаФайла.СписокВыбора.Очистить();
	
	Элементы.КодировкаФайла.СписокВыбора.Добавить("UTF-8", НСтр("ru = 'UTF-8'"));
	Элементы.КодировкаФайла.СписокВыбора.Добавить("windows-1251", НСтр("ru = 'windows-1251'"));

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьМаксимальнуюДлинуНазначенияПлатежа(ЭлементНазначениеПлатежа, ТипПлатежногоДокумента)

	ДоступнаяДлина = ДенежныеСредстваКлиентСерверЛокализация.МаксимальнаяДлинаНазначенияПлатежа(ТипПлатежногоДокумента);
	ЭлементНазначениеПлатежа.ОграничениеТипа = Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(ДоступнаяДлина));

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

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

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

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

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

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

#КонецЕсли

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

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