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

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

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

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

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

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

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

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

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

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

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

Процедура ОбработкаУдаленияПроведения(Отказ)
	
	ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
	СписаниеБезналичныхДенежныхСредствЛокализация.ОбработкаУдаленияПроведения(ЭтотОбъект, Отказ);
	
КонецПроцедуры

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

Процедура ПриКопировании(ОбъектКопирования)

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

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

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

#Область ИнициализацияИЗаполнение

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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


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

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

Процедура ЗаполнитьПоПодарочномуСертификату(Знач ДокументОснование, ДанныеЗаполнения)

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

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

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

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

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

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

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

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

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

#КонецЕсли

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