Операция по платежной карте / Форма документа / Модуль формы

файл

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ИдентификаторОплатыСБППриИзмененииНаСервере()
	ОперацияПоПлатежнойКартеЛокализация.УправлениеЭлементамиФормы(ЭтотОбъект);
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// Получает структуру реквизитов договора по ссылке.
// 
// Параметры:
//  Ссылка - СправочникСсылка.ДоговорыЭквайринга -
//
// Возвращаемое значение:
//  см. Справочники.ДоговорыЭквайринга.РеквизитыДоговора
//
&НаСервере
Функция РеквизитыЭквайринговогоДоговора(Ссылка)
	
	Возврат Справочники.ДоговорыЭквайринга.РеквизитыДоговора(Ссылка);
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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