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

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

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

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

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

	МеханизмыДокумента.Добавить("РеестрДокументов");
	МеханизмыДокумента.Добавить("СебестоимостьИПартионныйУчет");
	МеханизмыДокумента.Добавить("УчетДоходовРасходов");
	МеханизмыДокумента.Добавить("УчетНДС");
	МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
	
КонецПроцедуры

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

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

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

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

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

	Возврат Неопределено;
КонецФункции

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

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

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

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

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

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

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

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


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

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

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

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

	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ВЫБОР
	|		КОГДА ТипЗначения(Контрагент) = Тип(Справочник.Организации)
	|			ТОГДА ЗначениеРазрешено(Организация) ИЛИ ЗначениеРазрешено(Контрагент)
	|		ИНАЧЕ ЗначениеРазрешено(Организация) И ЗначениеРазрешено(Контрагент.Партнер)
	|	КОНЕЦ";

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

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

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

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

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

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

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

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

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

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

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

Функция ТекстЗапросаВтСторнируемыеКорректировки()

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

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

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

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

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

Процедура УстановитьПараметрКоэффициентПересчетаВВалютуРегл(Запрос)
	
	Если Запрос.Параметры.Свойство("КоэффициентПересчетаВВалютуРегл") Тогда
		Возврат;
	КонецЕсли;
	
	УстановитьПараметрВалютаОснования(Запрос);

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

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

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

Функция ТекстЗапросаВтПрошлыеКорректировки()

	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	ДокументыОснования.ИдентификаторСтроки      КАК ИдентификаторСтроки,
	|	ДокументыОснования.КорректируемыйДокумент   КАК КорректируемыйДокумент,
	|	ДокументыОснования.СтавкаНДС                КАК СтавкаНДС,
	|	ДокументыОснования.СуммаБезНДС              КАК СуммаБезНДС,
	|	ДокументыОснования.НДС                      КАК НДС,
	|	ДокументыОснования.НалоговаяБаза            КАК НалоговаяБаза,
	|	ДокументыОснования.НДСУпр                   КАК НДСУпр,
	|	ДокументыОснования.СуммаНДСУпр              КАК СуммаНДСУпр,
	|	ДокументыОснования.ЗакупкаПодДеятельность   КАК ЗакупкаПодДеятельность,
	|	КорректировкаПриобретения.Ссылка            КАК ДокументОснование
	|ПОМЕСТИТЬ ВтПрошлыеКорректировки
	|ИЗ
	|	ВтДокументыОснования КАК ДокументыОснования
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КорректировкаПриобретения КАК КорректировкаПриобретения
	|		ПО ДокументыОснования.КорректируемыйДокумент = КорректировкаПриобретения.ДокументОснование
	|ГДЕ
	|	&Исправление
	|	И КорректировкаПриобретения.Проведен
	|	И КорректировкаПриобретения.Дата < ДокументыОснования.ДатаДокументаОснования
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ДокументыОснования.ИдентификаторСтроки      КАК ИдентификаторСтроки,
	|	ДокументыОснования.КорректируемыйДокумент   КАК КорректируемыйДокумент,
	|	ДокументыОснования.СтавкаНДС                КАК СтавкаНДС,
	|	ДокументыОснования.СуммаБезНДС              КАК СуммаБезНДС,
	|	ДокументыОснования.НДС                      КАК НДС,
	|	ДокументыОснования.НалоговаяБаза            КАК НалоговаяБаза,
	|	ДокументыОснования.НДСУпр                   КАК НДСУпр,
	|	ДокументыОснования.СуммаНДСУпр              КАК СуммаНДСУпр,
	|	ДокументыОснования.ЗакупкаПодДеятельность   КАК ЗакупкаПодДеятельность,
	|	ПриобретениеТоваровУслуг.Ссылка             КАК ДокументОснование
	|ИЗ
	|	ВтДокументыОснования КАК ДокументыОснования
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
	|		ПО ДокументыОснования.КорректируемыйДокумент = ПриобретениеТоваровУслуг.Ссылка
	|ГДЕ
	|	&Исправление
	|	И ДокументыОснования.КорректируемыйДокумент <> ДокументыОснования.ДокументОснование
	|";
	
	Возврат ТекстЗапроса;

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

Функция ТекстЗапросаВтПрошлыеИсправленияКорректировки(Запрос, ТекстыЗапроса)

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

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

Функция ТекстЗапросаВтТаблицаКорректировки(Запрос, ТекстыЗапроса, ПрошлыеКорректировки = Ложь)
	
	ИмяРегистра = "ВтТаблицаКорректировки";
	
	УстановитьПараметрВалютаОснования(Запрос);
	УстановитьПараметрКоэффициентПересчетаВВалютуРегл(Запрос);

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

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

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

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

	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;

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

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

	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;
		
КонецФункции

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

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

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

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

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

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

	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	Возврат ТекстЗапроса
	
КонецФункции

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

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

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

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

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

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

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

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

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

	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	Возврат ТекстЗапроса;
	
КонецФункции

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

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

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

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


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

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

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

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

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

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

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

#КонецЕсли

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