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

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

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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	УстановитьУсловноеОформление();
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

	УправлениеЭлементамиФормы();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВестиУчетКомиссииВоВзаиморасчетахПереключательПриИзменении(Элемент)

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

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

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

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

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

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

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

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

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

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


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



#Область ПодключаемыеКоманды

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

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

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

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

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


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

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

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

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

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

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

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

	УсловноеОформление.Элементы.Очистить();
	

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

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

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

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

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

&НаСервере
Процедура ВычислитьПроцентКомиссии()
	
	Процент = ?(Объект.СуммаДокумента<> 0, 
		100 * Объект.СуммаКомиссии / Объект.СуммаДокумента,
		0);
	
	Если Процент > 0 Тогда  
		ПроцентКомиссии = Формат(Процент, "ЧЦ=5; ЧДЦ=2") + "%";
	Иначе
		ПроцентКомиссии = "";
	КонецЕсли;	
	
КонецПроцедуры	

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьВидимость()
	
	// Информация о проблемах
	Элементы.ГруппаИнформацияОПроблемеВДокументе.Видимость = Объект.ЕстьПроблемы;

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ВыборкаОснованияПлатежаДляВозврата(Отбор)

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

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

&НаСервере
Процедура ОбъектРасчетовОбработкаВыбораСервер(ВыбранноеЗначение)

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

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

&НаСервере
Процедура ЗаполнитьОснованиеПлатежа()

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

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

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

	СписокНДС = Новый Массив;
	
	Если Объект.СуммаНДСОбщаяСтавка <> 0 Тогда
		СписокНДС.Добавить(
			СтрокаСуммыНДС(Строка(ПолучитьОбщуюСтавкуНДС()),
			Объект.СуммаНДСОбщаяСтавка,
			Объект.Валюта));
	КонецЕсли;
	
	Если Объект.СуммаНДС10 <> 0 Тогда
		СписокНДС.Добавить(СтрокаСуммыНДС("10%", Объект.СуммаНДС10, Объект.Валюта));
	КонецЕсли;
	
	Если Объект.СуммаНДС7 <> 0 Тогда
		СписокНДС.Добавить(СтрокаСуммыНДС("7%", Объект.СуммаНДС7, Объект.Валюта));
	КонецЕсли;
	
	Если Объект.СуммаНДС5 <> 0 Тогда
		СписокНДС.Добавить(СтрокаСуммыНДС("5%", Объект.СуммаНДС5, Объект.Валюта));
	КонецЕсли;
	
	Если СписокНДС.Количество() = 0 Тогда
		СписокНДС.Добавить(СтрШаблон(НСтр("ru = '0 %1'"), Объект.Валюта));
	КонецЕсли;
	
	Элементы.ГруппаСуммыНДС.Заголовок =
		СтрШаблон(НСтр("ru = 'Сумма НДС: %1'"), СтрСоединить(СписокНДС, ","));

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

&НаСервере
Процедура УстановитьЗаголовокСтавкиНДС() 
	
	Элементы.СуммаНДС20.Заголовок = СтрШаблон(НСтр("ru = 'Сумма НДС (%1)'"),  Строка(ПолучитьОбщуюСтавкуНДС()));
		
КонецПроцедуры

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

&НаСервере
Функция СтрокаСуммыНДС(СтавкаНДС, СуммаНДС, Валюта)

	Возврат СтрШаблон(НСтр("ru = '%1 %2 (%3)'"), СуммаНДС, Валюта, СтавкаНДС);

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

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

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

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

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

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

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

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