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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Процедура ОпределитьПараметрыФормированияОтчета(СтруктураПараметров)
	
	ДатаПроверкиПараметровУчета = СтруктураПараметров.КонецПериода;
	
	Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
		Если СтруктураПараметров.ЗаполнениеДокумента ИЛИ СтруктураПараметров.ЗаполнениеДекларации Тогда
			ДатаПроверкиПараметровУчета = СтруктураПараметров.КонецНалоговогоПериода;
		КонецЕсли;
	КонецЕсли;
	
	ПлательщикНДС = УчетнаяПолитика.ПлательщикНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета);
	ПлательщикНДСПрименяющийУСН = УчетнаяПолитика.ПлательщикНДСПрименяющийУСН(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета);
	
	// В соответствии с письмом ФНС России от 19.04.2018 СД-4-3/7484@ неплательщики НДС
	// при зачете предварительной оплаты, выданной поставщику товаров п.8 ст. 161 НК 
	// в 2018-м году регистрируют вычет исчисленного ранее (с этой предварительной оплаты) налога
	// в книге продаж в виде сторнирующей записи.
	// Установим параметр "ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж" в значение "Истина", 
	// затем вызовем формирование отчета "Книга покупок", отчет выберет данные по вычетам неплательщика,
	// которые будут отображены в составе Книги продаж.
	
	ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж = ДатаПроверкиПараметровУчета >= '20180101' 
		И ДатаПроверкиПараметровУчета < '20190101'
		И НЕ ПлательщикНДС;
	
	СтруктураПараметров.Вставить("ВерсияПостановленияНДС1137",
		УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(ДатаПроверкиПараметровУчета));
	СтруктураПараметров.Вставить("Постановление1137_2019",
		УчетНДСПереопределяемый.ПрименяетсяПостановление15(ДатаПроверкиПараметровУчета));
	СтруктураПараметров.Вставить("ПлательщикНДС", ПлательщикНДС);
	СтруктураПараметров.Вставить("ПлательщикНДСПрименяющийУСН", ПлательщикНДСПрименяющийУСН);
	СтруктураПараметров.Вставить("ПрименяетсяОсвобождениеОтУплатыНДС", 
		УчетнаяПолитика.ПрименяетсяОсвобождениеОтУплатыНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета));
	СтруктураПараметров.Вставить("ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж", ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж);
	
КонецПроцедуры

Процедура СформироватьОсновнойРаздел(СтруктураПараметров, Результат);
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.Очистить();
	ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КнигаПродаж";
	ТабличныйДокумент.ЧерноБелаяПечать = Истина;
	
	СтруктураСекций = Новый Структура();
	
	ПрименяетсяПостановление1448 = УчетНДСПереопределяемый.ПрименяетсяПостановление1448(СтруктураПараметров.КонецПериода);
	
	Если ПрименяетсяПостановление1448 Тогда
		Макет = ПолучитьОбщийМакет("КнигаПродаж1448"); // Общий макет для книги и доп. листов
		СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
	ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
		Макет = ПолучитьОбщийМакет("КнигаПродаж534"); // Общий макет для книги и доп. листов
		СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
	ИначеЕсли УчетНДСПереопределяемый.ПрименяетсяПостановление15(СтруктураПараметров.КонецПериода) Тогда
		Макет = ПолучитьОбщийМакет("КнигаПродаж15");
	ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 4 Тогда
		Макет = ПолучитьОбщийМакет("КнигаПродаж981");
	ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 3 Тогда
		Если СтруктураПараметров.ЗаполнениеДекларации
		   И СтруктураПараметров.ПравилаЗаполнения = "2017Кв1" Тогда
			Макет = ПолучитьОбщийМакет("КнигаПродаж1137_2017");
		Иначе
			Макет = ПолучитьОбщийМакет("КнигаПродаж735");
		КонецЕсли;
	Иначе
		Макет = ПолучитьОбщийМакет("КнигаПродаж1137");
	КонецЕсли;

	НазваниеРаздела = Нстр("ru='Основной раздел'");

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

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

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

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

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

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

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

Процедура СформироватьДополнительныеЛисты(СтруктураПараметров, Результат)
	
	Перем ТабличныйДокумент;
	
	Если Результат.Пустой() Тогда
		Возврат;
	КонецЕсли;
	
	НомерОтображаемогоПериода = 0;
	
	ИтогПоПериодам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	СтруктураПараметров.Вставить("СчетчикСтрокДопЛиста", 0);
	СтруктураПараметров.Вставить("СчетчикСтрокТекущегоСегмента", 0);
	
	Если СтруктураПараметров.ЗаполнениеДекларации Тогда
	
		ИтогиРаздел91 = Новый Структура(
			"ИтСтПродКПр20,ИтСтПродКПр18,ИтСтПродКПр10,ИтСтПродКПр7,ИтСтПродКПр5,ИтСтПродКПр0,
			|СумНДСИтКПр20,СумНДСИтКПр18,СумНДСИтКПр10,СумНДСИтКПр7,СумНДСИтКПр5,ИтСтПродОсвКПр,
			|СтПродВсП1Р9_20,СтПродВсП1Р9_18,СтПродВсП1Р9_10,СтПродВсП1Р9_7,СтПродВсП1Р9_5,СтПродВсП1Р9_0,
			|СумНДСВсП1Р9_20,СумНДСВсП1Р9_18,СумНДСВсП1Р9_10,СумНДСВсП1Р9_7,СумНДСВсП1Р9_5,СтПродОсвП1Р9Вс");
			
		ПараметрыПолученияИтогов = Новый Структура;
		ПараметрыПолученияИтогов.Вставить("НалоговыйПериод",            НачалоКвартала(СтруктураПараметров.НачалоПериода));
		ПараметрыПолученияИтогов.Вставить("КонецНалоговогоПериода",     КонецКвартала(СтруктураПараметров.КонецНалоговогоПериода));
		ПараметрыПолученияИтогов.Вставить("ДатаФормированияДопЛиста",   НачалоКвартала(СтруктураПараметров.НачалоПериода));
		ПараметрыПолученияИтогов.Вставить("СписокОрганизаций",          СтруктураПараметров.СписокОрганизаций);
		ПараметрыПолученияИтогов.Вставить("Организация",                СтруктураПараметров.Организация);
		ПараметрыПолученияИтогов.Вставить("ЗаписьДополнительногоЛиста", Ложь);
		
		ИтогПоКнигеПродаж = ПолучитьИтогиЗаПериодКнигаПродаж(ПараметрыПолученияИтогов);
		
		ИтогиРаздел91.ИтСтПродКПр20  = ИтогПоКнигеПродаж.СуммаБезНДС20;
		ИтогиРаздел91.ИтСтПродКПр18  = ИтогПоКнигеПродаж.СуммаБезНДС18;
		ИтогиРаздел91.ИтСтПродКПр10  = ИтогПоКнигеПродаж.СуммаБезНДС10;
		ИтогиРаздел91.ИтСтПродКПр7   = ИтогПоКнигеПродаж.СуммаБезНДС7;
		ИтогиРаздел91.ИтСтПродКПр5   = ИтогПоКнигеПродаж.СуммаБезНДС5;
		ИтогиРаздел91.ИтСтПродКПр0   = ИтогПоКнигеПродаж.НДС0;
		ИтогиРаздел91.СумНДСИтКПр20  = ИтогПоКнигеПродаж.НДС20;
		ИтогиРаздел91.СумНДСИтКПр18  = ИтогПоКнигеПродаж.НДС18;
		ИтогиРаздел91.СумНДСИтКПр10  = ИтогПоКнигеПродаж.НДС10;
		ИтогиРаздел91.СумНДСИтКПр7   = ИтогПоКнигеПродаж.НДС7;
		ИтогиРаздел91.СумНДСИтКПр5   = ИтогПоКнигеПродаж.НДС5;
		ИтогиРаздел91.ИтСтПродОсвКПр = ИтогПоКнигеПродаж.СуммаСовсемБезНДС;
		
	КонецЕсли;
		
	ДанныеОтчета = Новый Массив;
	
	Пока ИтогПоПериодам.Следующий() Цикл
		
		НомерЛиста = 0;
		
		НомерОтображаемогоПериода = НомерОтображаемогоПериода + 1;
		НалоговыйПериод = ПредставлениеПериода(
			ИтогПоПериодам.НалоговыйПериод, КонецДня(ИтогПоПериодам.КонецНалоговогоПериода), "ФП = Истина");
		
		ТабличныйДокумент = Новый ТабличныйДокумент;
		ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
		ТабличныйДокумент.АвтоМасштаб = Истина;
		
		СтруктураПараметров.Вставить("СчетчикСегментовНалоговогоПериода", 1);
		
		ИтогПоПериодамКорректировки = ИтогПоПериодам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
		Пока ИтогПоПериодамКорректировки.Следующий() Цикл;
			
			СтруктураСекций = Новый Структура();
			
			ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(
				ИтогПоПериодамКорректировки.КонецНалоговогоПериода);
			СтруктураПараметров.Вставить("ВерсияПостановленияНДС1137", ВерсияПостановленияНДС1137);
			
			ПрименяетсяПостановление1448 = 
				УчетНДСПереопределяемый.ПрименяетсяПостановление1448(ИтогПоПериодамКорректировки.КонецНалоговогоПериода);
			Если ПрименяетсяПостановление1448 Тогда
				Макет = ПолучитьОбщийМакет("КнигаПродаж1448"); // Общий макет для книги и доп. листов
				СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
			ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
				Макет = ПолучитьОбщийМакет("КнигаПродаж534"); // Общий макет для книги и доп. листов
				СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
			ИначеЕсли УчетНДСПереопределяемый.ПрименяетсяПостановление15(ИтогПоПериодамКорректировки.КонецНалоговогоПериода) Тогда
				Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж15");
			ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 1 Тогда
				Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж1137");
				СтруктураПараметров.ЗаполнениеДекларации = Ложь;
			ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 2 Тогда
				Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж952");
				СтруктураПараметров.ЗаполнениеДекларации = Ложь;
			ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 3 Тогда 
				Если СтруктураПараметров.ЗаполнениеДекларации
				   И СтруктураПараметров.ПравилаЗаполнения = "2017Кв1" Тогда
					Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж1137_2017");
				Иначе
					Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж735");
				КонецЕсли;
			ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 4 Тогда
				Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж981");
			КонецЕсли;

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

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

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

			Если СтруктураПараметров.ЗаполнениеДокумента
				И СтруктураПараметров.ФорматПоПостановлению735 Тогда
				
				ОбщиеСведения = Новый Структура("НомерДопЛКнПрод,Период,ОтчетГод,ДатаДопЛКнПрод,Итого,Всего");
				
				ОбщиеСведения.НомерДопЛКнПрод = НомерЛиста;
				ОбщиеСведения.Период          = СтруктураПараметров.ПериодПоСКНП;
				ОбщиеСведения.ОтчетГод        = Строка(Формат(Год(ИтогПоПериодамКорректировки.НалоговыйПериод),"ЧГ=0"));
				ОбщиеСведения.ДатаДопЛКнПрод  = Строка(Формат(ИтогПоПериодамКорректировки.ДатаОформления, "ДЛФ=Д"));
				
				Итого = Новый Структура(
					"СтТовРубКоп20, СтТовРубКоп18,СтТовРубКоп10,СтТовРубКоп0,СумНДСРубКоп20,СумНДСРубКоп18,СумНДСРубКоп10,СтПродОсвНДСРубКоп");
				Итого.СтТовРубКоп20      = ИтогЗаПериод.СуммаБезНДС20;
				Итого.СтТовРубКоп18      = ИтогЗаПериод.СуммаБезНДС18;
				Итого.СтТовРубКоп10      = ИтогЗаПериод.СуммаБезНДС10;
				Итого.СтТовРубКоп0       = ИтогЗаПериод.НДС0;
				Итого.СумНДСРубКоп20     = ИтогЗаПериод.НДС20;
				Итого.СумНДСРубКоп18     = ИтогЗаПериод.НДС18;
				Итого.СумНДСРубКоп10     = ИтогЗаПериод.НДС10;
				Итого.СтПродОсвНДСРубКоп = ИтогЗаПериод.СуммаСовсемБезНДС;
				
				Если ПрименяетсяПостановление1448 Тогда
					Итого.Вставить("СтТовРубКоп7",  ИтогЗаПериод.СуммаБезНДС7);
					Итого.Вставить("СтТовРубКоп5",  ИтогЗаПериод.СуммаБезНДС5);
					Итого.Вставить("СумНДСРубКоп7", ИтогЗаПериод.НДС7);
					Итого.Вставить("СумНДСРубКоп5", ИтогЗаПериод.НДС5);
				КонецЕсли;
				
				ОбщиеСведения.Итого = Итого;
				
			КонецЕсли;
			
			Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
				СтруктураСекций.Вставить("СекцияКонтрагент", Макет.ПолучитьОбласть("Контрагент"));
				СтруктураСекций.Вставить("СекцияВсегоКонтрагент", Макет.ПолучитьОбласть("ВсегоКонтрагент"));
			КонецЕсли;
			
			ПреобразоватьЗаписиДополнительногоЛистаКнигиПродаж(
				СтруктураПараметров,
				ИтогПоПериодамКорректировки,
				?(СтруктураПараметров.Свойство("РеквизитыДокумента"),СтруктураПараметров.РеквизитыДокумента, ИтогЗаПериод),
				ТабличныйДокумент,
				СтруктураСекций,
				?(СтруктураПараметров.Свойство("ТабличнаяЧасть"),СтруктураПараметров.ТабличнаяЧасть, Неопределено));
			
			Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
				СтрокаВсего.Параметры.Заполнить(ИтогЗаПериод);
				ТабличныйДокумент.Вывести(СтрокаВсего);
			КонецЕсли;
			
			Если СтруктураПараметров.ЗаполнениеДокумента
				И СтруктураПараметров.ФорматПоПостановлению735 Тогда
				
				Всего = Новый Структура(
					"СтТовРубКоп20, СтТовРубКоп18,СтТовРубКоп10,СтТовРубКоп0,СумНДСРубКоп20,СумНДСРубКоп18,СумНДСРубКоп10,СтПродОсвНДСРубКоп");
				Всего.СтТовРубКоп20      = ИтогЗаПериод.СуммаБезНДС20;
				Всего.СтТовРубКоп18      = ИтогЗаПериод.СуммаБезНДС18;
				Всего.СтТовРубКоп10      = ИтогЗаПериод.СуммаБезНДС10;
				Всего.СтТовРубКоп0       = ИтогЗаПериод.НДС0;
				Всего.СумНДСРубКоп20     = ИтогЗаПериод.НДС20;
				Всего.СумНДСРубКоп18     = ИтогЗаПериод.НДС18;
				Всего.СумНДСРубКоп10     = ИтогЗаПериод.НДС10;
				Всего.СтПродОсвНДСРубКоп = ИтогЗаПериод.СуммаСовсемБезНДС;
				
				Если ПрименяетсяПостановление1448 Тогда
					Всего.Вставить("СтТовРубКоп7",  ИтогЗаПериод.СуммаБезНДС7);
					Всего.Вставить("СтТовРубКоп5",  ИтогЗаПериод.СуммаБезНДС5);
					Всего.Вставить("СумНДСРубКоп7", ИтогЗаПериод.НДС7);
					Всего.Вставить("СумНДСРубКоп5", ИтогЗаПериод.НДС5);
				КонецЕсли;
				
				ОбщиеСведения.Всего = Всего;
				
				СтруктураДанных = Новый Структура("ОбщиеСведения,Записи",
					ОбщиеСведения, СтруктураПараметров.Записи.Скопировать());
				СтруктураПараметров.Записи.Очистить();
				ДанныеОтчета.Добавить(СтруктураДанных);
				
			КонецЕсли;
			
			Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме
				И НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
				ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
			КонецЕсли;
			
		КонецЦикла; // ИтогПоПериодамКорректировки.Следующий()
		
		// Записываем доп. листы в таблицу разделов отчета.
		НазваниеРаздела = СтрШаблон(НСтр("ru = 'Доп.листы за %1'"), НалоговыйПериод);
		Если СтруктураПараметров.СчетчикСегментовНалоговогоПериода > 1 Тогда
			НазваниеРаздела = УчетНДС.СформироватьЗаголовокЛиста(
				НазваниеРаздела, СтруктураПараметров.СчетчикСегментовНалоговогоПериода);
		КонецЕсли;
			
		ДополнительныеПараметры = Новый Структура();
		ДополнительныеПараметры.Вставить("ЭтоДопЛист", Истина);
		
		ПроверкаКонтрагентов.ДобавитьРазделОтчета(
			СтруктураПараметров, 
			НазваниеРаздела, 
			СтруктураПараметров.СчетчикСегментов, 
			ТабличныйДокумент,
			ДополнительныеПараметры);

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

	Если СтруктураПараметров.ЗаполнениеДекларации Тогда
		
		ИмяРаздела = "Раздел9_Прил1";
		
		// Запишем последний сегмент
	
		Если СтруктураПараметров.СчетчикСтрокТекущегоСегмента <> 0 Тогда
			
			// Записать сегменты
			ПерваяСтрокаСегмента = СтруктураПараметров.СчетчикСтрокДопЛиста 
				- СтруктураПараметров.СчетчикСтрокТекущегоСегмента + 1;
			
			Если ПерваяСтрокаСегмента = 1 Тогда 
				Если ТабличныйДокумент.Области.Найти("СуммаБезНДС20Приложение") <> Неопределено Тогда
					ТабличныйДокумент.Область("СуммаБезНДС20Приложение").Значение     = ИтогЗаПериод.СуммаБезНДС20;
					ТабличныйДокумент.Область("НДС20Приложение").Значение             = ИтогЗаПериод.НДС20;
				КонецЕсли;
				Если СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
					ТабличныйДокумент.Область("СуммаБезНДС7Приложение").Значение     = ИтогЗаПериод.СуммаБезНДС7;
					ТабличныйДокумент.Область("НДС7Приложение").Значение             = ИтогЗаПериод.НДС7;
					ТабличныйДокумент.Область("СуммаБезНДС5Приложение").Значение     = ИтогЗаПериод.СуммаБезНДС5;
					ТабличныйДокумент.Область("НДС5Приложение").Значение             = ИтогЗаПериод.НДС5;
				КонецЕсли;
				ТабличныйДокумент.Область("СуммаБезНДС18Приложение").Значение     = ИтогЗаПериод.СуммаБезНДС18;
				ТабличныйДокумент.Область("СуммаБезНДС10Приложение").Значение     = ИтогЗаПериод.СуммаБезНДС10;
				ТабличныйДокумент.Область("НДС0Приложение").Значение              = ИтогЗаПериод.НДС0;
				ТабличныйДокумент.Область("НДС18Приложение").Значение             = ИтогЗаПериод.НДС18;
				ТабличныйДокумент.Область("НДС10Приложение").Значение             = ИтогЗаПериод.НДС10;
				ТабличныйДокумент.Область("СуммаСовсемБезНДСПриложение").Значение = ИтогЗаПериод.СуммаСовсемБезНДС;
			Иначе
				ЗаписатьИтогиВПервыйСегментРаздела91(СтруктураПараметров, ИтогЗаПериод);
			КонецЕсли;

			
		ИначеЕсли СтруктураПараметров.СчетчикСтрокТекущегоСегмента = 0
			И СтруктураПараметров.СчетчикСтрокДопЛиста <> 0 Тогда
			
			// Количество строк в сегменте совпало с предельным,
			// необходимо добавить строку итогов в записанный ранее сегмент табличного документа.
			
			ЗаписатьИтогиВПервыйСегментРаздела91(СтруктураПараметров, ИтогЗаПериод);
			
		КонецЕсли;
		
		ИтогиРаздел91.СтПродВсП1Р9_20 = ИтогЗаПериод.СуммаБезНДС20;
		ИтогиРаздел91.СтПродВсП1Р9_18 = ИтогЗаПериод.СуммаБезНДС18;
		ИтогиРаздел91.СтПродВсП1Р9_10 = ИтогЗаПериод.СуммаБезНДС10;
		ИтогиРаздел91.СтПродВсП1Р9_7  = ИтогЗаПериод.СуммаБезНДС7;
		ИтогиРаздел91.СтПродВсП1Р9_5  = ИтогЗаПериод.СуммаБезНДС5;
		ИтогиРаздел91.СтПродВсП1Р9_0  = ИтогЗаПериод.НДС0;
		ИтогиРаздел91.СумНДСВсП1Р9_20 = ИтогЗаПериод.НДС20;
		ИтогиРаздел91.СумНДСВсП1Р9_18 = ИтогЗаПериод.НДС18;
		ИтогиРаздел91.СумНДСВсП1Р9_10 = ИтогЗаПериод.НДС10;
		ИтогиРаздел91.СумНДСВсП1Р9_7  = ИтогЗаПериод.НДС7;
		ИтогиРаздел91.СумНДСВсП1Р9_5  = ИтогЗаПериод.НДС5;
		ИтогиРаздел91.СтПродОсвП1Р9Вс = ИтогЗаПериод.СуммаСовсемБезНДС;

		
	ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
		И СтруктураПараметров.ФорматПоПостановлению735 Тогда
		СтруктураПараметров.ДанныеОтчета = ДанныеОтчета;
	КонецЕсли;
	
КонецПроцедуры

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


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

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

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

	Секция = Макет.ПолучитьОбласть("Подвал");
	Секция.Параметры.ИмяРук        = ИмяРук;
	Секция.Параметры.ИмяОрг        = ИмяОрг;
	Секция.Параметры.Свидетельство = Свидетельство;

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

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

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

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

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

	ИтогПоОрганизации = НаборЗаписей.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // Общий итог по организации
	ИтогПоОрганизации.Следующий();

	Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
		СекцияКонтрагент = СтруктураСекций.СекцияКонтрагент;
		СекцияВсегоКонтрагент = СтруктураСекций.СекцияВсегоКонтрагент;
	КонецЕсли;

	Счетчик = 0; // Счетчик строк книги продаж
	СчетчикСтрокТекущегоСегмента = 0; // Используется для сегментирования разделов декларации по НДС
	СчетчикСегментов = 1; // Число сформированных сегментов книги

	НазваниеРаздела = Нстр("ru='Основной раздел'");

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

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

					ИтогПоДоговорАванса = ИтогПоСчетФактураДокумент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

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

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

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

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

									Иначе

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

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

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

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

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

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

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

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

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

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

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

								// В заголовке в качестве номера порции выводим порцию в пределах налогового периода.
								ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментовНалоговогоПериода);
								// В общую таблицу передаем в качестве номера раздела глобальный счетчик сегментов (с учетом основных разделов книги).
								ДополнительныеПараметры = Новый Структура();
								ДополнительныеПараметры.Вставить("ЭтоДопЛист", Истина);
								ПроверкаКонтрагентов.ДобавитьРазделОтчета(
									СтруктураПараметров, 
									ЗаголовокЛиста, 
									СчетчикСегментов, 
									ТабличныйДокумент, 
									ДополнительныеПараметры);
							
							КонецЕсли;
							
							// Очистим табличный документ и таблицу
							ТабличныйДокумент.Очистить();
							Если СтруктураПараметров.ЗаполнениеДекларации Тогда
								ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел91);
							КонецЕсли;
							ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
							
							// Обнулим счетчик текущего сегмента
							СчетчикСтрокТекущегоСегмента = 0;
							СчетчикСегментов = СчетчикСегментов + 1;
							СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода + 1;
							
						КонецЕсли;
					
						ИтогЗаПериод.ВсегоПродаж       = ИтогЗаПериод.ВсегоПродаж + ЗаписьКниги.ВсегоПродаж;
						ИтогЗаПериод.СуммаБезНДС10     = ИтогЗаПериод.СуммаБезНДС10 + ЗаписьКниги.СуммаБезНДС10;
						ИтогЗаПериод.НДС10             = ИтогЗаПериод.НДС10 + ЗаписьКниги.НДС10;
						ИтогЗаПериод.СуммаБезНДС18     = ИтогЗаПериод.СуммаБезНДС18 + ЗаписьКниги.СуммаБезНДС18;
						ИтогЗаПериод.НДС18             = ИтогЗаПериод.НДС18 + ЗаписьКниги.НДС18;
						ИтогЗаПериод.НДС0              = ИтогЗаПериод.НДС0 + ЗаписьКниги.НДС0;
						
						// До 3 квартала 2014 года не заполняем НДС 20% 
						Если СтруктураПараметров.НалоговыйПериод >= '20250101' Тогда 
							
							ИтогЗаПериод.СуммаБезНДС20    = ИтогЗаПериод.СуммаБезНДС20 + ЗаписьКниги.СуммаБезНДС20;
							ИтогЗаПериод.НДС20            = ИтогЗаПериод.НДС20 + ЗаписьКниги.НДС20;
							ИтогЗаПериод.СуммаБезНДС7     = ИтогЗаПериод.СуммаБезНДС7 + ЗаписьКниги.СуммаБезНДС7;
							ИтогЗаПериод.НДС7             = ИтогЗаПериод.НДС7 + ЗаписьКниги.НДС7;
							ИтогЗаПериод.СуммаБезНДС5     = ИтогЗаПериод.СуммаБезНДС5 + ЗаписьКниги.СуммаБезНДС5;
							ИтогЗаПериод.НДС5             = ИтогЗаПериод.НДС5 + ЗаписьКниги.НДС5;
							
						ИначеЕсли СтруктураПараметров.НалоговыйПериод >= '20141001' Тогда
							
							ИтогЗаПериод.СуммаБезНДС20     = ИтогЗаПериод.СуммаБезНДС20 + ЗаписьКниги.СуммаБезНДС20;
							ИтогЗаПериод.НДС20             = ИтогЗаПериод.НДС20 + ЗаписьКниги.НДС20;
							
						КонецЕсли;
						
						ИтогЗаПериод.СуммаСовсемБезНДС = ИтогЗаПериод.СуммаСовсемБезНДС + ЗаписьКниги.СуммаСовсемБезНДС;
						
					КонецЕсли;
				
				КонецЦикла;
			КонецЦикла; // РазделениеПоДоговоруДляАвансов.Следующий()
		КонецЦикла; // ЗаписьПоСФ.Следующий()
	КонецЕсли;
	
	УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
	
	Если НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
		СтруктураПараметров.СчетчикСтрокДопЛиста = Счетчик;
		СтруктураПараметров.СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента;
		СтруктураПараметров.СчетчикСегментов = СчетчикСегментов;
		СтруктураПараметров.СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода;
	КонецЕсли;
	
КонецПроцедуры

Процедура ЗаполнитьСтрокуКнигиПродаж(СтруктураПараметров, Секция, ЗаписьКниги, НомерСтроки, ДополнительнаяИнформация, ДетальнаяЗапись = Неопределено)
	
	Если ДетальнаяЗапись <> Неопределено Тогда
		ПараметрыЗаполнения = ДетальнаяЗапись;
	Иначе
		ПараметрыЗаполнения = ЗаписьКниги;
	КонецЕсли;
	
	ЗаполнитьЗначенияСвойств(Секция, ПараметрыЗаполнения);
	
	// Универсальная структура для заполнения книги по разным версиям постановления.
	СоставСтроки = Новый Структура;
	
	// В соответствии с письмом ФНС России от 16.01.2018 N СД-4-3/480@ операции по реализации 
	// товаров п.8 ст.161 НК РФ отражаются с прочерками "-" в графах 13б, 17.
	Если ПараметрыЗаполнения.Событие = Перечисления.СобытияПоНДСПродажи.НалогИсчисляетПокупатель Тогда 
		ПараметрВсегоПродаж = "-";
		ПараметрНДС20       = "-";
		ПараметрНДС18       = "-";
	Иначе
		ПараметрВсегоПродаж = ЗаписьКниги.ВсегоПродаж;
		ПараметрНДС20       = ЗаписьКниги.НДС20;
		ПараметрНДС18       = ЗаписьКниги.НДС18;
	КонецЕсли;
	СоставСтроки.Вставить("ВсегоПродаж",       ПараметрВсегоПродаж);
	СоставСтроки.Вставить("СуммаБезНДС20",     ЗаписьКниги.СуммаБезНДС20);
	СоставСтроки.Вставить("НДС20",             ПараметрНДС20);
	СоставСтроки.Вставить("СуммаБезНДС18",     ЗаписьКниги.СуммаБезНДС18);
	СоставСтроки.Вставить("НДС18",             ПараметрНДС18);
	СоставСтроки.Вставить("СуммаБезНДС10",     ЗаписьКниги.СуммаБезНДС10);
	СоставСтроки.Вставить("НДС10",             ЗаписьКниги.НДС10);
	СоставСтроки.Вставить("СуммаБезНДС7",      ЗаписьКниги.СуммаБезНДС7);
	СоставСтроки.Вставить("НДС7",              ЗаписьКниги.НДС7);
	СоставСтроки.Вставить("СуммаБезНДС5",      ЗаписьКниги.СуммаБезНДС5);
	СоставСтроки.Вставить("НДС5",              ЗаписьКниги.НДС5);
	СоставСтроки.Вставить("НДС0",              ЗаписьКниги.НДС0);
	СоставСтроки.Вставить("СуммаСовсемБезНДС", ЗаписьКниги.СуммаСовсемБезНДС);
	
	Если ЗначениеЗаполнено(ЗаписьКниги.СчетФактураДокумент) Тогда
		СоставСтроки.Вставить("СчетФактура", ЗаписьКниги.СчетФактураДокумент);
	ИначеЕсли ДетальнаяЗапись <> Неопределено Тогда
		СоставСтроки.Вставить("СчетФактура", ДетальнаяЗапись.СчетФактура);
	КонецЕсли;
	
	ПредставлениеСФ = УчетНДС.ОпределитьДатуИНомерСФ(ПараметрыЗаполнения);
	
	СоставСтроки.Вставить("ДатаНомер",                   ПредставлениеСФ.ДатаНомер);
	СоставСтроки.Вставить("НомерДата",                   ПредставлениеСФ.НомерДата);
	СоставСтроки.Вставить("НомерОтДата",                 ПредставлениеСФ.НомерОтДата);
	
	СоставСтроки.Вставить("НомерДатаИсправления",        ПредставлениеСФ.НомерДатаИсправленный);
	СоставСтроки.Вставить("НомерОтДатаИсправленный",     ПредставлениеСФ.НомерОтДатаИсправленный);
	
	СоставСтроки.Вставить("НомерДатаКорректировки",      ПредставлениеСФ.НомерДатаКорректировочный);
	СоставСтроки.Вставить("НомерОтДатаКорректировочный", ПредставлениеСФ.НомерОтДатаКорректировочный);
	
	СоставСтроки.Вставить("НомерДатаИсправленияКорректировки",
		ПредставлениеСФ.НомерДатаИсправленныйКорректировочный);
	СоставСтроки.Вставить("НомерОтДатаИсправленныйКорректировочный",
		ПредставлениеСФ.НомерОтДатаИсправленныйКорректировочный);
	
	СоставСтроки.Вставить("Ном",         НомерСтроки);
	СоставСтроки.Вставить("КодОперации", ПараметрыЗаполнения.КодВидаОперации);
	
	Если ЗначениеЗаполнено(ПараметрыЗаполнения.Покупатель) Тогда
		Если ПараметрыЗаполнения.СводныйКомиссионный Тогда
			Секция.Покупатель = "";
			Секция.Графа8 = "";
		Иначе
			СоставСтроки.Вставить("Покупатель",    ПараметрыЗаполнения.Покупатель);
			СоставСтроки.Вставить("ПокупательИНН", ПараметрыЗаполнения.ПокупательИНН);
			СоставСтроки.Вставить("ПокупательКПП", ПараметрыЗаполнения.ПокупательКПП);
			СоставСтроки.Вставить("Графа8", Строка(ПараметрыЗаполнения.ПокупательИНН) 
				+ ?(ЗначениеЗаполнено(ПараметрыЗаполнения.ПокупательКПП), "/" + Строка(ПараметрыЗаполнения.ПокупательКПП), ""));
		КонецЕсли;
		СоставСтроки.Вставить("Посредник", ПараметрыЗаполнения.Посредник);
		СоставСтроки.Вставить("ПосредникИНН_КПП", "" + Строка(ПараметрыЗаполнения.ПосредникИНН) 
			+ ?(ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникКПП), "/" + Строка(ПараметрыЗаполнения.ПосредникКПП), ""));
			
	ИначеЕсли ПараметрыЗаполнения.КодВидаОперации = "10" Тогда
		Секция.Покупатель = "--";
		Секция.Графа8     = "";
	КонецЕсли;
	
	СоставСтроки.Вставить("Валюта", 
		?(ЗначениеЗаполнено(ПараметрыЗаполнения.Валюта),
		"" + ПараметрыЗаполнения.Валюта + ", " + ПараметрыЗаполнения.ВалютаКод,  ""));
	СоставСтроки.Вставить("ВсегоПродажВВалюте", 
		?(ЗначениеЗаполнено(ПараметрыЗаполнения.Валюта), ПараметрыЗаполнения.ВсегоПродажВВалюте, ""));
	
	МассивДокПдтвОпл = Новый Массив(); // Массив документов оплаты НДС для декларации с 1 кв 2015 года
	
	ТекстОплаты = "";
	СписокДатОплат = Новый СписокЗначений();
	ТекстОплатыСНомером = "";
	ТекстНомерОтДатаОплаты = "";
	СписокНомеровИДатОплат = Новый СписокЗначений();
	
	СчетаФактуры = Новый Массив();
	
	Если ДетальнаяЗапись = Неопределено Тогда
		
		Если ЗначениеЗаполнено(ЗаписьКниги.ДатаОплаты) Тогда
			Если СписокДатОплат.НайтиПоЗначению(Формат(ЗаписьКниги.ДатаОплаты, "ДФ=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"));
				КонецЕсли;
			КонецЕсли;
			
			Если ЗначениеЗаполнено(СтрокаЗаписи.НомерДокументаОплаты) Тогда
				
				НомерДатаОплаты = СтрШаблон(НСтр("ru='%1;%2'"), 
					СтрокаЗаписи.НомерДокументаОплаты, Формат(СтрокаЗаписи.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
				НомерОтДатаОплаты = СтрШаблон(НСтр("ru='%1 от %2'"), 
					СтрокаЗаписи.НомерДокументаОплаты, Формат(СтрокаЗаписи.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
					
				Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено Тогда
					
					ТекстОплатыСНомером = ТекстОплатыСНомером 
						+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", "," + Символы.ПС) + НомерДатаОплаты;
					ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты 
						+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", ";" + Символы.ПС) + НомерОтДатаОплаты;
					СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
					
					Если СтруктураПараметров.ЗаполнениеДекларации Тогда
						СтруктураДокПдтвОпл = Новый Структура("НомДокПдтвОпл,ДатаДокПдтвОпл");
						СтруктураДокПдтвОпл.НомДокПдтвОпл = СтрокаЗаписи.НомерДокументаОплаты;
					Иначе
						СтруктураДокПдтвОпл = Новый Структура("НомерДокПдтвОпл,ДатаДокПдтвОпл");
						СтруктураДокПдтвОпл.НомерДокПдтвОпл = СтрокаЗаписи.НомерДокументаОплаты;
					КонецЕсли;
					СтруктураДокПдтвОпл.ДатаДокПдтвОпл = Формат(СтрокаЗаписи.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
					МассивДокПдтвОпл.Добавить(СтруктураДокПдтвОпл);

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

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

	СоставСтроки.Вставить("КодВидаТовара", СтрокаКодВидаТовара);
	МассивКодВидаТовара = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаКодВидаТовара, ";");
	
	ЗаполнитьЗначенияСвойств(Секция, СоставСтроки);
	
	Если СтруктураПараметров.ЗаполнениеДекларации Тогда
	
		ДополнительныеСведения = Новый Структура("Контрагент,ПредставлениеКонтрагента,Документ,ПредставлениеДокумента");
		
		СоставСтроки.Вставить("НомерПор", НомерСтроки);
		
		СоставСтроки.Вставить("НомСчФПрод",   ПредставлениеСФ.Номер);
		СоставСтроки.Вставить("ДатаСчФПрод",  ПредставлениеСФ.Дата);
		
		СоставСтроки.Вставить("НомИспрСчФ",   ПредставлениеСФ.НомерИсправленный);
		СоставСтроки.Вставить("ДатаИспрСчФ",  ПредставлениеСФ.ДатаИсправленный);
		
		СоставСтроки.Вставить("НомКСчФПрод",  ПредставлениеСФ.НомерКорректировочный);
		СоставСтроки.Вставить("ДатаКСчФПрод", ПредставлениеСФ.ДатаКорректировочный);
		
		СоставСтроки.Вставить("НомИспрКСчФ",  ПредставлениеСФ.НомерИсправленныйКорректировочный);
		СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
		
		СоставСтроки.Вставить("ОКВ", Строка(ПараметрыЗаполнения.ВалютаКод));
		
		МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрыЗаполнения.КодВидаОперации, ";");
		СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
		
		СоставСтроки.Вставить("ДокПдтвОпл", МассивДокПдтвОпл);
		
		// Сведения о покупателе
		
		МассивСвПок = Новый Массив();
		
		Если СоставСтроки.Свойство("ПокупательИНН")
			И (ЗначениеЗаполнено(СоставСтроки.ПокупательИНН)
			ИЛИ ЗначениеЗаполнено(СоставСтроки.ПокупательКПП)) Тогда
			СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПараметрыЗаполнения.ПокупательИНН, ПараметрыЗаполнения.ПокупательКПП);
			СтруктураРеквизитовКонтрагента.Вставить("Контрагент", ПараметрыЗаполнения.Контрагент);
			СтруктураРеквизитовКонтрагента.Вставить("КонтрагентНаименование", ПараметрыЗаполнения.Покупатель);
			МассивСвПок.Добавить(СтруктураРеквизитовКонтрагента);
		КонецЕсли;
		
		ДополнительныеСведения.Контрагент = ПараметрыЗаполнения.Контрагент;
		ДополнительныеСведения.ПредставлениеКонтрагента = ПараметрыЗаполнения.Покупатель;
		
		СоставСтроки.Вставить("СвПокуп", МассивСвПок);
		
		// Сведения о посреднике
		
		Если СоставСтроки.Свойство("Посредник")
			И (ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникИНН)
			ИЛИ ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникКПП)) Тогда
			СтруктураРеквизитовПосредника = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПараметрыЗаполнения.ПосредникИНН, ПараметрыЗаполнения.ПосредникКПП);
			СтруктураРеквизитовПосредника.Вставить("Контрагент", ПараметрыЗаполнения.ПосредникСсылка);
			СтруктураРеквизитовПосредника.Вставить("КонтрагентНаименование", СоставСтроки.Посредник);
			СоставСтроки.Вставить("СвПос", СтруктураРеквизитовПосредника);
		КонецЕсли;
		
		СоставСтроки.Вставить("СтоимПродСФВ",  ПараметрыЗаполнения.ВсегоПродажВВалюте);
		СоставСтроки.Вставить("СтоимПродСФ",   ЗаписьКниги.ВсегоПродаж);
		СоставСтроки.Вставить("СтоимПродСФ20", ЗаписьКниги.СуммаБезНДС20);
		СоставСтроки.Вставить("СтоимПродСФ18", ЗаписьКниги.СуммаБезНДС18);
		СоставСтроки.Вставить("СтоимПродСФ10", ЗаписьКниги.СуммаБезНДС10);
		СоставСтроки.Вставить("СтоимПродСФ0",  ЗаписьКниги.НДС0);
		СоставСтроки.Вставить("СтоимПродСФ7",  ЗаписьКниги.СуммаБезНДС7);
		СоставСтроки.Вставить("СтоимПродСФ5",  ЗаписьКниги.СуммаБезНДС5);
		СоставСтроки.Вставить("СумНДССФ20",    ЗаписьКниги.НДС20);
		СоставСтроки.Вставить("СумНДССФ18",    ЗаписьКниги.НДС18);
		СоставСтроки.Вставить("СумНДССФ10",    ЗаписьКниги.НДС10);
		СоставСтроки.Вставить("СумНДССФ7",     ЗаписьКниги.НДС7);
		СоставСтроки.Вставить("СумНДССФ5",     ЗаписьКниги.НДС5);
		
		СоставСтроки.Вставить("СтоимПродОсв",  ЗаписьКниги.СуммаСовсемБезНДС);
		
		Если ЗначениеЗаполнено(ПредставлениеСФ.НомерКорректировочный) Тогда
			ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
				НСтр("ru='Корректировочный счет-фактура № %1 от %2 на сумму %3 %4'"), 
				ПредставлениеСФ.НомерКорректировочный, 
				ПредставлениеСФ.ДатаКорректировочный, 
				Формат(ЗаписьКниги.ВсегоПродаж, "ЧДЦ=2; ЧН="),
				ПараметрыЗаполнения.ВалютаНаименование);
		Иначе
			ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
				НСтр("ru='%1 на сумму %2 %3'"),
				ПредставлениеСФ.Представление,
				Формат(ЗаписьКниги.ВсегоПродаж, "ЧДЦ=2; ЧН="),
				ПараметрыЗаполнения.ВалютаНаименование);
		КонецЕсли;
		
		ДополнительныеСведения.Документ = СоставСтроки.СчетФактура;
		СоставСтроки.Вставить("ДополнительныеСведения", ДополнительныеСведения);
		
		Если СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
		 ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4"
		 ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
		 ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
		 ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
			СоставСтроки.Вставить("КодВидТовар", МассивКодВидаТовара);
		КонецЕсли;
		
		Если СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
		 ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
		 ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
			СоставСтроки.Вставить("СвРегНом", МассивСвРегНом);
		КонецЕсли;
		
		Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
			СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел91.Добавить();
		Иначе
			СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел9.Добавить();
		КонецЕсли;
		
		ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
		
	ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
		И СтруктураПараметров.ФорматПоПостановлению735 Тогда
		
		СоставСтроки.Вставить("НомПП",        НомерСтроки);
		СоставСтроки.Вставить("НомерСчФ",     ПредставлениеСФ.Номер);
		СоставСтроки.Вставить("ДатаСчФ",      ПредставлениеСФ.Дата);
		СоставСтроки.Вставить("НомИспрСчФ",   ПредставлениеСФ.НомерИсправленный);
		СоставСтроки.Вставить("ДатаИспрСчФ",  ПредставлениеСФ.ДатаИсправленный);
		СоставСтроки.Вставить("НомерКСчФ",    ПредставлениеСФ.НомерКорректировочный);
		СоставСтроки.Вставить("ДатаКСчФ",     ПредставлениеСФ.ДатаКорректировочный);
		СоставСтроки.Вставить("НомИспрКСчФ",  ПредставлениеСФ.НомерИсправленныйКорректировочный);
		СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);

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

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

// Не используется начиная с вступления в силу постановление № 981 (с 1 октября 2017 года).
Процедура ЗаполнитьСтрокуКнигиПродажСводныйКомиссионный(ЗаписиКниги, СтруктураПараметров, Секция, НомерСтроки)
	
	ЗаписьКнигиДетальная = ЗаписиКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);

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

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

		ВалютаКод = ЗаписьКнигиДетальная.ВалютаКод;
		КодВидаОперации = ЗаписьКнигиДетальная.КодВидаОперации;
		ВалютаНаименование = ЗаписьКнигиДетальная.ВалютаНаименование;
		
	КонецЦикла;
	
	СоставСтроки.Вставить("ВсегоПродаж",        ВсегоПродаж);
	СоставСтроки.Вставить("ВсегоПродажВВалюте", ВсегоПродажВВалюте);
	СоставСтроки.Вставить("СуммаБезНДС18",      СуммаБезНДС18);
	СоставСтроки.Вставить("НДС18",              НДС18);
	СоставСтроки.Вставить("СуммаБезНДС10",      СуммаБезНДС10);
	СоставСтроки.Вставить("НДС10",              НДС10);
	СоставСтроки.Вставить("НДС0",               НДС0);
	СоставСтроки.Вставить("СуммаСовсемБезНДС",  СуммаСовсемБезНДС);
	СоставСтроки.Вставить("Контрагент",         Покупатель);
	СоставСтроки.Вставить("НомерДатаОплаты",    ТекстОплатыСНомером);
	СоставСтроки.Вставить("НомерОтДатаОплаты",  ТекстНомерОтДатаОплаты);
	
	ЗаполнитьЗначенияСвойств(Секция, СоставСтроки);

	Если СтруктураПараметров.ЗаполнениеДекларации Тогда
		
		ДополнительныеСведения.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
		ДополнительныеСведения.ПредставлениеКонтрагента = НСтр("ru='Сводные счета-фактуры'");
		ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
			НСтр("ru='%1 на сумму %2 %3'"),
			ПредставлениеСФ.Представление,
			Формат(ВсегоПродаж, "ЧДЦ=2; ЧН="),
			ВалютаНаименование);
		СоставСтроки.Вставить("ДополнительныеСведения", ДополнительныеСведения);
			
		СоставСтроки.Вставить("НомерПор", НомерСтроки);
		
		СоставСтроки.Вставить("НомСчФПрод",   ПредставлениеСФ.Номер);
		СоставСтроки.Вставить("ДатаСчФПрод",  ПредставлениеСФ.Дата);
		
		СоставСтроки.Вставить("НомИспрСчФ",   ПредставлениеСФ.НомерИсправленный);
		СоставСтроки.Вставить("ДатаИспрСчФ",  ПредставлениеСФ.ДатаИсправленный);
		
		СоставСтроки.Вставить("НомКСчФПрод",  ПредставлениеСФ.НомерКорректировочный);
		СоставСтроки.Вставить("ДатаКСчФПрод", ПредставлениеСФ.ДатаКорректировочный);
		
		СоставСтроки.Вставить("НомИспрКСчФ",  ПредставлениеСФ.НомерИсправленныйКорректировочный);
		СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
		
		СоставСтроки.Вставить("ОКВ", Строка(ВалютаКод));
		
		МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(КодВидаОперации, ";");
		СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
		
		СоставСтроки.Вставить("ДокПдтвОпл", МассивДокПдтвОпл);
		СоставСтроки.Вставить("СвПокуп", МассивСвПок);
		
		СоставСтроки.Вставить("СтоимПродСФВ",  ВсегоПродажВВалюте);
		СоставСтроки.Вставить("СтоимПродСФ",   ВсегоПродаж);
		СоставСтроки.Вставить("СтоимПродСФ20", 0);
		СоставСтроки.Вставить("СтоимПродСФ18", СуммаБезНДС18);
		СоставСтроки.Вставить("СтоимПродСФ10", СуммаБезНДС10);
		СоставСтроки.Вставить("СтоимПродСФ0",  НДС0);
		СоставСтроки.Вставить("СумНДССФ20",    0);
		СоставСтроки.Вставить("СумНДССФ18",    НДС18);
		СоставСтроки.Вставить("СумНДССФ10",    НДС10);
		СоставСтроки.Вставить("СтоимПродОсв",  СуммаСовсемБезНДС);
		
		Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
			СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел91.Добавить();
		Иначе
			СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел9.Добавить();
		КонецЕсли;
		
		ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
		
	КонецЕсли;
	
КонецПроцедуры

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

	СтавкиНДС20 = Новый Массив();
	СтавкиНДС20.Добавить(Перечисления.СтавкиНДС.НДС20);
	СтавкиНДС20.Добавить(Перечисления.СтавкиНДС.НДС20_120);
	
	СтавкиНДС18 = Новый Массив();
	СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18);
	СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18_118);
	
	СтавкиНДС10 = Новый Массив();
	СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10);
	СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10_110);
	
	СтавкиНДС7 = Новый Массив();
	СтавкиНДС7.Добавить(Перечисления.СтавкиНДС.НДС7);
	СтавкиНДС7.Добавить(Перечисления.СтавкиНДС.НДС7_107);
	
	СтавкиНДС5 = Новый Массив();
	СтавкиНДС5.Добавить(Перечисления.СтавкиНДС.НДС5);
	СтавкиНДС5.Добавить(Перечисления.СтавкиНДС.НДС5_105);
	
	СтавкаНДС0 = Перечисления.СтавкиНДС.НДС0;
	СтавкаБезНДС = Перечисления.СтавкиНДС.БезНДС;
	
	Запрос.УстановитьПараметр("СтавкиНДС20",  СтавкиНДС20);
	Запрос.УстановитьПараметр("СтавкиНДС18",  СтавкиНДС18);
	Запрос.УстановитьПараметр("СтавкиНДС10",  СтавкиНДС10);
	Запрос.УстановитьПараметр("СтавкиНДС7",   СтавкиНДС7);
	Запрос.УстановитьПараметр("СтавкиНДС5",   СтавкиНДС5);
	Запрос.УстановитьПараметр("СтавкаНДС0",   СтавкаНДС0);
	Запрос.УстановитьПараметр("СтавкаБезНДС", СтавкаБезНДС);
	
	ВидыЦенностей_СобственныеСФ = Новый Массив;
	ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.ВнутреннееПотребление);
	ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.СМРСобственнымиСилами);
	ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
		ВидыЦенностей_СобственныеСФ,
		Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент(Ложь));
	ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
		ВидыЦенностей_СобственныеСФ,
		Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгентРеализацияТоваров());
	Запрос.УстановитьПараметр("ВидыЦенностей_СобственныеСФ", ВидыЦенностей_СобственныеСФ);
	
	ВидыЦенностей_Аванс = Новый Массив;
	ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные);
	ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные0);
	ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученныеНалоговыйАгент);
	ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученныхНалоговыйАгент);
	ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученных);
	ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыВыданные);
	ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыВыданныеНалоговыйАгент);
	
	Запрос.УстановитьПараметр("ВидыЦенностей_Аванс", ВидыЦенностей_Аванс);
	
	ВидыЦенностей_СуммоваяРазница = Новый Массив;
	ВидыЦенностей_СуммоваяРазница.Добавить(Перечисления.ВидыЦенностей.СуммыСвязанныеСРасчетамиПоОплате);
	Запрос.УстановитьПараметр("ВидыЦенностей_СуммоваяРазница", ВидыЦенностей_СуммоваяРазница);
	
	Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгент",
		Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент());
	
	Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгентПокупатель",
		Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгентРеализацияТоваров());

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

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

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

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

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

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

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

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

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

	// Определим документы корректировки.
	ТекстОрганизацияЯвляетсяПокупателем = УчетНДСПереопределяемый.ТекстЗапросаСчетаФактурыВыданныеГдеОрганизацияЯвляетсяПокупателем();

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

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

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

		ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента И СтруктураПараметров.ФорматПоПостановлению735
			  ИЛИ СтруктураПараметров.ДополнительныеЛистыЗаТекущийПериод Тогда

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, 
				"Период МЕЖДУ &НачалоПериода И &КонецПериода", 
				"Период >= &НачалоПериода");
			ТекстЗапроса = СтрЗаменить(ТекстЗапроса, 
				"И НЕ НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста", 
				"И НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
				|	И НДСЗаписиКнигиПродаж.КорректируемыйПериод >= &НачалоПериода 
				|	И НДСЗаписиКнигиПродаж.КорректируемыйПериод <= &КонецПериода");

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

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

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

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

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

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

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

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


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

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

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

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

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

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

Функция НоваяСтрокаИтоговКнигиПродаж()

	Результат = Новый Структура();
	Результат.Вставить("ВсегоПродаж",       0);
	Результат.Вставить("СуммаБезНДС20",     0);
	Результат.Вставить("СуммаБезНДС18",     0);
	Результат.Вставить("СуммаБезНДС7",      0);
	Результат.Вставить("СуммаБезНДС5",      0);
	Результат.Вставить("НДС20",             0);
	Результат.Вставить("НДС18",             0);
	Результат.Вставить("НДС7",              0);
	Результат.Вставить("НДС5",              0);
	Результат.Вставить("СуммаБезНДС10",     0);
	Результат.Вставить("НДС10",             0);
	Результат.Вставить("НДС0",              0);
	Результат.Вставить("СуммаСовсемБезНДС", 0);
	
	Возврат Результат;

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

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

#КонецЕсли

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