Счет-фактура полученный (аванс) / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	СчетФактураПолученныйАвансЛокализация.ДобавитьКомандыПечати(КомандыПечати);
	
КонецПроцедуры

// Формирует печатные формы.
//
// Параметры:
//  МассивОбъектов  - Массив    - ссылки на объекты, которые нужно распечатать;
//  ПараметрыПечати - Структура - дополнительные настройки печати;
//  КоллекцияПечатныхФорм - ТаблицаЗначений - сформированные табличные документы (выходной параметр)
//  ОбъектыПечати         - СписокЗначений  - значение - ссылка на объект;
//                                            представление - имя области в которой был выведен объект (выходной параметр);
//  ПараметрыВывода       - Структура       - дополнительные параметры сформированных табличных документов (выходной параметр).
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	СчетФактураПолученныйАвансЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
	
КонецПроцедуры

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

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

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

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

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

#Область ФормированиеГиперссылкиВЖурналеДокументовНДС

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

Функция ИмяФормыСчетФактураПолученныйАванс() Экспорт
	
	Возврат "Документ.СчетФактураПолученныйАванс.Форма.ФормаРабочееМесто";
	
КонецФункции

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

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

#КонецЕсли

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