Поступление денежных документов / Модуль менеджера

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

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

// Формирует описание реквизитов объекта, заполняемых по статистике их использования.
//
// Параметры:
//  ОписаниеРеквизитов - Структура - описание реквизитов, для которых необходимо получить значения по статистике
//
//
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
	
	Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
	Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
	ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Организация", Параметры);
	
	ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
		"Подразделение");

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

#Область Проведение

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

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

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

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

КонецПроцедуры
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет список команд создания на основании.
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//  Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
	Документы.ЗаявкаНаРасходованиеДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
	Документы.РасходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
	Документы.СписаниеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
	Документы.КорректировкаГрафикаВзаиморасчетов.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
	ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
	ИсправлениеДокументов.ДобавитьКомандуСторно(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
	
	БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
КонецПроцедуры

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

// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
//   Параметры - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
КонецПроцедуры

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

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

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

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

#Область Состояние

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

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

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

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

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

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

#Область ПроводкиРеглУчета

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

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

// Функция возвращает текст запроса дополнительных временных таблиц,
// необходимых для отражения в регламентированном учете.
//
// Возвращаемое значение:
//	ТекстЗапроса - Строка - текст запроса создания временных таблиц.
//
Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт
	
	ТекстЗапроса = "";
	
	Возврат ТекстЗапроса;
	
КонецФункции

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

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.УправлениеДоступом

// Параметры:
//   Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение.
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)
	|	И ЗначениеРазрешено(Подразделение)
	|	И ЗначениеРазрешено(Партнер)";

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

// Конец СтандартныеПодсистемы.УправлениеДоступом

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

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

#КонецЕсли

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

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

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Поля.Очистить();
	Поля.Добавить("НаименованиеВходящегоДокумента");
	Поля.Добавить("НомерВходящегоДокумента");
	Поля.Добавить("ДатаВходящегоДокумента");
	Поля.Добавить("Дата");
	Поля.Добавить("Номер");
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

#Область Проведение

Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт

	ИсточникиДанных = Новый Соответствие;

	Возврат ИсточникиДанных; 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция УстановитьПараметр(ОбластьМакета, ИмяПараметра, ЗначениеПараметра)
	ОбластьМакета.Параметры.Заполнить(Новый Структура(ИмяПараметра, ЗначениеПараметра));
КонецФункции

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

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

// Осуществляет инициализацию структуры состояния расчетов
Функция СтруктураСостоянияРасчетов()
	
	СтруктураСостоянияРасчетов = Новый Структура;
	СтруктураСостоянияРасчетов.Вставить("СуммаОплаты", 0);
	СтруктураСостоянияРасчетов.Вставить("ПроцентОплаты", 0);
	СтруктураСостоянияРасчетов.Вставить("СуммаПросроченнойОплаты", 0);
	СтруктураСостоянияРасчетов.Вставить("СуммаДолга", 0);
	СтруктураСостоянияРасчетов.Вставить("ПроцентДолга", 0);
	СтруктураСостоянияРасчетов.Вставить("СуммаКОплате", 0);
	
	Возврат СтруктураСостоянияРасчетов;
	
КонецФункции

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

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

#КонецЕсли

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