Приходный кассовый ордер / Модуль объекта

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ЗаполнениеПоОснованию

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

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

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

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

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

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

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

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

#КонецЕсли

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