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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

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

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

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

//-- НЕ УТ

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

	Возврат ТекстЗапроса;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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