Книга покупок / Модуль менеджера

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

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

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

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

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

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

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

Процедура СформироватьОтчет(Знач СтруктураПараметров, АдресХранилища) Экспорт

	ПодготовитьОтчет(СтруктураПараметров);
	
	ПоместитьВоВременноеХранилище(СтруктураПараметров, АдресХранилища);
	
КонецПроцедуры

Процедура ПодготовитьОтчет(СтруктураПараметров) Экспорт

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

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

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

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

	СтруктураПараметров.Вставить("СписокСообщений", СписокСообщений);
	
КонецПроцедуры

#Область ПолучениеЗаписей

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

// Используется в электронном доп. листе книги покупок

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

	СтавкиНДС18 = Новый Массив();
	СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18);
	СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18_118);

	СтавкиНДС10 = Новый Массив();
	СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10);
	СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10_110);

	СтавкаНДС0 = Перечисления.СтавкиНДС.НДС0;
	СтавкаБезНДС = Перечисления.СтавкиНДС.БезНДС;

	Запрос.УстановитьПараметр("СтавкиНДС18",  СтавкиНДС18);
	Запрос.УстановитьПараметр("СтавкиНДС10",  СтавкиНДС10);
	Запрос.УстановитьПараметр("СтавкаНДС0",   СтавкаНДС0);
	Запрос.УстановитьПараметр("СтавкаБезНДС", СтавкаБезНДС);
	 
	ВидыЦенностей_Авансы = Новый Массив;
	ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные);
	ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные0);
	ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.АвансыПолученныеНалоговыйАгент);
	ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученныхНалоговыйАгент);
	ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученных);
	ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.АвансыВыданные);
	ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.АвансыВыданныеНалоговыйАгент);
	
	Запрос.УстановитьПараметр("ВидыЦенностей_Авансы", ВидыЦенностей_Авансы);
	
	ИтогЗаПериод = Запрос.Выполнить();
	
	Если НЕ ИтогЗаПериод.Пустой() Тогда
		
		Возврат ИтогЗаПериод.Выгрузить()[0];
		
	Иначе
		
		ИтогЗаПериод = Новый Структура;
		ИтогЗаПериод.Вставить("ВсегоПокупок", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
		ИтогЗаПериод.Вставить("СуммаБезНДС10", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
		ИтогЗаПериод.Вставить("НДС10", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
		ИтогЗаПериод.Вставить("СуммаБезНДС18", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
		ИтогЗаПериод.Вставить("НДС18", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
		ИтогЗаПериод.Вставить("НДС0", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
		ИтогЗаПериод.Вставить("НДС",  ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
		ИтогЗаПериод.Вставить("СуммаСовсемБезНДС", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
		
		Возврат ИтогЗаПериод;
		
	КонецЕсли;
	
КонецФункции

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

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

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

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

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

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

	Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
		Макет = ПолучитьОбщийМакет("КнигаПокупок534");
		СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
	ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 4 Тогда 
		Макет = ПолучитьОбщийМакет("КнигаПокупок981");
	ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 3 Тогда
		Если СтруктураПараметров.ЗаполнениеДекларации
		   И СтруктураПараметров.ПравилаЗаполнения = "2017Кв1" Тогда
			Макет = ПолучитьОбщийМакет("КнигаПокупок1137_2017");
		Иначе
			Макет = ПолучитьОбщийМакет("КнигаПокупок735");
		КонецЕсли;
	Иначе
		Макет = ПолучитьОбщийМакет("КнигаПокупок1137");
	КонецЕсли;

	НазваниеРаздела = Нстр("ru='Основной раздел'");
	
	ОбластьСтрокиДляПовтора = Макет.ПолучитьОбласть("СтрокиДляПовтора");
	СекцияВсего = Макет.ПолучитьОбласть("Всего");
	
	Если СтруктураПараметров.ЗаполнениеДекларации Тогда
		
		СтруктураСекций.Вставить("ШапкаРаздел8", Макет.ПолучитьОбласть("ШапкаРаздел8"));
		СтруктураСекций.Вставить("ДекларацияИтоги", Макет.ПолучитьОбласть("ДекларацияИтоги"));
		
		ОбластьСтрокиДляПовтора.Область("НомераГрафКнига").Видимость = Ложь;
		
		Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
			ОбластьСтрокиДляПовтора.Область("НомераГрафДекларация81").Видимость = Ложь;
		КонецЕсли;
		СтруктураСекций.Вставить("СтрокиДляПовтора", ОбластьСтрокиДляПовтора);
		
	Иначе
		
		Если ОбластьСтрокиДляПовтора.Области.Найти("НомераГрафДекларация") <> Неопределено Тогда 
			ОбластьСтрокиДляПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
		КонецЕсли;
		СтруктураСекций.Вставить("СтрокиДляПовтора", ОбластьСтрокиДляПовтора);
		
		Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
			Секция = Макет.ПолучитьОбласть("ШапкаИнформация");
			ТабличныйДокумент.Вывести(Секция);
		КонецЕсли;
		
		СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(
			СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода, , , , Истина);
		НазваниеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм");
		ИННОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "ИНН", Ложь);
		КППОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "КПП", Ложь);

		Секция = Макет.ПолучитьОбласть("Шапка");
		Если Секция.Области.Найти("НомераГрафДекларация") <> Неопределено Тогда 
			Секция.Область("НомераГрафДекларация").Видимость = Ложь;
		КонецЕсли;
		
		Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
			СекцияЗаголовок = Макет.ПолучитьОбласть("Заголовок");
			ТабличныйДокумент.Вывести(СекцияЗаголовок);
			Секция.Область("Период81").Видимость = Ложь;
			Секция.Область("НомераГрафДекларация81").Видимость = Ложь;
		КонецЕсли;
		
		Секция.Параметры.УстановленныйОтбор = "";
		Секция.Параметры.НачалоПериода = Формат(СтруктураПараметров.НачалоПериода, "ДФ=dd.MM.yyyy");
		Секция.Параметры.КонецПериода = Формат(СтруктураПараметров.КонецПериода, "ДФ=dd.MM.yyyy");
		Секция.Параметры.НазваниеОрганизации = НазваниеОрганизации;
		Секция.Параметры.ИННКППОрганизации = ИННОрганизации 
			+ ?(НЕ ЗначениеЗаполнено(КППОрганизации), "", ("/" + КППОрганизации));
			
		Если НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме И СтруктураПараметров.ОтбиратьПоКонтрагенту Тогда
			Если ОбщегоНазначения.ОбъектЯвляетсяГруппой(СтруктураПараметров.КонтрагентДляОтбора) Тогда
				НадписьОтбор = НСтр("ru='Отбор: Контрагент в группе %1'");
			Иначе
				НадписьОтбор = НСтр("ru='Отбор: Контрагент = %1'");
			КонецЕсли;
			Секция.Параметры.УстановленныйОтбор = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НадписьОтбор, СтруктураПараметров.КонтрагентДляОтбора);
		КонецЕсли;
	
		ТабличныйДокумент.Вывести(Секция);
		
	КонецЕсли;
	
	Если Результат.Пустой() Тогда

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

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

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

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

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

		УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);

		ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, НазваниеРаздела, СтруктураПараметров.СчетчикСегментов, ТабличныйДокумент);

	ИначеЕсли НЕ СтруктураПараметров.ЗаполнениеДекларации  Тогда
		
		Если СтруктураПараметров.СчетчикСтрокТекущегоСегмента <> 0 Тогда
			// Добавляем последний раздел
			
			Если СтруктураПараметров.СчетчикСегментов < 2 Тогда
				ЗаголовокЛиста = НазваниеРаздела;
			Иначе
		    	ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СтруктураПараметров.СчетчикСегментов);
		    КонецЕсли;
		
		    ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СтруктураПараметров.СчетчикСегментов, ТабличныйДокумент);
		    
		ИначеЕсли СтруктураПараметров.Счетчик <> 0 Тогда
			// Число строк последнего раздела совпало с предельным.	Сам раздел был добавлен в УчетНДС.ПреобразоватьЗаписиКнигиПродаж().
			// Заменим табличный документ в этом разделе отчета на табличный документ с итогами и подвалом.
			РазделыОтчета		= ПроверкаКонтрагентов.РазделыОтчета(СтруктураПараметров);
			Если РазделыОтчета.Количество() > 0 Тогда
				РазделОтчета  		= РазделыОтчета[РазделыОтчета.Количество()-1];
				ТабличныйДокумент 	= РазделОтчета.ХранилищеОтчета.Получить();

				ТабличныйДокумент.Вывести(СекцияВсего);
				Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
					ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
				КонецЕсли;

				РазделОтчета.ХранилищеОтчета = Новый ХранилищеЗначения(ТабличныйДокумент, Новый СжатиеДанных(9));
			КонецЕсли;
			
		КонецЕсли;

	КонецЕсли;
	
КонецПроцедуры

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

		ПараметрыПолученияИтогов = Новый Структура;
		ПараметрыПолученияИтогов.Вставить("НалоговыйПериод", НачалоКвартала(СтруктураПараметров.НачалоПериода));
		ПараметрыПолученияИтогов.Вставить("КонецНалоговогоПериода", КонецКвартала(СтруктураПараметров.КонецНалоговогоПериода));
		ПараметрыПолученияИтогов.Вставить("ДатаФормированияДопЛиста", НачалоКвартала(СтруктураПараметров.НачалоПериода));
		ПараметрыПолученияИтогов.Вставить("СписокОрганизаций", СтруктураПараметров.СписокОрганизаций);
		
		ИтогПоКнигеПокупок = ПолучитьИтогиЗаПериодКнигаПокупок(ПараметрыПолученияИтогов);
		ИтогиРаздел81.СумНДСИтКПк = ИтогПоКнигеПокупок.НДС;
		
	КонецЕсли;
	
	ДанныеОтчета = Новый Массив;
	
	Пока ИтогПоПериодам.Следующий() Цикл;
		
		НомерЛиста = 0;
		
		// Добавление новой страницы панели разделов для вывода доп. листа
		НомерОтображаемогоПериода = НомерОтображаемогоПериода + 1;
		НалоговыйПериод = ПредставлениеПериода(
			ИтогПоПериодам.НалоговыйПериод, КонецДня(ИтогПоПериодам.КонецНалоговогоПериода), "ФП = Истина");
		
		ТабличныйДокумент = Новый ТабличныйДокумент;
		ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
		ТабличныйДокумент.АвтоМасштаб = Истина;
		ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КнигаПокупокДопЛист";
		
		Если СтруктураПараметров.ОткрыватьПомощникИзМакета Тогда
			ТабличныйДокумент.Вывести(УчетНДСПереопределяемый.ПолучитьМакетОткрытияПомощника(
				СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода));
		КонецЕсли;
		
		СтруктураПараметров.Вставить("СчетчикСегментовНалоговогоПериода", 1);
		
		ИтогПоПериодамКорректировки = ИтогПоПериодам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
		Пока ИтогПоПериодамКорректировки.Следующий() Цикл
			
			СтруктураСекций = Новый Структура();
		
			ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(
				ИтогПоПериодамКорректировки.КонецНалоговогоПериода);
			СтруктураПараметров.Вставить("ВерсияПостановленияНДС1137", ВерсияПостановленияНДС1137);
				
			Если СтруктураПараметров.ВерсияПостановленияНДС1137 = 1 Тогда
				Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПокупок1137");
				СтруктураПараметров.ЗаполнениеДекларации = Ложь;
			ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 2 Тогда
				Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПокупок952");
				СтруктураПараметров.ЗаполнениеДекларации = Ложь;
			ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 3 Тогда 
				Если СтруктураПараметров.ЗаполнениеДекларации
				   И СтруктураПараметров.ПравилаЗаполнения = "2017Кв1" Тогда
					Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПокупок1137_2017");
				Иначе
					Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПокупок735");
				КонецЕсли;
			ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 4 Тогда
				Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПокупок981");
			ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
				Макет = ПолучитьОбщийМакет("КнигаПокупок534"); // Общий макет для книги и доп. листов
				СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
			КонецЕсли;
			
			ОбластьСтрокиПовтора = Макет.ПолучитьОбласть("СтрокиДляПовтора");
			
			Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
				Если СтруктураПараметров.ЗаполнениеДекларации Тогда
					СтруктураСекций.Вставить("ШапкаРаздел81", Макет.ПолучитьОбласть("ШапкаРаздел81"));
					СтруктураСекций.Вставить("ДекларацияИтоги", Макет.ПолучитьОбласть("ДекларацияИтоги81"));
					ОбластьСтрокиПовтора.Область("НомераГрафКнига").Видимость = Ложь;
					ОбластьСтрокиПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
				Иначе
					ОбластьСтрокиПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
					ОбластьСтрокиПовтора.Область("НомераГрафДекларация81").Видимость = Ложь;
				КонецЕсли;
			ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 >= 3 Тогда
				Если СтруктураПараметров.ЗаполнениеДекларации Тогда
					СтруктураСекций.Вставить("ШапкаРаздел81", Макет.ПолучитьОбласть("ШапкаРаздел81"));
					СтруктураСекций.Вставить("ДекларацияИтоги", Макет.ПолучитьОбласть("ДекларацияИтоги"));
					ОбластьСтрокиПовтора.Область("НомераГрафКнига").Видимость = Ложь;
				Иначе
					ОбластьСтрокиПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
				КонецЕсли;
			КонецЕсли;
			
			СтруктураСекций.Вставить("СекцияСтрока",     Макет.ПолучитьОбласть("Строка"));
			СтруктураСекций.Вставить("СтрокиДляПовтора", ОбластьСтрокиПовтора);
			
			Секция = Макет.ПолучитьОбласть("Строка");
			СтрокаИтого = Макет.ПолучитьОбласть("Итого");
			СтрокаВсего = Макет.ПолучитьОбласть("Всего");
			
			Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
				СекцияКонтрагент = Макет.ПолучитьОбласть("Контрагент");
				СекцияВсегоКонтрагент = Макет.ПолучитьОбласть("ВсегоКонтрагент");
			КонецЕсли;
			
			// Формирование шапки доп. листа
			ОкончаниеПредыдущегоРаздела = ТабличныйДокумент.ВысотаТаблицы;
			НомерЛиста = НомерЛиста + 1;
			
			СтруктураПараметров.Вставить("НалоговыйПериод",
				?(СтруктураПараметров.ЗаполнениеДекларации, СтруктураПараметров.НачалоНалоговогоПериода, ИтогПоПериодамКорректировки.НалоговыйПериод));
			СтруктураПараметров.Вставить("КонецНалоговогоПериода", КонецКвартала(ИтогПоПериодамКорректировки.КонецНалоговогоПериода));
			СтруктураПараметров.Вставить("ДатаОформления", ИтогПоПериодамКорректировки.ДатаОформления);
			
			Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
				УчетНДС.ВывестиШапкуДопЛиста(ТабличныйДокумент, Макет, СтруктураПараметров, НомерЛиста);
			КонецЕсли;
			
			СтруктураПараметров.ДатаФормированияДопЛиста = ИтогПоПериодамКорректировки.ДатаОформления;
			
			ИтогЗаПериод = ПолучитьИтогиЗаПериодКнигаПокупок(СтруктураПараметров);
			
			Если СтруктураПараметров.ЗаполнениеДокумента
				И СтруктураПараметров.ФорматПоПостановлению735 Тогда
				
				ОбщиеСведения = Новый Структура("НомерДопЛКнПок,Период,ОтчетГод,ДатаДопЛКнПок,Итого,Всего");
				
				ОбщиеСведения.НомерДопЛКнПок  = НомерЛиста;
				ОбщиеСведения.Период          = СтруктураПараметров.ПериодПоСКНП;
				ОбщиеСведения.ОтчетГод        = Строка(Формат(Год(ИтогПоПериодамКорректировки.НалоговыйПериод),"ЧГ=0"));
				ОбщиеСведения.ДатаДопЛКнПок   = Строка(Формат(ИтогПоПериодамКорректировки.ДатаОформления, "ДЛФ=Д"));
				
				Итого = Новый Структура("СумНДСВыч");
				Итого.СумНДСВыч = ИтогЗаПериод.НДС;
				
				ОбщиеСведения.Итого = Итого;
				
			КонецЕсли;
			
			Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
				СтрокаИтого.Параметры.Заполнить(ИтогЗаПериод);
				ТабличныйДокумент.Вывести(СтрокаИтого);
			Иначе
				ВывестиШапкуРаздела81Декларации(ТабличныйДокумент, Макет, СтруктураПараметров, НомерЛиста, ИтогЗаПериод);
			КонецЕсли;
			
			Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
				СтруктураСекций.Вставить("СекцияКонтрагент", Макет.ПолучитьОбласть("Контрагент"));
				СтруктураСекций.Вставить("СекцияВсегоКонтрагент", Макет.ПолучитьОбласть("ВсегоКонтрагент"));
			КонецЕсли;
			
			ПреобразоватьЗаписиДополнительногоЛистаКнигиПокупок(
				СтруктураПараметров,
				ИтогПоПериодамКорректировки,
				?(СтруктураПараметров.Свойство("РеквизитыДокумента"),СтруктураПараметров.РеквизитыДокумента, ИтогЗаПериод),
				ТабличныйДокумент,
				СтруктураСекций,
				?(СтруктураПараметров.Свойство("ТабличнаяЧасть"),СтруктураПараметров.ТабличнаяЧасть, Неопределено));
				
			Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
				СтрокаВсего.Параметры.Заполнить(ИтогЗаПериод);
				ТабличныйДокумент.Вывести(СтрокаВсего);
			КонецЕсли;
			
			Если СтруктураПараметров.ЗаполнениеДокумента
				И СтруктураПараметров.ФорматПоПостановлению735 Тогда
				
				Всего = Новый Структура("СумНДСВыч");
				Всего.СумНДСВыч = ИтогЗаПериод.НДС;
				
				ОбщиеСведения.Всего = Всего;
				
				СтруктураДанных = Новый Структура("ОбщиеСведения,Записи", ОбщиеСведения, СтруктураПараметров.Записи.Скопировать());
				СтруктураПараметров.Записи.Очистить();
				ДанныеОтчета.Добавить(СтруктураДанных);
				
			КонецЕсли;
			
			Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме 
				И НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
				ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
			КонецЕсли;
			
		КонецЦикла; // ИтогПоПериодамКорректировки.Следующий()
		
		// Записываем доп. листы в таблицу разделов отчета.
		НазваниеРаздела = СтрШаблон(НСтр("ru = 'Доп.листы за %1'"), НалоговыйПериод);
		Если СтруктураПараметров.СчетчикСегментовНалоговогоПериода > 1 Тогда
			НазваниеРаздела = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СтруктураПараметров.СчетчикСегментовНалоговогоПериода);
		КонецЕсли;
			
	    ДополнительныеПараметры = Новый Структура();
	    ДополнительныеПараметры.Вставить("ЭтоДопЛист", Истина);
		
		ПроверкаКонтрагентов.ДобавитьРазделОтчета(
			СтруктураПараметров, 
			НазваниеРаздела, 
			СтруктураПараметров.СчетчикСегментов, 
			ТабличныйДокумент,
			ДополнительныеПараметры);

		СтруктураПараметров.СчетчикСегментов = СтруктураПараметров.СчетчикСегментов + 1;
		
	КонецЦикла; // ИтогПоПериодам.Следующий()
	
	Если СтруктураПараметров.ЗаполнениеДекларации Тогда
		
		ИмяРаздела = "Раздел8_Прил1";
		
		// Запишем последний сегмент
		
		Если СтруктураПараметров.СчетчикСтрокТекущегоСегмента <> 0 Тогда
			
			// Записать сегменты
			ПерваяСтрокаСегмента = СтруктураПараметров.СчетчикСтрокДопЛиста - СтруктураПараметров.СчетчикСтрокТекущегоСегмента + 1;
			
			Если ПерваяСтрокаСегмента = 1 Тогда 
				ТабличныйДокумент.Область("НДСПриложение").Значение = ИтогЗаПериод.НДС; // Строка 190
			Иначе
				ЗаписатьИтогиВПервыйСегментРаздела81(СтруктураПараметров, ИтогЗаПериод);
			КонецЕсли;
			
				
		ИначеЕсли СтруктураПараметров.СчетчикСтрокТекущегоСегмента = 0
			И СтруктураПараметров.СчетчикСтрокДопЛиста <> 0 Тогда
			
			// Количество строк в сегменте совпало с предельным,
			// необходимо добавить строку итогов в записанный ранее сегмент табличного документа.
			
			ЗаписатьИтогиВПервыйСегментРаздела81(СтруктураПараметров, ИтогЗаПериод);
			
		КонецЕсли;
		
		ИтогиРаздел81.СумНДСИтП1Р8 = ИтогЗаПериод.НДС; // Итог с учетом всех дополнительных листов за налоговый период.
		
			
	ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
		И СтруктураПараметров.ФорматПоПостановлению735 Тогда
		СтруктураПараметров.ДанныеОтчета = ДанныеОтчета;
	КонецЕсли;
	
КонецПроцедуры

Процедура ЗаписатьИтогиВПервыйСегментРаздела81(СтруктураПараметров, ИтогЗаПериод)
	
	ВидДополнительногоФайла = "ТабличныйДокументРаздел8_Прил1.1";
	ИмяРаздела = "Раздел8_Прил1";


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

Процедура ВывестиШапкуРаздела81Декларации(ТабличныйДокумент, Макет, СтруктураПараметров, НомерДополнительногоЛиста, ИтогЗаПериод)
	
	ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
	
	Если НомерДополнительногоЛиста = 1 Тогда
		Секция = Макет.ПолучитьОбласть("ШапкаРаздел81");
		ТабличныйДокумент.Вывести(Секция); 
		Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
			ДекларацияИтоги = Макет.ПолучитьОбласть("ДекларацияИтоги81");
		Иначе
			ДекларацияИтоги = Макет.ПолучитьОбласть("ДекларацияИтоги");
		КонецЕсли;
		ДекларацияИтоги.Параметры.Заполнить(ИтогЗаПериод);
		ТабличныйДокумент.Вывести(ДекларацияИтоги);
	КонецЕсли;
	
	Секция = Макет.ПолучитьОбласть("ШапкаРаздел81НомерЛиста");
	Секция.Параметры.НомерЛиста = НомерДополнительногоЛиста;
	Секция.Параметры.ДатаСоставления = Формат(СтруктураПараметров.ДатаОформления, "ДФ=dd.MM.yyyy");
	ТабличныйДокумент.Вывести(Секция);
	
	Секция = Макет.ПолучитьОбласть("СтрокиДляПовтора");
	Секция.Область("НомераГрафКнига").Видимость = Ложь;
	Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
		Секция.Область("НомераГрафДекларация").Видимость = Ложь;
	КонецЕсли;

	ТабличныйДокумент.Вывести(Секция);
	
КонецПроцедуры

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

Процедура ИнициализироватьТаблицыДанныхНДС(СтруктураПараметров)

	Если СтруктураПараметров.ЗаполнениеДокумента
		И СтруктураПараметров.ФорматПоПостановлению735 Тогда
		
		Записи = Новый ТаблицаЗначений;
		
		Записи.Колонки.Добавить("НомПП",        ОбщегоНазначения.ОписаниеТипаЧисло(12, 0));
		Записи.Колонки.Добавить("НомерСчФ",     ОбщегоНазначения.ОписаниеТипаСтрока(1000));
		Записи.Колонки.Добавить("ДатаСчФ",      ОбщегоНазначения.ОписаниеТипаСтрока(10));
		Записи.Колонки.Добавить("НомИспрСчФ",   ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
		Записи.Колонки.Добавить("ДатаИспрСчФ",  ОбщегоНазначения.ОписаниеТипаСтрока(10));
		Записи.Колонки.Добавить("НомерКСчФ",    ОбщегоНазначения.ОписаниеТипаСтрока(1000));
		Записи.Колонки.Добавить("ДатаКСчФ",     ОбщегоНазначения.ОписаниеТипаСтрока(10));
		Записи.Колонки.Добавить("НомИспрКСчФ",  ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
		Записи.Колонки.Добавить("ДатаИспрКСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
		Записи.Колонки.Добавить("НаимПрод",     ОбщегоНазначения.ОписаниеТипаСтрока(1000));
		Записи.Колонки.Добавить("ИННЮЛ",        ОбщегоНазначения.ОписаниеТипаСтрока(10));
		Записи.Колонки.Добавить("КПП",          ОбщегоНазначения.ОписаниеТипаСтрока(9));
		Записи.Колонки.Добавить("ИННФЛ",        ОбщегоНазначения.ОписаниеТипаСтрока(12));
		Записи.Колонки.Добавить("КодОКВ",       ОбщегоНазначения.ОписаниеТипаСтрока(3));
		Записи.Колонки.Добавить("КодВидОпер",   Новый ОписаниеТипов("Массив"));
		Записи.Колонки.Добавить("СвДокУплНал",  Новый ОписаниеТипов("Массив"));
		Записи.Колонки.Добавить("ДатаПринУчет", Новый ОписаниеТипов("Массив"));
		Записи.Колонки.Добавить("СвПосредн");
		Записи.Колонки.Добавить("СумНДСВыч",    ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
		
		Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
			Записи.Колонки.Добавить("СвРегНом",    Новый ОписаниеТипов("Массив"));
			Записи.Колонки.Добавить("СтПокСчФВал", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
		Иначе
			Записи.Колонки.Добавить("НомерТД",         Новый ОписаниеТипов("Массив"));
			Записи.Колонки.Добавить("СтТовУчНалВсего", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
		КонецЕсли;
		
		Если СтруктураПараметров.ФормироватьДополнительныеЛисты Тогда
			ОбщиеСведения = Новый Структура("НомерДопЛКнПок,Период,ОтчетГод,ДатаДопЛКнПок,Итого,Всего");
			СтруктураПараметров.Вставить("ДанныеОтчета");
		Иначе
			ОбщиеСведения = Новый Структура("СумНДСВыч");
		КонецЕсли;
		
		СтруктураПараметров.Вставить("Записи",        Записи);
		СтруктураПараметров.Вставить("ОбщиеСведения", ОбщиеСведения);
		
	Иначе 
		
		Раздел8 = Новый ТаблицаЗначений;
		
		Раздел8.Колонки.Добавить("НомерПор", ОбщегоНазначения.ОписаниеТипаЧисло(12, 0));
		
		Раздел8.Колонки.Добавить("НомСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(0));
		Раздел8.Колонки.Добавить("ДатаСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(10));
		
		Раздел8.Колонки.Добавить("НомИспрСчФ", ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
		Раздел8.Колонки.Добавить("ДатаИспрСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
		
		Раздел8.Колонки.Добавить("НомКСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(0));
		Раздел8.Колонки.Добавить("ДатаКСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(10));
		
		Раздел8.Колонки.Добавить("НомИспрКСчФ", ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
		Раздел8.Колонки.Добавить("ДатаИспрКСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
		
		Если СтруктураПараметров.ЗаполнениеДекларации Тогда
			Если СтруктураПараметров.ПравилаЗаполнения = "2015Кв1" Тогда
				Раздел8.Колонки.Добавить("НомТД", ОбщегоНазначения.ОписаниеТипаСтрока(0));
			ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2017Кв1"
			      ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
			      ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4" Тогда
				Раздел8.Колонки.Добавить("РегНомТД", Новый ОписаниеТипов("Массив"));
			ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
			      ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
			      ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
				Раздел8.Колонки.Добавить("СвРегНом", Новый ОписаниеТипов("Массив"));
			КонецЕсли;
		КонецЕсли;
		
		Раздел8.Колонки.Добавить("ОКВ", ОбщегоНазначения.ОписаниеТипаСтрока(3));
		
		Раздел8.Колонки.Добавить("СтоимПокупВ", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
		Раздел8.Колонки.Добавить("СумНДСВыч", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
		
		Раздел8.Колонки.Добавить("КодВидОпер", Новый ОписаниеТипов("Массив"));
		
		Раздел8.Колонки.Добавить("ДокПдтвУпл", Новый ОписаниеТипов("Массив"));
		Раздел8.Колонки.Добавить("ДатаУчТов", Новый ОписаниеТипов("Массив"));
		
		Раздел8.Колонки.Добавить("СвПрод", Новый ОписаниеТипов("Массив"));
		Раздел8.Колонки.Добавить("СвПос"); // Тип не задается
		
		Раздел8.Колонки.Добавить("ДополнительныеСведения");
		
		Раздел81 = Раздел8.СкопироватьКолонки();
		Раздел81.Колонки.СумНДСВыч.Имя = "СумНДС";
		
		СтруктураПараметров.Вставить("ТаблицаРаздел8", Раздел8);
		СтруктураПараметров.Вставить("ТаблицаРаздел81", Раздел81);
		СтруктураПараметров.Вставить("ТабличныйДокументРаздел81");
		
		ИтогиРаздел8 = Новый Структура("СумНДСВсКПк");
		ИтогиРаздел81 = Новый Структура("СумНДСИтКПк,СумНДСИтП1Р8");
		
		СтруктураПараметров.Вставить("ИтогиРаздел8", ИтогиРаздел8);
		СтруктураПараметров.Вставить("ИтогиРаздел81", ИтогиРаздел81);
		
	КонецЕсли;
	
КонецПроцедуры

Процедура ПреобразоватьЗаписиКнигиПокупок(
	СтруктураПараметров,
	НаборЗаписей,
	ТабличныйДокумент,
	СтрокаИтогПоОрганизации,
	СтруктураСекций,
	ТаблицаДокумента)
	
	ПараметрыСтроки = СтруктураСекций.СекцияСтрока.Параметры;
	Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
		ПараметрыСтрокиРНПТ = СтруктураСекций.СекцияСтрокаРНПТ.Параметры;
	КонецЕсли;
	
	ИтогПоОрганизации = НаборЗаписей.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // Общий итог по организации
	ИтогПоОрганизации.Следующий();
	
	СтруктураПараметров.ЗаписьДополнительногоЛиста = Ложь;
	ДополнительнаяИнформация = ПолучитьДополнительнуюИнформациюПоСчетуФактуре(СтруктураПараметров);
	
	Если НЕ СтруктураПараметров.Свойство("ЗаполнениеДекларации") Тогда
		СтруктураПараметров.Вставить("ЗаполнениеДекларации", Ложь);
	ИначеЕсли СтруктураПараметров.ЗаполнениеДекларации И СтруктураПараметров.КонецПериода < '20150101' Тогда
		СтруктураПараметров.ЗаполнениеДекларации = Ложь;
	КонецЕсли;
	
	Счетчик = 0; // Счетчик строк книги покупок
	СчетчикСтрокТекущегоСегмента = 0; // Используется для сегментирования разделов декларации по НДС
	СчетчикСегментов = 1; // Число сформированных сегментов книги

	НазваниеРаздела = Нстр("ru='Основной раздел'");
	
	// Запоминаем итоговые суммы по организации.
	
	ЗаполнитьЗначенияСвойств(СтрокаИтогПоОрганизации, ИтогПоОрганизации);

	Если СтруктураПараметров.ЗаполнениеДекларации Тогда
		ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел8);
		СтруктураСекций.ДекларацияИтоги.Параметры.Заполнить(СтрокаИтогПоОрганизации);
		ТабличныйДокумент.Вывести(СтруктураСекций.ДекларацияИтоги);
		ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
	КонецЕсли;
	
	Если НЕ СтруктураПараметров.ЗаполнениеДокумента
		И НЕ СтруктураПараметров.ЗаполнениеДекларации
		И СтруктураПараметров.ГруппироватьПоКонтрагентам 
		И НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда // Только отчет по произвольной форме
		
		СтрокаИтогПоКонтрагенту = УчетНДС.НоваяСтрокаИтоговКнигиПокупок();
		
		ИтогПоКонтрагенту = ИтогПоОрганизации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
		Пока ИтогПоКонтрагенту.Следующий() Цикл
		
			// Запоминаем итоговые суммы по контрагенту.
			ЗаполнитьЗначенияСвойств(СтрокаИтогПоКонтрагенту, ИтогПоКонтрагенту);
		
			Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ИтогПоКонтрагенту, Истина) Тогда
				СтруктураСекций.СекцияКонтрагент.Параметры.Контрагент = ИтогПоКонтрагенту.Продавец;
				ТабличныйДокумент.Вывести(СтруктураСекций.СекцияКонтрагент);
				ТабличныйДокумент.НачатьГруппуСтрок();
			КонецЕсли;
			
			ИтогПоДокументу = ИтогПоКонтрагенту.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			
			Пока ИтогПоДокументу.Следующий() Цикл
			
				ИтогПоКоду = ИтогПоДокументу.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			
				Пока ИтогПоКоду.Следующий() Цикл
				
					ЗаписьКниги = ИтогПоКоду.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
				
					Пока ЗаписьКниги.Следующий() Цикл
						
						Если ЗаписьКниги.НДС + ЗаписьКниги.СуммаБезНДС = 0 Тогда
							Продолжить;
						КонецЕсли;
						
						Если ЗаписьКниги.СводныйКорректировочный
							И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4 Тогда
							
							ДетальнаяЗапись = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
						
							Пока ДетальнаяЗапись.Следующий() Цикл

								// Счетчики ведем всегда в целом по всем строкам набора,
								// чтобы если какие-то контрагенты будут отфильтрованы, то номера у строк сохранялись те же,
								// какие были бы в полном отчете.
								Счетчик = Счетчик + 1;
								СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1; 
								
								Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ДетальнаяЗапись) Тогда
									ПараметрыСтроки.Ном = Счетчик;
									
									ЗаполнитьСтрокуКнигиПокупок(
										ПараметрыСтроки, ДетальнаяЗапись, ДополнительнаяИнформация, СтруктураПараметров, Неопределено);
									
									ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
									УчетНДС.ДобавитьКонтрагентаНаПроверку(СтруктураПараметров, ДетальнаяЗапись, ОбластьТабличногоДокумента, , СчетчикСегментов);
								Иначе
									УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоКонтрагенту, ДетальнаяЗапись, СтруктураПараметров);
									УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоОрганизации, ДетальнаяЗапись, СтруктураПараметров);
								КонецЕсли;
							
							КонецЦикла; // ДетальнаяЗапись.Следующий()
							
						ИначеЕсли ЗаписьКниги.СводныйКомиссионный
							И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4 Тогда
						
							Счетчик = Счетчик + 1;
							СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
							
							Если СтруктураПараметров.ЗаполнениеДокумента 
								И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
								ПараметрыСтроки = ТаблицаДокумента.Добавить();
							КонецЕсли;
							
							ПараметрыСтроки.Ном = Счетчик;
							
							ЗаполнитьСтрокуКнигиПокупокСводныйКомиссионный(
								ПараметрыСтроки, ЗаписьКниги, ДополнительнаяИнформация, СтруктураПараметров);
							
							ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
							
						Иначе

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

			// Группировку по контрагенту не разрываем на разные сегменты,
			// поэтому количество записей в сегменте может быть чуть больше, чем предельное количество.
			Если СчетчикСтрокТекущегоСегмента >= СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
				
				УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
			
				ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментов);
				ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СчетчикСегментов, ТабличныйДокумент);
			
				// Очистим табличный документ и таблицу
				ТабличныйДокумент.Очистить();
				ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
			    
				// Обнулим счетчик текущего сегмента
				СчетчикСтрокТекущегоСегмента = 0;
				СчетчикСегментов = СчетчикСегментов + 1;
			    
			КонецЕсли;

		КонецЦикла; // ИтогПоКонтрагенту.Следующий()

	Иначе
	
		ИтогПоДокументу = ИтогПоОрганизации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);	
	
		Пока ИтогПоДокументу.Следующий() Цикл
		
			ИтогПоКоду = ИтогПоДокументу.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
			Пока ИтогПоКоду.Следующий() Цикл
			
				ЗаписьКниги = ИтогПоКоду.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
				
				Пока ЗаписьКниги.Следующий() Цикл
					
					Если ЗаписьКниги.НДС + ЗаписьКниги.СуммаБезНДС = 0 Тогда
						Продолжить;
					КонецЕсли;
					
					Если ЗаписьКниги.СводныйКорректировочный
						И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4 Тогда
					
						ДетальнаяЗапись = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
					
						Пока ДетальнаяЗапись.Следующий() Цикл

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

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

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

								// Очистим табличный документ и таблицу
								ТабличныйДокумент.Очистить();
								Если СтруктураПараметров.ЗаполнениеДекларации Тогда
									ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел8);
								КонецЕсли;
								ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
								
								// Обнулим счетчик текущего сегмента
								СчетчикСтрокТекущегоСегмента = 0;
								СчетчикСегментов = СчетчикСегментов + 1;
								
							КонецЕсли;
					
						КонецЦикла; // ДетальнаяЗапись.Следующий()
					
					ИначеЕсли ЗаписьКниги.СводныйКомиссионный
						И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4 Тогда
						
						Счетчик = Счетчик + 1;
						СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
						
						Если СтруктураПараметров.ЗаполнениеДокумента 
							И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
							ПараметрыСтроки = ТаблицаДокумента.Добавить();
						КонецЕсли;
						
						ПараметрыСтроки.Ном = Счетчик;
						
						ЗаполнитьСтрокуКнигиПокупокСводныйКомиссионный(
							ПараметрыСтроки, ЗаписьКниги, ДополнительнаяИнформация, СтруктураПараметров);
						
						Если НЕ СтруктураПараметров.ЗаполнениеДокумента 
							ИЛИ (СтруктураПараметров.ЗаполнениеДокумента И СтруктураПараметров.ФорматПоПостановлению735) Тогда
							СтруктураСекций.СекцияСтрока.Область(1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
							ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
						КонецЕсли;

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

							Если СтруктураПараметров.ЗаполнениеДекларации Тогда
								
									
								СтруктураПараметров.ТаблицаРаздел8.Очистить();
									
							Иначе

								ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментов);
								ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СчетчикСегментов, ТабличныйДокумент);
							
							КонецЕсли;
							
							// Очистим табличный документ и таблицу
							ТабличныйДокумент.Очистить();
							Если СтруктураПараметров.ЗаполнениеДекларации Тогда
								ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел8);
							КонецЕсли;
							ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
							
							// Обнулим счетчик текущего сегмента
							СчетчикСтрокТекущегоСегмента = 0;
							СчетчикСегментов = СчетчикСегментов + 1;
							
						КонецЕсли;

						
					Иначе

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

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

							Если СтруктураПараметров.ЗаполнениеДекларации Тогда
								
									
								СтруктураПараметров.ТаблицаРаздел8.Очистить();
									
							Иначе

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

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

	Если СтруктураПараметров.Свойство("СчетчикСегментов") Тогда
		СчетчикСегментов = СтруктураПараметров.СчетчикСегментов + 1;
	Иначе
		СчетчикСегментов = 1;
	КонецЕсли;
	
	Если СтруктураПараметров.Свойство("СчетчикСегментовНалоговогоПериода") Тогда
		СчетчикСегментовНалоговогоПериода = СтруктураПараметров.СчетчикСегментовНалоговогоПериода;
	Иначе
		СчетчикСегментовНалоговогоПериода = 1;
	КонецЕсли;

	НалоговыйПериод = ПредставлениеПериода(
		СтруктураПараметров.НалоговыйПериод, КонецДня(СтруктураПараметров.КонецНалоговогоПериода), "ФП = Истина");
	НазваниеРаздела = СтрШаблон(НСтр("ru = 'Доп.листы за %1'"), НалоговыйПериод);

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

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

							Иначе

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

							КонецЕсли;
									
							// Очистим табличный документ и таблицу
							ТабличныйДокумент.Очистить();
							Если СтруктураПараметров.ЗаполнениеДекларации Тогда
								ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел81);
							КонецЕсли;
							ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
							
							СтруктураПараметров.ТаблицаРаздел81.Очистить();
							
							// Обнулим счетчик текущего сегмента
							СчетчикСтрокТекущегоСегмента = 0;
							СчетчикСегментов = СчетчикСегментов + 1;
							СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода + 1;
							
						КонецЕсли;
						
						ИтогЗаПериод.ВсегоПокупок = ИтогЗаПериод.ВсегоПокупок + ЗаписьКниги.ВсегоПокупок;
						ИтогЗаПериод.СуммаБезНДС10 = ИтогЗаПериод.СуммаБезНДС10 + ЗаписьКниги.СуммаБезНДС10;
						ИтогЗаПериод.НДС10 = ИтогЗаПериод.НДС10 + ЗаписьКниги.НДС10;
						ИтогЗаПериод.СуммаБезНДС18 = ИтогЗаПериод.СуммаБезНДС18 + ЗаписьКниги.СуммаБезНДС18;
						ИтогЗаПериод.НДС18 = ИтогЗаПериод.НДС18 + ЗаписьКниги.НДС18;
						ИтогЗаПериод.НДС0 = ИтогЗаПериод.НДС0 + ЗаписьКниги.НДС0;
						ИтогЗаПериод.НДС  = ИтогЗаПериод.НДС + ЗаписьКниги.НДС;
						ИтогЗаПериод.СуммаСовсемБезНДС = ИтогЗаПериод.СуммаСовсемБезНДС + ЗаписьКниги.СуммаСовсемБезНДС;
						
					КонецЦикла; // ЗаписьКниги.Следующий()
				КонецЦикла; // ИтогПоКоду.Следующий()
			КонецЦикла; // ИтогПоДоговору.Следующий()
		КонецЦикла; // ИтогПоДокументу.Следующий()
	КонецЕсли;
	
	УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
	
	Если НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
		СтруктураПараметров.СчетчикСтрокДопЛиста = Счетчик;
		СтруктураПараметров.СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента;
		СтруктураПараметров.СчетчикСегментов = СчетчикСегментов;
		СтруктураПараметров.СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода;
	КонецЕсли;
	
КонецПроцедуры

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

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

	Если ПараметрыЗаполнения.СводныйКомиссионный
	   И ТипЗнч(ПараметрыЗаполнения.СчетФактураДокумент) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
		// Это вычет НДС после зачета полученного аванса, по которому оформлен сводный счет-фактура,
		// в этом случае особенности сводного счета-фактуры не применяются.
		СводныйКомиссионныйСчетФактура = Ложь;
	Иначе
		СводныйКомиссионныйСчетФактура = ПараметрыЗаполнения.СводныйКомиссионный;
	КонецЕсли;
	
	Если СводныйКомиссионныйСчетФактура Тогда
		// Начиная с отчетности за 4 квартал 2017 года (в соответствии с постановлением Правительства от 19.08.2017 №981)
		// при отражении вычета по счету-фактуре, составленному комиссионером, приобретающим товары (услуги) у двух
		// и более продавцов графы 9 и 10 не заполняются.
		Секция.Продавец = "";
		Секция.Графа10  = "";
		Графа9  = "";
		Графа10 = "";
			
	Иначе
		СоставСтроки.Вставить("ПродавецИНН", ПараметрыЗаполнения.ПродавецИНН);
		СоставСтроки.Вставить("ПродавецКПП", ПараметрыЗаполнения.ПродавецКПП);
		Графа10 = Строка(ПараметрыЗаполнения.ПродавецИНН) 
			+ ?(ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецКПП), "/" , "")
			+ Строка(ПараметрыЗаполнения.ПродавецКПП);
	КонецЕсли;
		
	// В соответствии с письмом ФНС России от 16.01.2018 N СД-4-3/480@ при регистрации корректировочных счетов-фактур в 
	// случае изменения стоимости отгрузок в сторону уменьшения по товарам п.8 ст.161 НК РФ (КВО 34)
	// в графе 16 ставится прочерк "-".
	Если ПараметрыЗаполнения.КодВидаОперации = "34" Тогда 
		ПараметрНДС = "-";
	Иначе
		ПараметрНДС = ЗаписьКниги.НДС;
	КонецЕсли;
	
	СоставСтроки.Вставить("Валюта", ?(ЗначениеЗаполнено(ПараметрыЗаполнения.Валюта),
		"" + ПараметрыЗаполнения.Валюта + ", " + ПараметрыЗаполнения.ВалютаКод, ""));
	СоставСтроки.Вставить("ВсегоПокупок",       ЗаписьКниги.ВсегоПокупок);
	СоставСтроки.Вставить("СуммаБезНДС18",      ЗаписьКниги.СуммаБезНДС18);
	СоставСтроки.Вставить("НДС18",              ЗаписьКниги.НДС18);
	СоставСтроки.Вставить("СуммаБезНДС10",      ЗаписьКниги.СуммаБезНДС10);
	СоставСтроки.Вставить("НДС10",              ЗаписьКниги.НДС10);
	СоставСтроки.Вставить("НДС0",               ЗаписьКниги.НДС0);
	СоставСтроки.Вставить("НДС",                ПараметрНДС);
	СоставСтроки.Вставить("СуммаСовсемБезНДС",  ЗаписьКниги.СуммаСовсемБезНДС);
	
	Если ПараметрыЗаполнения.КодВидаОперации = "18"
	 ИЛИ ПараметрыЗаполнения.СводныйКорректировочный Тогда
		// В соответствии с письмом ФНС России от 20.09.2016 N СД-4-3/17657@ (примеры отражения записей)
		// для корректировочного счет-фактуры на уменьшение стоимости реализованных ранее товаров
		// не предусмотрено заполнение графы 8 "Дата принятия товаров на учет".
		// Ориентируемся на код вида операции 18 или на признак "Сводный корректировочный" т.к. в этом случае 
		// используется КВО = "01".
		СоставСтроки.Вставить("ДатаОприходования",  "");
	Иначе
		СоставСтроки.Вставить("ДатаОприходования",  Формат(ЗаписьКниги.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
	КонецЕсли;
	
	СоставСтроки.Вставить("СчетФактура");
	Если ЗначениеЗаполнено(ЗаписьКниги.СчетФактураДокумент) Тогда
		СоставСтроки.СчетФактура = ЗаписьКниги.СчетФактураДокумент;
	КонецЕсли;
	
	ПредставлениеСФ = УчетНДС.ОпределитьДатуИНомерСФ(ПараметрыЗаполнения);
	
	СоставСтроки.Вставить("ДатаНомер",                   ПредставлениеСФ.ДатаНомер);
	СоставСтроки.Вставить("НомерДата",                   ПредставлениеСФ.НомерДата);
	СоставСтроки.Вставить("НомерОтДата",                 ПредставлениеСФ.НомерОтДата);
	
	СоставСтроки.Вставить("НомерДатаИсправления",        ПредставлениеСФ.НомерДатаИсправленный);
	СоставСтроки.Вставить("НомерОтДатаИсправленный",     ПредставлениеСФ.НомерОтДатаИсправленный);
	
	СоставСтроки.Вставить("НомерДатаКорректировки",      ПредставлениеСФ.НомерДатаКорректировочный);
	СоставСтроки.Вставить("НомерОтДатаКорректировочный", ПредставлениеСФ.НомерОтДатаКорректировочный);
	
	СоставСтроки.Вставить("НомерДатаИсправленияКорректировки",
		ПредставлениеСФ.НомерДатаИсправленныйКорректировочный);
	СоставСтроки.Вставить("НомерОтДатаИсправленныйКорректировочный",
		ПредставлениеСФ.НомерОтДатаИсправленныйКорректировочный);
	
	ТекстОплаты = "";
	СписокДатОплат = Новый СписокЗначений();
	
	ТекстОплатыСНомером = "";
	ТекстНомерОтДатаОплаты = "";
	СписокНомеровИДатОплат = Новый СписокЗначений();
	
	// Массив документов оплаты НДС для декларации с 1 кв 2015 года
	МассивДокПдтвУпл = Новый Массив();
	
	// Массив регистрационных номеров таможенных деклараций для декларации с 1 кв 2017 года.
	МассивРегНомТД = Новый Массив();
	
	ТекстНомерГТД = "";
	ТекстСтранаНомерГТД = "";
	
	ТекстГрафа9 = "";
	ТекстГрафа10 = "";
	МассивСвПрод = Новый Массив();
	
	СуммаСНДС = 0;
	
	СчетаФактуры = Новый Массив();
	СчетаФактурыДокументы = Новый Массив();
	
	Если ДетальнаяЗапись = Неопределено Тогда
		
		Если ЗначениеЗаполнено(ЗаписьКниги.ДатаОплаты) Тогда
			Если СписокДатОплат.НайтиПоЗначению(Формат(ЗаписьКниги.ДатаОплаты, "ДФ=dd.MM.yyyy")) = Неопределено тогда
				ТекстОплаты = ТекстОплаты 
					+ ?(НЕ ЗначениеЗаполнено(ТекстОплаты), "", "," + Символы.ПС) + Формат(ЗаписьКниги.ДатаОплаты, "ДФ=dd.MM.yyyy");
				СписокДатОплат.Добавить(Формат(ЗаписьКниги.ДатаОплаты, "ДФ=dd.MM.yyyy"));
			КонецЕсли;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(ЗаписьКниги.НомерДокументаОплаты) Тогда
			
			НомерДатаОплаты = СтрШаблон(НСтр("ru='%1;%2'"), 
				ЗаписьКниги.НомерДокументаОплаты, Формат(ЗаписьКниги.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
			НомерОтДатаОплаты = СтрШаблон(НСтр("ru='%1 от %2'"), 
				ЗаписьКниги.НомерДокументаОплаты, Формат(ЗаписьКниги.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
				
			Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено тогда
				
				ТекстОплатыСНомером = ТекстОплатыСНомером 
					+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", "," + Символы.ПС) + НомерДатаОплаты;
				ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты 
					+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", ";" + Символы.ПС) + НомерОтДатаОплаты;
					
				СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
				
				Если СтруктураПараметров.ЗаполнениеДекларации Тогда
					СтруктураДокПдтвУпл = Новый Структура("НомДокПдтвУпл,ДатаДокПдтвУпл");
					СтруктураДокПдтвУпл.НомДокПдтвУпл = ЗаписьКниги.НомерДокументаОплаты;
					СтруктураДокПдтвУпл.ДатаДокПдтвУпл = Формат(ЗаписьКниги.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
				Иначе
					СтруктураДокПдтвУпл = Новый Структура("НомерДокУплНал,ДатаДокУплНал");
					СтруктураДокПдтвУпл.НомерДокУплНал = ЗаписьКниги.НомерДокументаОплаты;
					СтруктураДокПдтвУпл.ДатаДокУплНал  = Формат(ЗаписьКниги.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
				КонецЕсли;
				МассивДокПдтвУпл.Добавить(СтруктураДокПдтвУпл);
				
			КонецЕсли;
		КонецЕсли;
		
		СоставСтроки.СчетФактура = ЗаписьКниги.СчетФактураДокументРасшифровка;

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

	Для Каждого СчетФактура Из СчетаФактуры Цикл
		
		Если ЗначениеЗаполнено(СчетФактура) Тогда
			СтрокаДополнительнойИнформации = ДополнительнаяИнформация.Найти(СчетФактура, "Ссылка"); 
		Иначе
			СтрокаДополнительнойИнформации = Неопределено;
		КонецЕсли;
		
		Если СтрокаДополнительнойИнформации <> Неопределено Тогда
			
			Если СокрЛП(СтрокаДополнительнойИнформации.ГТДиСтрана) <> "" Тогда
				ТекстСтранаНомерГТД = ТекстСтранаНомерГТД + ?(ТекстСтранаНомерГТД = "", "", ", ") 
					+ СокрЛП(СтрокаДополнительнойИнформации.ГТДиСтрана);
					
				Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 4 Тогда
					ТекстНомерГТД = ТекстНомерГТД + ?(ТекстНомерГТД = "", "", ";") 
						+ СокрЛП(СтрокаДополнительнойИнформации.РегистрационныйНомерТД);
				Иначе
					ТекстНомерГТД = ТекстНомерГТД + ?(ТекстНомерГТД = "", "", ";") 
						+ СокрЛП(СтрокаДополнительнойИнформации.ГТД);
				КонецЕсли;
			КонецЕсли;
			
			Если ЗначениеЗаполнено(СтрокаДополнительнойИнформации.СвРегНом) Тогда
				ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивСвРегНом, СтрокаДополнительнойИнформации.СвРегНом);
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	МассивРегНомТД = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекстНомерГТД, ";");
	Для Каждого ЭлементКоллекции Из МассивРегНомТД Цикл
		Если Не ЗначениеЗаполнено(ЭлементКоллекции) Тогда
			Продолжить;
		КонецЕсли;
		СтруктураСвРегНом = Новый Структура("РегНомПросл,КолТовПросл,СтоимТовПросл,ОКЕИ");
		СтруктураСвРегНом.РегНомПросл = ЭлементКоллекции;
		МассивСвРегНом.Добавить(СтруктураСвРегНом);
	КонецЦикла;

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

	Если ПараметрыЗаполнения.ВсегоПокупок < 0 И (ПараметрыЗаполнения.СуммаБезНДС <> 0 ИЛИ ПараметрыЗаполнения.НДС <> 0) Тогда

		// Для сторнирующей записи необходимо отразить показатели прослеживаемости с отрицательным знаком
		УчетНДСПереопределяемый.ПреобразоватьПоказателиРНПТКСторнирующейЗаписи(МассивСвРегНом);
	КонецЕсли;
	
	Если ЗначениеЗаполнено(МассивСвРегНом) Тогда
		// Выводим первую строку и сохраняем коллекцию в параметрах формирования
		ПервыйРНПТ = МассивСвРегНом[0];
		СоставСтроки.Вставить("РегНомер",     ПервыйРНПТ.РегНомПросл);
		СоставСтроки.Вставить("КолПрослеж",   ПервыйРНПТ.КолТовПросл);
		СоставСтроки.Вставить("СтоимПрослеж", ПервыйРНПТ.СтоимТовПросл);
		СоставСтроки.Вставить("ЕдПрослеж",    ПервыйРНПТ.ОКЕИ);
		СтруктураПараметров.Вставить("МассивСвРегНом", МассивСвРегНом);
	Иначе
		СоставСтроки.Вставить("РегНомер",     "");
		СоставСтроки.Вставить("КолПрослеж",   "");
		СоставСтроки.Вставить("СтоимПрослеж", "");
		СоставСтроки.Вставить("ЕдПрослеж",    "");
		СтруктураПараметров.Вставить("МассивСвРегНом", Неопределено);
	КонецЕсли;
		
	СоставСтроки.Вставить("НомерГТД",  ТекстСтранаНомерГТД);
	СоставСтроки.Вставить("НомерГТД_", ТекстНомерГТД);
	
	// Дополнительная информация по сводному комиссионному счету-фактуре (продавцы, платежно-расчетные документы)
	// в учете комитента-покупателя.
	СчетаФактурыДокументы = ОбщегоНазначенияБПВызовСервера.УдалитьПовторяющиесяЭлементыМассива(СчетаФактурыДокументы);
	
	Для Каждого СчетФактураДокумент Из СчетаФактурыДокументы Цикл
		
		Если ЗначениеЗаполнено(СчетФактураДокумент) Тогда
			СтрокаДополнительнойИнформации = ДополнительнаяИнформация.Найти(СчетФактураДокумент, "Ссылка");
		Иначе
			СтрокаДополнительнойИнформации = Неопределено;
		КонецЕсли;
		
		Если СтрокаДополнительнойИнформации <> Неопределено Тогда
			
			РеквизитыПлатежныхДокументов = СтрокаДополнительнойИнформации.МассивПлатежныеДокументы;
			
			Для Каждого ПлатежныйДокумент Из РеквизитыПлатежныхДокументов Цикл
				
				НомерДатаОплаты = "" + ПлатежныйДокумент.НомерДокументаОплаты 
					+ ";" + Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
				НомерОтДатыОплаты = "" + ПлатежныйДокумент.НомерДокументаОплаты 
					+ " от " + Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
				Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено тогда
					ТекстОплатыСНомером = ТекстОплатыСНомером 
					+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", ","+ Символы.ПС) + НомерДатаОплаты;
					ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты
					+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", ";"+ Символы.ПС) + НомерОтДатыОплаты;
					СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
					
					Если СтруктураПараметров.ЗаполнениеДекларации Тогда
						СтруктураДокПдтвУпл = Новый Структура("НомДокПдтвУпл,ДатаДокПдтвУпл");
						СтруктураДокПдтвУпл.НомДокПдтвУпл = ПлатежныйДокумент.НомерДокументаОплаты;
						СтруктураДокПдтвУпл.ДатаДокПдтвУпл = Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
					Иначе
						СтруктураДокПдтвУпл = Новый Структура("НомерДокУплНал,ДатаДокУплНал ");
						СтруктураДокПдтвУпл.НомерДокУплНал = ПлатежныйДокумент.НомерДокументаОплаты;
						СтруктураДокПдтвУпл.ДатаДокУплНал  = Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
					КонецЕсли;
					
					МассивДокПдтвУпл.Добавить(СтруктураДокПдтвУпл);
				КонецЕсли;
				
			КонецЦикла;
			
			Если СтруктураПараметров.ВерсияПостановленияНДС1137 < 4
				И НЕ ПустаяСтрока(СокрЛП(СтрокаДополнительнойИнформации.Графа9)) Тогда
				// Начиная с отчетности за 4 квартал 2017 года (в соответствии с постановлением Правительства от 19.08.2017 №981)
				// при отражении вычета по счету-фактуре, составленному комиссионером, приобретающим товары (услуги) у двух
				// и более продавцов графы 9 и 10 не заполняются.
				ТекстГрафа9 = ТекстГрафа9 + ?(ПустаяСтрока(ТекстГрафа9), "", ", ")
					+ СтрокаДополнительнойИнформации.Графа9;
				ТекстГрафа10 = ТекстГрафа10 + ?(ПустаяСтрока(ТекстГрафа10), "", ", ")
					+ СтрокаДополнительнойИнформации.Графа10;
				МассивСвПрод = СтрокаДополнительнойИнформации.МассивСвПрод;
			КонецЕсли;
			
		КонецЕсли;
	
	КонецЦикла;
	
	// В соответствии с письмом ФНС РФ от 22.02.2019 N СД-4-3/3108@,
	// если оплата таможенных платежей производится через единый лицевой счет в графе 7, выводится прочерк.
	Если ПараметрыЗаполнения.КодВидаОперации = "20"
	   И ПараметрыЗаполнения.НалоговыйПериод >= '20190101'
	   И Не ЗначениеЗаполнено(ТекстНомерОтДатаОплаты) Тогда
		ТекстНомерОтДатаОплаты = "-";
	КонецЕсли;
	
	СоставСтроки.Вставить("ДатаОплаты",  ТекстОплаты); // Постановление 1137 до редакции 735
	СоставСтроки.Вставить("НомерДатаОплаты", ТекстОплатыСНомером);
	СоставСтроки.Вставить("НомерОтДатаОплаты", ТекстНомерОтДатаОплаты);
	СоставСтроки.Вставить("Графа10",         ?(ПустаяСтрока(ТекстГрафа9), Графа10, ТекстГрафа10));
	
	Если СводныйКомиссионныйСчетФактура Тогда
		СоставСтроки.Вставить("Продавец");
	Иначе
		СоставСтроки.Вставить("Продавец", ?(ПустаяСтрока(ТекстГрафа9), ПараметрыЗаполнения.Продавец, ТекстГрафа9));
	КонецЕсли;
	
	Если НЕ ПустаяСтрока(ТекстГрафа9)
		ИЛИ СводныйКомиссионныйСчетФактура Тогда
		
		Посредник        = ПараметрыЗаполнения.Продавец;
		ПосредникИНН     = ПараметрыЗаполнения.ПродавецИНН;
		ПосредникКПП     = ПараметрыЗаполнения.ПродавецКПП;
		ПосредникИНН_КПП = Строка(ПараметрыЗаполнения.ПродавецИНН) 
			+ ?(ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецКПП), "/" + Строка(ПараметрыЗаполнения.ПродавецКПП), "");
		СоставСтроки.Вставить("Контрагент", ТекстГрафа9);

	ИначеЕсли ЗначениеЗаполнено(ПараметрыЗаполнения.Посредник) Тогда
		
		Посредник        = ПараметрыЗаполнения.Посредник;
		ПосредникИНН     = ПараметрыЗаполнения.ПосредникИНН;
		ПосредникКПП     = ПараметрыЗаполнения.ПосредникКПП;
		ПосредникИНН_КПП = Строка(ПараметрыЗаполнения.ПосредникИНН)
			+ ?(ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникКПП), "/" + Строка(ПараметрыЗаполнения.ПосредникКПП), "");
		
	Иначе
		
		Посредник = "";
		ПосредникИНН_КПП = "";
		ПосредникИНН = "";
		ПосредникКПП = "";
		
	КонецЕсли;
	
	СоставСтроки.Вставить("Посредник", Посредник);
	СоставСтроки.Вставить("ПосредникИНН_КПП", ПосредникИНН_КПП);
	
	ЗаполнитьЗначенияСвойств(Секция, СоставСтроки);
	
	Если СтруктураПараметров.ЗаполнениеДекларации Тогда
		
		ДополнительныеСведения = Новый Структура("Контрагент,ПредставлениеКонтрагента,Документ,ПредставлениеДокумента");
		
		СоставСтроки.Вставить("НомерПор", Секция.Ном);
		
		СоставСтроки.Вставить("НомСчФПрод",   ПредставлениеСФ.Номер);
		СоставСтроки.Вставить("ДатаСчФПрод",  ПредставлениеСФ.Дата);
		
		СоставСтроки.Вставить("НомИспрСчФ",   ПредставлениеСФ.НомерИсправленный);
		СоставСтроки.Вставить("ДатаИспрСчФ",  ПредставлениеСФ.ДатаИсправленный);
		
		СоставСтроки.Вставить("НомКСчФПрод",  ПредставлениеСФ.НомерКорректировочный);
		СоставСтроки.Вставить("ДатаКСчФПрод", ПредставлениеСФ.ДатаКорректировочный);
		
		СоставСтроки.Вставить("НомИспрКСчФ",  ПредставлениеСФ.НомерИсправленныйКорректировочный);
		СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
		
		Если СтруктураПараметров.ПравилаЗаполнения = "2015Кв1" Тогда
			СоставСтроки.Вставить("НомТД", ТекстНомерГТД);
		ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2017Кв1"
			ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
			ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4" Тогда
			Если ЗначениеЗаполнено(ТекстНомерГТД) Тогда
				РегНомТДНеуникальные = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекстНомерГТД, ";");
				МассивРегНомТД = ОбщегоНазначенияКлиентСервер.СвернутьМассив(РегНомТДНеуникальные);
			КонецЕсли;
			СоставСтроки.Вставить("РегНомТД", МассивРегНомТД);
		ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
		      ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
		      ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
			СоставСтроки.Вставить("СвРегНом", МассивСвРегНом);
		КонецЕсли;
		
		СоставСтроки.Вставить("ОКВ", Строка(ПараметрыЗаполнения.ВалютаКод));
		
		СоставСтроки.Вставить("СтоимПокупВ", СоставСтроки.ВсегоПокупок);
		СоставСтроки.Вставить("СумНДСВыч", СоставСтроки.НДС);
		СоставСтроки.Вставить("СумНДС", СоставСтроки.НДС); // Для раздела 8.1
		
		МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрыЗаполнения.КодВидаОперации, ";");
		СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
		
		НеВыгружатьПродавца = МассивКодВидОпер.Найти("19") <> Неопределено ИЛИ МассивКодВидОпер.Найти("20") <> Неопределено;
		
		МассивДатаУчТов = Новый Массив();
		Если ЗначениеЗаполнено(ЗаписьКниги.ДатаПринятияНаУчет) Тогда
			МассивДатаУчТов.Добавить(Формат(ЗаписьКниги.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
		КонецЕсли; 
		
		СоставСтроки.Вставить("ДатаУчТов",  МассивДатаУчТов);
		СоставСтроки.Вставить("ДокПдтвУпл", МассивДокПдтвУпл);
		
		Если (СтруктураПараметров.ПравилаЗаполнения = "2020Кв4" 
			ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
			ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
			ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1")
			И НеВыгружатьПродавца Тогда 
		   // Для кодов операций 19, 20, 27, 28 сведения о продавце не выгружаются (приказ ФНС России от 19.08.2020 № ЕД-7-3/591@).
		   // При этом для кодов 27 и 28 это требование удовлетворялось уже с 2019кв1 (условие ниже).
			
			МассивСвПрод.Очистить();
			СоставСтроки.Вставить("СвПрод", МассивСвПрод);
			
			Если ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникСсылка)
				И (ЗначениеЗаполнено(ПосредникИНН) ИЛИ ЗначениеЗаполнено(ПосредникКПП)) Тогда
				СтруктураРеквизитовПосредника = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПосредникИНН, ПосредникКПП);
				СтруктураРеквизитовПосредника.Вставить("Контрагент", ПараметрыЗаполнения.ПосредникСсылка);
				СтруктураРеквизитовПосредника.Вставить("КонтрагентНаименование", ПараметрыЗаполнения.Посредник);
				СоставСтроки.Вставить("СвПос", СтруктураРеквизитовПосредника);
			КонецЕсли;
			
		ИначеЕсли (СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
			ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4"
			ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
			ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
			ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1")
			И СводныйКомиссионныйСчетФактура Тогда
			
			МассивСвПрод.Очистить();
			СоставСтроки.Вставить("СвПрод", МассивСвПрод);
			
			Если ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецИНН)
			 ИЛИ ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецКПП) Тогда
				СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
					ПараметрыЗаполнения.ПродавецИНН, ПараметрыЗаполнения.ПродавецКПП);
				СтруктураРеквизитовКонтрагента.Вставить("Контрагент", ПараметрыЗаполнения.Контрагент);
				СтруктураРеквизитовКонтрагента.Вставить("КонтрагентНаименование", ПараметрыЗаполнения.Продавец);
				СоставСтроки.Вставить("СвПос", СтруктураРеквизитовКонтрагента);
			КонецЕсли;
				
		Иначе
			
			Если МассивСвПрод.Количество() = 0 Тогда
				Если ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецИНН)
				 ИЛИ ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецКПП) Тогда
					СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
						ПараметрыЗаполнения.ПродавецИНН, ПараметрыЗаполнения.ПродавецКПП);
					СтруктураРеквизитовКонтрагента.Вставить("Контрагент", ПараметрыЗаполнения.Контрагент);
					СтруктураРеквизитовКонтрагента.Вставить("КонтрагентНаименование", ПараметрыЗаполнения.Продавец);
					МассивСвПрод.Добавить(СтруктураРеквизитовКонтрагента);
				КонецЕсли;
				ДополнительныеСведения.Контрагент = ПараметрыЗаполнения.Контрагент;
				ДополнительныеСведения.ПредставлениеКонтрагента = ПараметрыЗаполнения.Продавец;
			Иначе
				ДополнительныеСведения.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
				ДополнительныеСведения.ПредставлениеКонтрагента = НСтр("ru='Сводные счета-фактуры'");
			КонецЕсли;
			
			СоставСтроки.Вставить("СвПрод", МассивСвПрод);
			
			Если ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникСсылка)
				И (ЗначениеЗаполнено(ПосредникИНН) ИЛИ ЗначениеЗаполнено(ПосредникКПП)) Тогда
				СтруктураРеквизитовПосредника = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПосредникИНН, ПосредникКПП);
				СтруктураРеквизитовПосредника.Вставить("Контрагент", ПараметрыЗаполнения.ПосредникСсылка);
				СтруктураРеквизитовПосредника.Вставить("КонтрагентНаименование", ПараметрыЗаполнения.Посредник);
				СоставСтроки.Вставить("СвПос", СтруктураРеквизитовПосредника);
			КонецЕсли;
			
		КонецЕсли;
		
		Если ЗначениеЗаполнено(ПредставлениеСФ.НомерКорректировочный) Тогда
			ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
				НСтр("ru='Корректировочный счет-фактура № %1 от %2 на сумму %3 %4'"), 
				ПредставлениеСФ.НомерКорректировочный, 
				ПредставлениеСФ.ДатаКорректировочный, 
				Формат(СоставСтроки.ВсегоПокупок, "ЧДЦ=2; ЧН="),
				ПараметрыЗаполнения.ВалютаНаименование);
		Иначе
			ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
				НСтр("ru='%1 на сумму %2 %3'"), 
				ПредставлениеСФ.Представление, 
				Формат(СоставСтроки.ВсегоПокупок, "ЧДЦ=2; ЧН="),
				ПараметрыЗаполнения.ВалютаНаименование);
		КонецЕсли;
		
		ДополнительныеСведения.Документ = СоставСтроки.СчетФактура;
		СоставСтроки.Вставить("ДополнительныеСведения", ДополнительныеСведения);
		
		Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
			СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел81.Добавить();
		Иначе
			СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел8.Добавить();
		КонецЕсли;
		
		ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
		
	ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
		И СтруктураПараметров.ФорматПоПостановлению735 Тогда
		
		СоставСтроки.Вставить("НомПП",        Секция.Ном);
		СоставСтроки.Вставить("НомерСчФ",     ПредставлениеСФ.Номер);
		СоставСтроки.Вставить("ДатаСчФ",      ПредставлениеСФ.Дата);
		СоставСтроки.Вставить("НомИспрСчФ",   ПредставлениеСФ.НомерИсправленный);
		СоставСтроки.Вставить("ДатаИспрСчФ",  ПредставлениеСФ.ДатаИсправленный);
		СоставСтроки.Вставить("НомерКСчФ",    ПредставлениеСФ.НомерКорректировочный);
		СоставСтроки.Вставить("ДатаКСчФ",     ПредставлениеСФ.ДатаКорректировочный);
		СоставСтроки.Вставить("НомИспрКСчФ",  ПредставлениеСФ.НомерИсправленныйКорректировочный);
		СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
		
		МассивНомТД = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекстНомерГТД, ";");
		СоставСтроки.Вставить("НомерТД", МассивНомТД);
		
		Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5
		   И Не ЗначениеЗаполнено(ПараметрыЗаполнения.ВалютаКод) Тогда
			ВалютаКод = "643";
		Иначе
			ВалютаКод = Строка(ПараметрыЗаполнения.ВалютаКод);
		КонецЕсли;
		СоставСтроки.Вставить("КодОКВ",          ВалютаКод);
		
		СоставСтроки.Вставить("СтТовУчНалВсего", СоставСтроки.ВсегоПокупок);
		СоставСтроки.Вставить("СтПокСчФВал",     СоставСтроки.ВсегоПокупок);
		СоставСтроки.Вставить("СумНДСВыч",       ?(СоставСтроки.НДС = 0, "без НДС", СоставСтроки.НДС));
		
		МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрыЗаполнения.КодВидаОперации, ";");
		СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
		
		МассивДатаПринУчет = Новый Массив();
		Если ЗначениеЗаполнено(ЗаписьКниги.ДатаПринятияНаУчет) Тогда
			МассивДатаПринУчет.Добавить(Формат(ЗаписьКниги.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
		КонецЕсли; 
		
		СоставСтроки.Вставить("ДатаПринУчет", МассивДатаПринУчет);
		СоставСтроки.Вставить("СвДокУплНал", МассивДокПдтвУпл);
		
		СтруктураРеквизитовКонтрагента = Новый Структура();
		Если МассивСвПрод.Количество() = 0
			И НЕ ПустаяСтрока(ПараметрыЗаполнения.ПродавецИНН) Тогда
			СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПараметрыЗаполнения.ПродавецИНН, ПараметрыЗаполнения.ПродавецКПП);
		ИначеЕсли МассивСвПрод.Количество() > 0 Тогда
			СтруктураРеквизитовКонтрагента = МассивСвПрод[0];
		КонецЕсли;
		
		Если СтруктураРеквизитовКонтрагента.Свойство("ИННФЛ") Тогда
			СоставСтроки.Вставить("ИННФЛ", СтруктураРеквизитовКонтрагента.ИННФЛ);
		ИначеЕсли СтруктураРеквизитовКонтрагента.Свойство("ИННЮЛ") Тогда
			СоставСтроки.Вставить("ИННЮЛ", СтруктураРеквизитовКонтрагента.ИННЮЛ);
			СоставСтроки.Вставить("КПП", СтруктураРеквизитовКонтрагента.КПП);
		КонецЕсли;

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

	КонецЕсли;
	
КонецПроцедуры

// Не используется с 2019Кв1
Процедура ЗаполнитьСтрокуКнигиПокупокСводныйКомиссионный(
	Секция, ДетальнаяЗапись, ДополнительнаяИнформация, СтруктураПараметров)

	СоставСтроки = Новый Структура;
	ТекстОплаты = "";
	СписокДатОплат = Новый СписокЗначений();
	
	ТекстОплатыСНомером = "";
	ТекстНомерОтДатаОплаты = "";
	СписокНомеровИДатОплат = Новый СписокЗначений();
	
	МассивДокПдтвУпл = Новый Массив();
	
	// Массив регистрационных номеров таможенных деклараций для декларации с 1 кв 2017 года.
	МассивРегНомТД = Новый Массив();
	
	ТекстНомерГТД = "";
	ТекстСтранаНомерГТД = "";
	
	ТекстГрафа9 = "";
	ТекстГрафа10 = "";
	МассивСвПрод = Новый Массив();
	
	СуммаСНДС = 0;
	
	СчетаФактуры = Новый Массив();
	СчетаФактурыДокументы = Новый Массив();
	
	ЗаписьКнигиДетальная = ДетальнаяЗапись.Выбрать(ОбходРезультатаЗапроса.Прямой);
	КоличествоЗаписей = ЗаписьКнигиДетальная.Количество();
	ВсегоПокупок = 0;
	НДС = 0;
	СчетчикЗаписей = 0;
	
	Пока ЗаписьКнигиДетальная.Следующий() Цикл
		
		ЗаполнитьЗначенияСвойств(Секция, ЗаписьКнигиДетальная);
		
		СчетчикЗаписей = СчетчикЗаписей + 1;
		
		// Произведем суммирование по контрагентам.
		Если ЗаписьКнигиДетальная.НаАванс Тогда 
			ВсегоПокупок = ВсегоПокупок + ЗаписьКнигиДетальная.ВсегоПокупок;
		ИначеЕсли ВсегоПокупок = 0 Тогда 
			ВсегоПокупок = ЗаписьКнигиДетальная.ВсегоПокупок;
		КонецЕсли;
		НДС = НДС + ЗаписьКнигиДетальная.НДС;
		
		Если КоличествоЗаписей = СчетчикЗаписей Тогда
			
			ВалютаКод = Строка(ЗаписьКнигиДетальная.ВалютаКод);
			ВалютаНаименование = ЗаписьКнигиДетальная.ВалютаНаименование;
			
			Если ЗначениеЗаполнено(ЗаписьКнигиДетальная.НомерДокументаОплаты) Тогда
				
				НомерДатаОплаты = СтрШаблон(НСтр("ru='%1;%2'"), 
					ЗаписьКнигиДетальная.НомерДокументаОплаты, Формат(ЗаписьКнигиДетальная.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
				НомерОтДатаОплаты = СтрШаблон(НСтр("ru='%1 от %2'"), 
					ЗаписьКнигиДетальная.НомерДокументаОплаты, Формат(ЗаписьКнигиДетальная.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
					
				Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено тогда
					
					ТекстОплатыСНомером = ТекстОплатыСНомером 
						+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", "," + Символы.ПС) + НомерДатаОплаты;
					ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты 
						+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", "," + Символы.ПС) + НомерОтДатаОплаты;
						
					СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
					
					Если СтруктураПараметров.ЗаполнениеДекларации Тогда
						СтруктураДокПдтвУпл = Новый Структура("НомДокПдтвУпл,ДатаДокПдтвУпл");
						СтруктураДокПдтвУпл.НомДокПдтвУпл = ЗаписьКнигиДетальная.НомерДокументаОплаты;
						СтруктураДокПдтвУпл.ДатаДокПдтвУпл = Формат(ЗаписьКнигиДетальная.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
					Иначе
						СтруктураДокПдтвУпл = Новый Структура("НомерДокУплНал,ДатаДокУплНал");
						СтруктураДокПдтвУпл.НомерДокУплНал = ЗаписьКнигиДетальная.НомерДокументаОплаты;
						СтруктураДокПдтвУпл.ДатаДокУплНал  = Формат(ЗаписьКнигиДетальная.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
					КонецЕсли;
					МассивДокПдтвУпл.Добавить(СтруктураДокПдтвУпл);
					
				КонецЕсли;
			КонецЕсли;
			
			СоставСтроки.Вставить("СчетФактура");
			СоставСтроки.СчетФактура = ЗаписьКнигиДетальная.СчетФактураДокументРасшифровка;

			СчетаФактуры.Добавить(ЗаписьКнигиДетальная.СчетФактура);
			СчетаФактурыДокументы.Добавить(ЗаписьКнигиДетальная.СчетФактураДокумент);
			
			ЗаполнитьЗначенияСвойств(Секция, ЗаписьКнигиДетальная);
			
			СоставСтроки.Вставить("КодОперации", ЗаписьКнигиДетальная.КодВидаОперации);
			СоставСтроки.Вставить("ПродавецИНН", ЗаписьКнигиДетальная.ПродавецИНН);
			СоставСтроки.Вставить("ПродавецКПП", ЗаписьКнигиДетальная.ПродавецКПП);
			
			ПредставлениеСФ = УчетНДС.ОпределитьДатуИНомерСФ(ЗаписьКнигиДетальная);
			
			СоставСтроки.Вставить("ДатаНомер",                   ПредставлениеСФ.ДатаНомер);
			СоставСтроки.Вставить("НомерДата",                   ПредставлениеСФ.НомерДата);
			СоставСтроки.Вставить("НомерОтДата",                 ПредставлениеСФ.НомерОтДата);
			
			СоставСтроки.Вставить("НомерДатаИсправления",        ПредставлениеСФ.НомерДатаИсправленный);
			СоставСтроки.Вставить("НомерОтДатаИсправленный",     ПредставлениеСФ.НомерОтДатаИсправленный);
			
			СоставСтроки.Вставить("НомерДатаКорректировки",      ПредставлениеСФ.НомерДатаКорректировочный);
			СоставСтроки.Вставить("НомерОтДатаКорректировочный", ПредставлениеСФ.НомерОтДатаКорректировочный);
			
			СоставСтроки.Вставить("НомерДатаИсправленияКорректировки",
				ПредставлениеСФ.НомерДатаИсправленныйКорректировочный);
			СоставСтроки.Вставить("НомерОтДатаИсправленныйКорректировочный",
				ПредставлениеСФ.НомерОтДатаИсправленныйКорректировочный);
			
			Графа10 = Строка(ЗаписьКнигиДетальная.ПродавецИНН) 
				+ ?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПродавецКПП), "/" , "")
				+ Строка(ЗаписьКнигиДетальная.ПродавецКПП);
			
			СоставСтроки.Вставить("Валюта", ?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.Валюта),
				"" + ЗаписьКнигиДетальная.Валюта + ", " + ЗаписьКнигиДетальная.ВалютаКод, ""));
			
			СоставСтроки.Вставить("ВсегоПокупок",      ВсегоПокупок);
			СоставСтроки.Вставить("НДС",               НДС);
			СоставСтроки.Вставить("СуммаБезНДС18",     0);
			СоставСтроки.Вставить("НДС18",             0);
			СоставСтроки.Вставить("СуммаБезНДС10",     0);
			СоставСтроки.Вставить("НДС10",             0);
			СоставСтроки.Вставить("НДС0",              0);
			СоставСтроки.Вставить("СуммаСовсемБезНДС", 0);
			СоставСтроки.Вставить("ДатаОприходования", Формат(ЗаписьКнигиДетальная.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
			
			// ГТД и страна происхождения
			СчетаФактуры = ОбщегоНазначенияБПВызовСервера.УдалитьПовторяющиесяЭлементыМассива(СчетаФактуры);
			
			Для Каждого СчетФактура Из СчетаФактуры Цикл
				
				Если ЗначениеЗаполнено(СчетФактура) Тогда
					СтрокаДополнительнойИнформации = ДополнительнаяИнформация.Найти(СчетФактура, "Ссылка"); 
				Иначе
					СтрокаДополнительнойИнформации = Неопределено;
				КонецЕсли;
				
				Если СтрокаДополнительнойИнформации <> Неопределено Тогда
					
					Если СокрЛП(СтрокаДополнительнойИнформации.ГТДиСтрана) <> "" Тогда
						ТекстСтранаНомерГТД = ТекстСтранаНомерГТД + ?(ТекстСтранаНомерГТД = "", "", ", ") 
							+ СокрЛП(СтрокаДополнительнойИнформации.ГТДиСтрана);
						ТекстНомерГТД = ТекстНомерГТД + ?(ТекстНомерГТД = "", "", ", ") 
							+ СокрЛП(СтрокаДополнительнойИнформации.ГТД);
						МассивРегНомТД.Добавить(СокрЛП(СтрокаДополнительнойИнформации.ГТД));
					КонецЕсли;
					
				КонецЕсли;
				
			КонецЦикла;
			
			СоставСтроки.Вставить("НомерГТД",  ТекстСтранаНомерГТД);
			СоставСтроки.Вставить("НомерГТД_", ТекстНомерГТД);
			
			// Дополнительная информация по сводному комиссионному счету-фактуре (продавцы, платежно-расчетные документы)
			// в учете комитента-покупателя
			СчетаФактурыДокументы = ОбщегоНазначенияБПВызовСервера.УдалитьПовторяющиесяЭлементыМассива(СчетаФактурыДокументы);
			
			Для Каждого СчетФактураДокумент Из СчетаФактурыДокументы Цикл
				
				Если ЗначениеЗаполнено(СчетФактураДокумент) Тогда
					СтрокаДополнительнойИнформации = ДополнительнаяИнформация.Найти(СчетФактураДокумент, "Ссылка");
				Иначе
					СтрокаДополнительнойИнформации = Неопределено;
				КонецЕсли;
				
				Если СтрокаДополнительнойИнформации <> Неопределено Тогда
					
					РеквизитыПлатежныхДокументов = СтрокаДополнительнойИнформации.МассивПлатежныеДокументы;
					
					Для Каждого ПлатежныйДокумент Из РеквизитыПлатежныхДокументов Цикл
						
						НомерДатаОплаты = "" + ПлатежныйДокумент.НомерДокументаОплаты 
							+ ";" + Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
						НомерОтДатыОплаты = "" + ПлатежныйДокумент.НомерДокументаОплаты 
							+ " от " + Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
						
						Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено тогда
							
							ТекстОплатыСНомером = ТекстОплатыСНомером 
								+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", ","+ Символы.ПС) + НомерДатаОплаты;
								СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
							
							ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты
								+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", ";"+ Символы.ПС) + НомерОтДатыОплаты;
								СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
								
							Если СтруктураПараметров.ЗаполнениеДекларации Тогда
								СтруктураДокПдтвУпл = Новый Структура("НомДокПдтвУпл,ДатаДокПдтвУпл");
								СтруктураДокПдтвУпл.НомДокПдтвУпл = ПлатежныйДокумент.НомерДокументаОплаты;
								СтруктураДокПдтвУпл.ДатаДокПдтвУпл = Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
							Иначе
								СтруктураДокПдтвУпл = Новый Структура("НомерДокУплНал,ДатаДокУплНал ");
								СтруктураДокПдтвУпл.НомерДокУплНал = ПлатежныйДокумент.НомерДокументаОплаты;
								СтруктураДокПдтвУпл.ДатаДокУплНал  = Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
							КонецЕсли;
							
							МассивДокПдтвУпл.Добавить(СтруктураДокПдтвУпл);
						КонецЕсли;
						
					КонецЦикла;
					
					Если НЕ ПустаяСтрока(СокрЛП(СтрокаДополнительнойИнформации.Графа9)) Тогда
						ТекстГрафа9 = ТекстГрафа9 + ?(ПустаяСтрока(ТекстГрафа9), "", ", ")
						+ СтрокаДополнительнойИнформации.Графа9;
						ТекстГрафа10 = ТекстГрафа10 + ?(ПустаяСтрока(ТекстГрафа10), "", ", ")
						+ СтрокаДополнительнойИнформации.Графа10;
						МассивСвПрод = СтрокаДополнительнойИнформации.МассивСвПрод;
					КонецЕсли;
					
				ИначеЕсли ЗаписьКнигиДетальная.НаАванс Тогда
						
					Если ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПродавецИНН)
					 ИЛИ ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПродавецКПП) Тогда
						СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
							ЗаписьКнигиДетальная.ПродавецИНН, ЗаписьКнигиДетальная.ПродавецКПП);
						СтруктураРеквизитовКонтрагента.Вставить("Контрагент", ЗаписьКнигиДетальная.Контрагент);
						СтруктураРеквизитовКонтрагента.Вставить("КонтрагентНаименование", ЗаписьКнигиДетальная.Продавец);
						МассивСвПрод.Добавить(СтруктураРеквизитовКонтрагента);
					КонецЕсли;
					
				КонецЕсли;
				
			КонецЦикла;
			
			СоставСтроки.Вставить("НомерДатаОплаты", ТекстОплатыСНомером);
			СоставСтроки.Вставить("НомерОтДатаОплаты", ТекстНомерОтДатаОплаты);
			СоставСтроки.Вставить("Продавец",        ?(ПустаяСтрока(ТекстГрафа9), ЗаписьКнигиДетальная.Продавец, ТекстГрафа9));
			СоставСтроки.Вставить("Графа10",         ?(ПустаяСтрока(ТекстГрафа9), Графа10, ТекстГрафа10));
			
			Если НЕ ПустаяСтрока(ТекстГрафа9) Тогда
				
				Посредник        = ЗаписьКнигиДетальная.Продавец;
				ПосредникИНН     = ЗаписьКнигиДетальная.ПродавецИНН;
				ПосредникКПП     = ЗаписьКнигиДетальная.ПродавецКПП;
				ПосредникИНН_КПП = Строка(ЗаписьКнигиДетальная.ПродавецИНН) 
				+ ?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПродавецКПП), "/" + Строка(ЗаписьКнигиДетальная.ПродавецКПП), "");
				СоставСтроки.Вставить("Контрагент", ТекстГрафа9);
				ПосредникСсылка = ЗаписьКнигиДетальная.Контрагент;
				
			ИначеЕсли ЗначениеЗаполнено(ЗаписьКнигиДетальная.Посредник) Тогда
				
				Посредник        = ЗаписьКнигиДетальная.Посредник;
				ПосредникИНН     = ЗаписьКнигиДетальная.ПосредникИНН;
				ПосредникКПП     = ЗаписьКнигиДетальная.ПосредникКПП;
				ПосредникИНН_КПП = Строка(ЗаписьКнигиДетальная.ПосредникИНН)
					+ ?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПосредникКПП), "/" + Строка(ЗаписьКнигиДетальная.ПосредникКПП), "");
				ПосредникСсылка  = ЗаписьКнигиДетальная.ПосредникСсылка;
			Иначе
				
				Посредник = "";
				ПосредникИНН_КПП = "";
				ПосредникИНН = "";
				ПосредникКПП = "";
				ПосредникСсылка = Справочники.Контрагенты.ПустаяСсылка();
				
			КонецЕсли;
			
			СоставСтроки.Вставить("Посредник", Посредник);
			СоставСтроки.Вставить("ПосредникИНН_КПП", ПосредникИНН_КПП);
			
			ЗаполнитьЗначенияСвойств(Секция, СоставСтроки);
			
		КонецЕсли;
		
	КонецЦикла;
	
	Если СтруктураПараметров.ЗаполнениеДекларации Тогда
		
		ДополнительныеСведения = Новый Структура("Контрагент,ПредставлениеКонтрагента,Документ,ПредставлениеДокумента");
		
		СоставСтроки.Вставить("НомерПор", Секция.Ном);
		
		СоставСтроки.Вставить("НомСчФПрод",   ПредставлениеСФ.Номер);
		СоставСтроки.Вставить("ДатаСчФПрод",  ПредставлениеСФ.Дата);
		
		СоставСтроки.Вставить("НомИспрСчФ",   ПредставлениеСФ.НомерИсправленный);
		СоставСтроки.Вставить("ДатаИспрСчФ",  ПредставлениеСФ.ДатаИсправленный);
		
		СоставСтроки.Вставить("НомКСчФПрод",  ПредставлениеСФ.НомерКорректировочный);
		СоставСтроки.Вставить("ДатаКСчФПрод", ПредставлениеСФ.ДатаКорректировочный);
		
		СоставСтроки.Вставить("НомИспрКСчФ",  ПредставлениеСФ.НомерИсправленныйКорректировочный);
		СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
		
		Если СтруктураПараметров.ПравилаЗаполнения = "2015Кв1" Тогда
			СоставСтроки.Вставить("НомТД", ТекстНомерГТД);
		ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2017Кв1"
		      ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
		      ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4" Тогда
			СоставСтроки.Вставить("РегНомТД", МассивРегНомТД);
		КонецЕсли;
		
		СоставСтроки.Вставить("ОКВ", ВалютаКод);
		
		СоставСтроки.Вставить("СтоимПокупВ", СоставСтроки.ВсегоПокупок);
		СоставСтроки.Вставить("СумНДСВыч", СоставСтроки.НДС);
		СоставСтроки.Вставить("СумНДС", СоставСтроки.НДС); // Для раздела 8.1
		
		МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ДетальнаяЗапись.КодВидаОперации, ";");
		СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
		
		МассивДатаУчТов = Новый Массив();
		Если ЗначениеЗаполнено(ДетальнаяЗапись.ДатаПринятияНаУчет) Тогда
			МассивДатаУчТов.Добавить(Формат(ДетальнаяЗапись.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
		КонецЕсли; 
		
		СоставСтроки.Вставить("ДатаУчТов",  МассивДатаУчТов);
		СоставСтроки.Вставить("ДокПдтвУпл", МассивДокПдтвУпл);
		
		ДополнительныеСведения.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
		ДополнительныеСведения.ПредставлениеКонтрагента = НСтр("ru='Сводные счета-фактуры'");
		
		СоставСтроки.Вставить("СвПрод", МассивСвПрод);
		
		Если ЗначениеЗаполнено(Посредник)
		   И (ЗначениеЗаполнено(ПосредникИНН) ИЛИ ЗначениеЗаполнено(ПосредникКПП))Тогда
			СтруктураРеквизитовПосредника = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПосредникИНН, ПосредникКПП);
			СтруктураРеквизитовПосредника.Вставить("Контрагент",             ПосредникСсылка);
			СтруктураРеквизитовПосредника.Вставить("КонтрагентНаименование", Посредник);
			СоставСтроки.Вставить("СвПос", СтруктураРеквизитовПосредника);
		КонецЕсли;
		
		Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
			СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел81.Добавить();
		Иначе
			СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел8.Добавить();
		КонецЕсли;
		
		Если ЗначениеЗаполнено(ПредставлениеСФ.НомерКорректировочный) Тогда
			ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
				НСтр("ru='Корректировочный счет-фактура № %1 от %2 на сумму %3 %4'"), 
				ПредставлениеСФ.НомерКорректировочный, 
				ПредставлениеСФ.ДатаКорректировочный, 
				Формат(СоставСтроки.ВсегоПокупок, "ЧДЦ=2; ЧН="),
				ВалютаНаименование);
		Иначе
			ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
				НСтр("ru='%1 на сумму %2 %3'"), 
				ПредставлениеСФ.Представление, 
				Формат(СоставСтроки.ВсегоПокупок, "ЧДЦ=2; ЧН="),
				ВалютаНаименование);
		КонецЕсли;
		
		ДополнительныеСведения.Документ = СоставСтроки.СчетФактура;
		СоставСтроки.Вставить("ДополнительныеСведения", ДополнительныеСведения);
		
		ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
		
	ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
		И СтруктураПараметров.ФорматПоПостановлению735 Тогда
		
		СоставСтроки.Вставить("НомПП",        Секция.Ном);
		СоставСтроки.Вставить("НомерСчФ",     ПредставлениеСФ.Номер);
		СоставСтроки.Вставить("ДатаСчФ",      ПредставлениеСФ.Дата);
		СоставСтроки.Вставить("НомИспрСчФ",   ПредставлениеСФ.НомерИсправленный);
		СоставСтроки.Вставить("ДатаИспрСчФ",  ПредставлениеСФ.ДатаИсправленный);
		СоставСтроки.Вставить("НомерКСчФ",    ПредставлениеСФ.НомерКорректировочный);
		СоставСтроки.Вставить("ДатаКСчФ",     ПредставлениеСФ.ДатаКорректировочный);
		СоставСтроки.Вставить("НомИспрКСчФ",  ПредставлениеСФ.НомерИсправленныйКорректировочный);
		СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
		
		МассивНомТД = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекстНомерГТД, ";");
		СоставСтроки.Вставить("НомерТД", МассивНомТД);
		
		Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5
		И Не ЗначениеЗаполнено(ВалютаКод) Тогда
			ВалютаКод = "643";
		КонецЕсли;
		СоставСтроки.Вставить("КодОКВ", ВалютаКод);
		
		СоставСтроки.Вставить("СтТовУчНалВсего", СоставСтроки.ВсегоПокупок);
		СоставСтроки.Вставить("СтПокСчФВал",     СоставСтроки.ВсегоПокупок);

		СоставСтроки.Вставить("СумНДСВыч", ?(СоставСтроки.НДС = 0, "без НДС", СоставСтроки.НДС));
		
		МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ДетальнаяЗапись.КодВидаОперации, ";");
		СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
		
		МассивДатаПринУчет = Новый Массив();
		Если ЗначениеЗаполнено(ДетальнаяЗапись.ДатаПринятияНаУчет) Тогда
			МассивДатаПринУчет.Добавить(Формат(ДетальнаяЗапись.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
		КонецЕсли; 
		
		СоставСтроки.Вставить("ДатаПринУчет", МассивДатаПринУчет);
		СоставСтроки.Вставить("СвДокУплНал", МассивДокПдтвУпл);
		
		СтруктураРеквизитовКонтрагента = Новый Структура();
		Если МассивСвПрод.Количество() = 0
			И НЕ ПустаяСтрока(ДетальнаяЗапись.ПродавецИНН) Тогда
			СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
				ДетальнаяЗапись.ПродавецИНН, ДетальнаяЗапись.ПродавецКПП);
		ИначеЕсли МассивСвПрод.Количество() > 0 Тогда
			СтруктураРеквизитовКонтрагента = МассивСвПрод[0];
		КонецЕсли;
		
		Если СтруктураРеквизитовКонтрагента.Свойство("ИННФЛ") Тогда
			СоставСтроки.Вставить("ИННФЛ", СтруктураРеквизитовКонтрагента.ИННФЛ);
		ИначеЕсли СтруктураРеквизитовКонтрагента.Свойство("ИННЮЛ") Тогда
			СоставСтроки.Вставить("ИННЮЛ", СтруктураРеквизитовКонтрагента.ИННЮЛ);
			СоставСтроки.Вставить("КПП", СтруктураРеквизитовКонтрагента.КПП);
		КонецЕсли;

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

	КонецЕсли;	
	
	
КонецПроцедуры

Процедура УстановитьПараметрыЗапросаКнигиПокупок(Запрос, СтруктураПараметров)
	
	Запрос.УстановитьПараметр("НачалоПериода", СтруктураПараметров.НачалоПериода);
	Запрос.УстановитьПараметр("КонецПериода", КонецДня(СтруктураПараметров.КонецПериода));
	Запрос.УстановитьПараметр("НачалоПримененияПостановления1137",
		УчетНДСПереопределяемый.ПолучитьДатуНачалаДействияПостановления1137());
	
	Запрос.УстановитьПараметр("Организация", СтруктураПараметров.СписокОрганизаций);
	Запрос.УстановитьПараметр("ОтбиратьПоКонтрагенту", НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме И СтруктураПараметров.ОтбиратьПоКонтрагенту);
	Запрос.УстановитьПараметр("КонтрагентДляОтбора", СтруктураПараметров.КонтрагентДляОтбора);
	Запрос.УстановитьПараметр("ВыводитьПокупателейПоАвансам", СтруктураПараметров.ВыводитьПокупателейПоАвансам);
	Запрос.УстановитьПараметр("ВалютаРегУчета", ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета());
	Запрос.УстановитьПараметр("НаименованиеВалютыРубль", НСтр("ru='руб.'")); 
	
	ЗаполнениеДокументовОтчетности = СтруктураПараметров.ЗаполнениеДокумента ИЛИ СтруктураПараметров.ЗаполнениеДекларации;
	
	Если ЗаполнениеДокументовОтчетности И СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
		Запрос.УстановитьПараметр("НачалоНалоговогоПериода", СтруктураПараметров.НачалоНалоговогоПериода); 
		Запрос.УстановитьПараметр("КонецНалоговогоПериода", КонецДня(СтруктураПараметров.КонецНалоговогоПериода));
	КонецЕсли;
	
	Запрос.УстановитьПараметр("ПравилаПостановления735", СтруктураПараметров.ВерсияПостановленияНДС1137 >= 3);
	Запрос.УстановитьПараметр("Постановление1137_2019", СтруктураПараметров.Постановление1137_2019);
	
	// Начиная с отчетности за 4 квартал 2017 года (в соответствии с постановлением Правительства от 19.08.2017 №981)
	// при отражении вычета по единому корректировочному счету-фактуре при уменьшении количества и/или стоимости 
	// реализованных ранее товаров в книге покупок в качестве продавца указывается покупатель по счету-фактуре.
	Запрос.УстановитьПараметр("ПравилаПостановления981", СтруктураПараметров.ВерсияПостановленияНДС1137 >= 4);
	
	СтавкиНДС18 = Новый Массив();
	СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18);
	СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18_118);

	СтавкиНДС10 = Новый Массив();
	СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10);
	СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10_110);

	СтавкаНДС0 = Перечисления.СтавкиНДС.НДС0;
	СтавкаБезНДС = Перечисления.СтавкиНДС.БезНДС;

	Запрос.УстановитьПараметр("СтавкиНДС18", СтавкиНДС18);
	Запрос.УстановитьПараметр("СтавкиНДС10", СтавкиНДС10);
	Запрос.УстановитьПараметр("СтавкаНДС0", СтавкаНДС0);
	Запрос.УстановитьПараметр("СтавкаБезНДС", СтавкаБезНДС);
	 
	ВидыЦенностей_СобственныеСФ = Новый Массив;
	ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.ВнутреннееПотребление);
	ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.СМРСобственнымиСилами);
	ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные);
	ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные0);
	ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученных);

	Запрос.УстановитьПараметр("ВидыЦенностей_СобственныеСФ", ВидыЦенностей_СобственныеСФ);

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

Функция ДополнительноеУсловиеЗапроса(СтруктураПараметров, ЗаписьДополнительногоЛиста = Ложь, ИмяТаблицы = "")
	
	Если СтруктураПараметров.ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж Тогда
		// В 2018 году вычет НДС в качестве налогового агента за продавца (п.8 ст. 161 НК) отражается в книге продаж.
		Если ЗаписьДополнительногоЛиста Тогда
			СтрокаУсловия = "[ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды) И [ИмяТаблицы]КорректируемыйПериод < ДАТАВРЕМЯ(2019, 1, 1)";
		Иначе
			СтрокаУсловия = "[ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды)И [ИмяТаблицы]Период < ДАТАВРЕМЯ(2019, 1, 1)";
		КонецЕсли;
	ИначеЕсли НЕ СтруктураПараметров.ПлательщикНДС Тогда
		// Только вычет НДС в качестве налогового агента за продавца (п.8 ст. 161 НК) в 2019 году.
		Если ЗаписьДополнительногоЛиста Тогда
			СтрокаУсловия = "[ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды) И [ИмяТаблицы]КорректируемыйПериод >= ДАТАВРЕМЯ(2019, 1, 1)";
		Иначе
			СтрокаУсловия = "[ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды) И [ИмяТаблицы]Период >= ДАТАВРЕМЯ(2019, 1, 1)";
		КонецЕсли;
	Иначе
		СтрокаУсловия = "ИСТИНА";
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ИмяТаблицы) Тогда
		СтрокаУсловия = СтрЗаменить(СтрокаУсловия, "[ИмяТаблицы]", ИмяТаблицы + ".");
	Иначе
		СтрокаУсловия = СтрЗаменить(СтрокаУсловия, "[ИмяТаблицы]", "");
	КонецЕсли;
	
	Возврат СтрокаУсловия;
	
КонецФункции

#Область ПолучениеЗаписей

Функция ЗаписиКнигиПокупок(СтруктураПараметров)
	
	УстановитьПривилегированныйРежим(Истина);
	
	// Создаем запрос по счетам-фактурам
	МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	
	УстановитьПараметрыЗапросаКнигиПокупок(Запрос, СтруктураПараметров);
	
	ТекстЗапроса = ТекстЗапросаЗаписиРегистраНДСПокупки(СтруктураПараметров);
	
	Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 4 Тогда
		ТекстЗапроса = ТекстЗапроса + УчетНДСОтчетыПереопределяемый.ТекстЗапросаРеквизитыСчетовФактурПостановление981КнигаПокупок();
	Иначе
		ТекстЗапроса = ТекстЗапроса + УчетНДСОтчетыПереопределяемый.ТекстЗапросаРеквизитыСчетовФактурПостановление735КнигаПокупок();
	КонецЕсли;
	
	Запрос.Текст = ТекстЗапроса + ТекстЗапросаПодготовленныеЗаписиКнигиПокупок(СтруктураПараметров);
	Запрос.Выполнить();
	
	УчетНДСПереопределяемый.РегистрационныеСведенияНаДаты(МенеджерВременныхТаблиц);
	
	Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
		Запрос.Текст = ТекстЗапросаДополнительныйЛистКнигиПокупок(СтруктураПараметров);
	Иначе
		Запрос.Текст = ТекстЗапросаКнигаПокупок(СтруктураПараметров);
	КонецЕсли;
	
	Выборка = Запрос.Выполнить();

	СтруктураПараметров.Вставить("МенеджерВременныхТаблиц", МенеджерВременныхТаблиц);
	
	Возврат Выборка;

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

Функция ТекстЗапросаЗаписиРегистраНДСПокупки(СтруктураПараметров)

	ТекстыЗапросов = Новый Массив;

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

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

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

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

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

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

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

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

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

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

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

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

Функция НовыйДополнительнаяИнформацияПоСчетуФактуре()

	ДополнительнаяИнформация = Новый ТаблицаЗначений;
	ДополнительнаяИнформация.Колонки.Добавить("Ссылка",       Документы.ТипВсеСсылки());
	ДополнительнаяИнформация.Индексы.Добавить("Ссылка");
	ДополнительнаяИнформация.Колонки.Добавить("ГТДиСтрана",   ОбщегоНазначения.ОписаниеТипаСтрока(0));
	ДополнительнаяИнформация.Колонки.Добавить("ГТД",          ОбщегоНазначения.ОписаниеТипаСтрока(0));
	ДополнительнаяИнформация.Колонки.Добавить("Графа9",       ОбщегоНазначения.ОписаниеТипаСтрока(0));
	ДополнительнаяИнформация.Колонки.Добавить("Графа10",      ОбщегоНазначения.ОписаниеТипаСтрока(0));
	// Массив сведений о продавцах для декларации с 1 кв 2015 г.
	ДополнительнаяИнформация.Колонки.Добавить("МассивСвПрод", Новый ОписаниеТипов("Массив")); 
	ДополнительнаяИнформация.Колонки.Добавить("МассивПлатежныеДокументы", Новый ОписаниеТипов("Массив"));
	// С 1 октября 2017 года в книге покупок указывается регистрационный номер декларации на товары.
	ДополнительнаяИнформация.Колонки.Добавить("РегистрационныйНомерТД", ОбщегоНазначения.ОписаниеТипаСтрока(0));
	// С 1 июля 2021 года указывается свойство СвРегНом
	ДополнительнаяИнформация.Колонки.Добавить("СвРегНом", Новый ОписаниеТипов("Массив"));

	Возврат ДополнительнаяИнформация;

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

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

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

#КонецЕсли

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