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

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

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

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

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

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

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

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

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

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

	ПараметрыУказанияСерий.РегистрироватьСерии = НоменклатураКлиентСервер.НеобходимоРегистрироватьСерии(ПараметрыУказанияСерий);
	ПараметрыУказанияСерий.Дата = Объект.Дата;
	
	Возврат ПараметрыУказанияСерий;
КонецФункции

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

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

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

// Получить порядковые номера строк вида "1-2,4,10-13" для представления строки 5а при печати счетов-фактур.
// 
// Параметры:
//  Таблица - ТаблицаЗначений - Описание:
//   * СчетФактура - ДокументСсылка.СчетФактураВыданный
//   * ДокументОснование - ДокументСсылка
//   * НомерСтрокиСФ - Число - номер строки
// 
// Возвращаемое значение:
//  ТаблицаЗначений - Описание:
//   * СчетФактура - ДокументСсылка.СчетФактураВыданный
//   * ДокументОснование - ДокументСсылка
//   * НомерСтрокиСФ - Строка
//
Функция ПолучитьПорядковыеНомераСтрок(Знач Таблица) Экспорт
	
	Результат = Таблица.Скопировать(,"СчетФактура,ДокументОснование");
	Результат.Свернуть("СчетФактура,ДокументОснование");
	Результат.Колонки.Добавить("НомерСтрокиСФ",Новый ОписаниеТипов("Строка"));
	Результат.Индексы.Добавить("ДокументОснование");
	
	Расчет = Таблица.Скопировать();
	Расчет.Сортировать("СчетФактура,ДокументОснование,НомерСтрокиСФ");
	
	ПорядковыеНомераСтрок = "";
	ПредыдущийНомер = 0;
	ИдетИнтервал = Ложь;
	ТекущееОснование = Неопределено; // считаем, что двух СФ с одним основанием быть не может
	Для Каждого СтрокаРасчета Из Расчет Цикл
		Если СтрокаРасчета.НомерСтрокиСФ = 0 Тогда
			Продолжить;
		КонецЕсли;
		Если СтрокаРасчета.ДокументОснование <> ТекущееОснование Тогда //новый расчет
			Если ТекущееОснование <> Неопределено Тогда // закрываем старый расчет
				Если ИдетИнтервал Тогда
					ИдетИнтервал = Ложь;
					ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "-" + СтрЗаменить(ПредыдущийНомер,Символы.НПП,"");
				КонецЕсли;
				СтрокаОснования = Результат.Найти(ТекущееОснование,"ДокументОснование");
				СтрокаОснования.НомерСтрокиСФ = ПорядковыеНомераСтрок;
			КонецЕсли;
			ТекущееОснование = СтрокаРасчета.ДокументОснование;
			ПорядковыеНомераСтрок = ""+СтрЗаменить(СтрокаРасчета.НомерСтрокиСФ,Символы.НПП,"");
		Иначе // продолжаем расчет
			Если ПредыдущийНомер = СтрокаРасчета.НомерСтрокиСФ - 1 Тогда
				ИдетИнтервал = Истина;
			Иначе
				Если ИдетИнтервал Тогда
					ИдетИнтервал = Ложь;
					ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "-" + СтрЗаменить(ПредыдущийНомер,Символы.НПП,"");
				КонецЕсли;
				ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "," + СтрЗаменить(СтрокаРасчета.НомерСтрокиСФ,Символы.НПП,"");
			КонецЕсли;
		КонецЕсли;
		ПредыдущийНомер = СтрокаРасчета.НомерСтрокиСФ;
	КонецЦикла;
	Если ТекущееОснование <> Неопределено Тогда // закрываем последний расчет
		Если ИдетИнтервал Тогда
			ИдетИнтервал = Ложь;
			ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "-" + СтрЗаменить(ПредыдущийНомер,Символы.НПП,"");
		КонецЕсли;
		СтрокаОснования = Результат.Найти(ТекущееОснование,"ДокументОснование");
		СтрокаОснования.НомерСтрокиСФ = ПорядковыеНомераСтрок;
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

// Определяет строковое представление таблицы платежно-расчетных документов счета-фактуры.
//
//	Параметры:
//		ПлатежноРасчетныеДокументы - ТаблицаЗначений - таблица платежно-расчетных документов
//			(см. ТЧ "ПлатежноРасчетныеДокументы" документа "СчетФактураВыданный";
//
//	Возвращаемое значение:
//		Строка - представление таблицы платежно-расчетных документов,
//			получившеяся перебором строк таблицы, приводимых к виду:"[Номер] от [Дата]";
//
Функция СтрокаРасчетноПлатежныхДокументов(ПлатежноРасчетныеДокументы) Экспорт
	
	СтрокаНомеровИДата = "";
	Для Каждого СтрокаТаблицы Из ПлатежноРасчетныеДокументы Цикл
		СтрокаНомеровИДата = СтрокаНомеровИДата + ?(ПустаяСтрока(СтрокаНомеровИДата), "", ", ")
			+ СтрокаТаблицы.НомерПлатежноРасчетногоДокумента 
			+ " от " + Формат(СтрокаТаблицы.ДатаПлатежноРасчетногоДокумента, "ДЛФ=D");
	КонецЦикла; 
		
	Возврат СтрокаНомеровИДата;
	
КонецФункции

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

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

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

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

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


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

// Добавляет команду печати УПД
// 
// Параметры:
//  КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//  Порядок			 - Число, Неопределено - значение по умолчанию Неопределено
//  УсловиеВидимости - Структура - поля:
//  		* Реквизит - Строка
//  		* ВидСравнения - ВидСравнения
//  		* Значение - Произвольный
//
Процедура ДобавитьКомандуПечатиУПД(КомандыПечати, Порядок = Неопределено, УсловиеВидимости = Неопределено) Экспорт

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ИмяРегистра = "ВтТаблицаСуммДокументов";

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

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

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

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

	Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаСуммДокументов", ТекстыЗапроса) Тогда
		ТекстЗапросаВтТаблицаСуммДокументов(Запрос, ТекстыЗапроса);
	КонецЕсли;

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

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

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

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

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


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

Функция ТекстЗапросаТаблицаЗачетыАвансов(Запрос, ТекстыЗапроса, Регистры)

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

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

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

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

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

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

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

Функция ТекстЗапросаТаблицаНДССостояниеРеализации0(Запрос, ТекстыЗапроса, Регистры)

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

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

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


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

#Область Заполнение

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

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

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

	ВыводитьСерии = Константы.ВыводитьСерииВПечатныхФормах.Получить();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС
	Если ЕстьЭлектронноеАктирование Тогда	
		КоличествоРезультатов     = КоличествоРезультатов - 5;
	КонецЕсли;
	// Конец ЭлектронноеВзаимодействие.ЭлектронноеАктированиеЕИС

	
	Если ЗаполнитьДанныеШтрихкодовДляУКДДо Тогда
		РезультатПоКонтрагентам   = МассивРезультатов[КоличествоРезультатов - 11];
		РезультатПоШапке          = МассивРезультатов[КоличествоРезультатов - 10];
		РезультатПоИсходнымДанным = МассивРезультатов[КоличествоРезультатов - 9];
		РезультатПоТабличнойЧасти = МассивРезультатов[КоличествоРезультатов - 8];
		
		РезультатПоТабличнойЧастиВыгрузка = РезультатПоТабличнойЧасти.Выгрузить();
		
		РезультатПоТабличнойЧастиТЗ = Новый ТаблицаЗначений;
		РезультатПоТабличнойЧастиТЗ.Колонки.Добавить("Номенклатура",   Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
		РезультатПоТабличнойЧастиТЗ.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
		РезультатПоТабличнойЧастиТЗ.Колонки.Добавить("Ссылка",         РезультатПоТабличнойЧастиВыгрузка.Колонки.Ссылка.ТипЗначения);
		РезультатПоТабличнойЧастиТЗ.Колонки.Добавить("Количество",     Новый ОписаниеТипов("Число"));
		РезультатПоТабличнойЧастиТЗ.Колонки.Добавить("КоличествоДо",   Новый ОписаниеТипов("Число"));
		
		Для Каждого СтрокаТЧ Из РезультатПоТабличнойЧастиВыгрузка Цикл
			ЗаполнитьЗначенияСвойств(РезультатПоТабличнойЧастиТЗ.Добавить(), СтрокаТЧ);
		КонецЦикла;
		
		ТоварыДляМаркировки = ИнтеграцияИСМПУТ.ТаблицаТоварыДляЭДО(РезультатПоТабличнойЧастиТЗ, "КоличествоДо");
		
		МаркировкаДо = МассивРезультатов[КоличествоРезультатов - 6].Выгрузить();
		
		ПараметрыСканирования = Неопределено;
		Основание = Неопределено;
		Если ПараметрыПечати.Свойство("ЗаполнениеЭлектронногоДокумента") Тогда
			Если РезультатПоТабличнойЧастиТЗ.Количество() Тогда
				Основание = РезультатПоТабличнойЧастиТЗ[0].Ссылка;
			ИначеЕсли МассивШапокОснований.Количество() Тогда
				Основание = МассивШапокОснований[0];
			КонецЕсли;
			Если ТипЗнч(Основание) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
				Основание = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Основание, "ДокументОснование");
			КонецЕсли;
			
			Если ТипЗнч(Основание) = Тип("ДокументСсылка.ВозвратТоваровОтКлиента") Тогда
				Для Каждого СтрокаТЧ Из РезультатПоТабличнойЧастиТЗ Цикл
					СтрокаТЧ.КоличествоДо = СтрокаТЧ.КоличествоДо - СтрокаТЧ.Количество;
					СтрокаТЧ.Количество = 0;
				КонецЦикла;
			КонецЕсли;
			
			ТоварыДляМаркировки = ИнтеграцияИСМПУТ.ТаблицаТоварыДляЭДО(РезультатПоТабличнойЧастиТЗ, "КоличествоДо");
			
			ПараметрыСканирования = ШтрихкодированиеОбщегоНазначенияИС.ПараметрыСканирования(Основание);
			МаркировкаДо = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимоеИКодыОСУ(
				МаркировкаДо,
				ТоварыДляМаркировки,
				ПараметрыСканирования);
				
		Иначе
			МаркировкаДо = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(МаркировкаДо);
		КонецЕсли;
		
		Если МаркировкаДо.Количество() = 0 Тогда // Коды переданы через документ прямого обмена.
			Маркировка = МаркировкаДо.СкопироватьКолонки();
		Иначе
			Маркировка = МассивРезультатов[КоличествоРезультатов - 7].Выгрузить();
			Если ПараметрыПечати.Свойство("ЗаполнениеЭлектронногоДокумента") Тогда
				ТоварыДляМаркировки = ИнтеграцияИСМПУТ.ТаблицаТоварыДляЭДО(РезультатПоТабличнойЧастиТЗ, "Количество");
				Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимоеИКодыОСУ(
					Маркировка,
					ТоварыДляМаркировки,
					ПараметрыСканирования);
			Иначе
				Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(Маркировка);
			КонецЕсли;
		КонецЕсли;
		
		РезультатПоПоставщикам    = МассивРезультатов[КоличествоРезультатов - 5];
		
		Прослеживаемость = МассивРезультатов[КоличествоРезультатов - 2];
		ПрослеживаемыеКомплектующие = УчетПрослеживаемыхТоваровЛокализация.ПрослеживаемыеКомплектующиеДляПечатиДанных(
										МассивРезультатов[КоличествоРезультатов - 1]);
		
		СтруктураДанныхДляПечати = Новый Структура;
		СтруктураДанныхДляПечати.Вставить("РезультатПоШапке"              , РезультатПоШапке);
		СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти"     , РезультатПоТабличнойЧасти);
		СтруктураДанныхДляПечати.Вставить("РезультатПоИсходнымДанным"     , РезультатПоИсходнымДанным);
		СтруктураДанныхДляПечати.Вставить("РезультатПоКонтрагентам"       , РезультатПоКонтрагентам);
		СтруктураДанныхДляПечати.Вставить("Маркировка"                    , Маркировка);
		СтруктураДанныхДляПечати.Вставить("МаркировкаДо"                  , МаркировкаДо);
		СтруктураДанныхДляПечати.Вставить("РезультатПоПоставщикам"        , РезультатПоПоставщикам);
		СтруктураДанныхДляПечати.Вставить("НомерСформированВСчетеФактуре" , Истина);
		СтруктураДанныхДляПечати.Вставить("Прослеживаемость"              , Прослеживаемость);
		СтруктураДанныхДляПечати.Вставить("ПрослеживаемыеКомплектующие"   , ПрослеживаемыеКомплектующие);
		
	Иначе
		РезультатПоКонтрагентам   = МассивРезультатов[КоличествоРезультатов - 10];
		РезультатПоШапке          = МассивРезультатов[КоличествоРезультатов - 9];
		РезультатПоИсходнымДанным = МассивРезультатов[КоличествоРезультатов - 8];
		РезультатПоТабличнойЧасти = МассивРезультатов[КоличествоРезультатов - 7];
		
		Маркировка = МассивРезультатов[КоличествоРезультатов - 6].Выгрузить();
		Если ПараметрыПечати.Свойство("ЗаполнениеЭлектронногоДокумента") Тогда
			Выборка = РезультатПоШапке.Выбрать();
			Если Выборка.Следующий() И
				(ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.КорректировкаРеализации")
					Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг")
					Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ВозвратТоваровПоставщику")
					Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ПередачаТоваровХранителю")
					Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ОтгрузкаТоваровСХранения")
					Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ОтгрузкаТоваровКлиенту")
					Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ПередачаТоваровМеждуОрганизациями")
					Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ВозвратТоваровМеждуОрганизациями"))
					Тогда
				ДокументОснование = Выборка.ДокументОснование;
				
				Товары = ИнтеграцияИСМПУТ.ТаблицаТоварыДляЭДО(РезультатПоТабличнойЧасти.Выгрузить(), "КоличествоБазовыхЕдиниц");
				Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимоеИКодыОСУ(
					Маркировка, Товары, ШтрихкодированиеОбщегоНазначенияИС.ПараметрыСканирования(ДокументОснование));
			Иначе
				Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(Маркировка);
			КонецЕсли;
		Иначе
			Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(Маркировка);
		КонецЕсли;
		
		РезультатПоПоставщикам    = МассивРезультатов[КоличествоРезультатов - 5];
		
		Прослеживаемость = МассивРезультатов[КоличествоРезультатов - 2];
		ПрослеживаемыеКомплектующие = УчетПрослеживаемыхТоваровЛокализация.ПрослеживаемыеКомплектующиеДляПечатиДанных(
										МассивРезультатов[КоличествоРезультатов - 1]);
		
		СтруктураДанныхДляПечати = Новый Структура;
		СтруктураДанныхДляПечати.Вставить("РезультатПоШапке"              , РезультатПоШапке);
		СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти"     , РезультатПоТабличнойЧасти);
		СтруктураДанныхДляПечати.Вставить("РезультатПоИсходнымДанным"     , РезультатПоИсходнымДанным);
		СтруктураДанныхДляПечати.Вставить("РезультатПоКонтрагентам"       , РезультатПоКонтрагентам);
		СтруктураДанныхДляПечати.Вставить("Маркировка"                    , Маркировка);
		СтруктураДанныхДляПечати.Вставить("РезультатПоПоставщикам"        , РезультатПоПоставщикам);
		СтруктураДанныхДляПечати.Вставить("НомерСформированВСчетеФактуре" , Истина);
		СтруктураДанныхДляПечати.Вставить("Прослеживаемость"              , Прослеживаемость);
		СтруктураДанныхДляПечати.Вставить("ПрослеживаемыеКомплектующие"   , ПрослеживаемыеКомплектующие);
	
	КонецЕсли;
	
	Если ЗаполнятьПлатежноРасчетныеДокументы Тогда
		СтруктураДанныхДляПечати.Вставить("ПлатежноРасчетныеДокументы", ПлатежноРасчетныеДокументы);
	КонецЕсли;

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

	
	Возврат СтруктураДанныхДляПечати;
	
КонецФункции

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

Функция ПолучитьДанныеДляПечатнойФормыУКД(Знач ПараметрыПечати, МассивОбъектов) Экспорт
	
	Возврат ПолучитьДанныеДляПечатнойФормыУПД(ПараметрыПечати, МассивОбъектов);
	
КонецФункции

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

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

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

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

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

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

// Формирует временную таблицу, содержащую данные документа по поставщику: головную организацию, КПП поставщика, Индекс подразделения.
//
// Параметры:
//	МенеджерВременныхТаблиц - МенеджерВременныхТаблиц - Менеджер временных таблиц, содержащий таблицу ТаблицаДанныхДокументов с полями:
//		Ссылка,
//		Организация,
//		Подразделение,
//		Склад,
//		Период.
Процедура ПоместитьВременнуюТаблицуДанныхПоставщика(МенеджерВременныхТаблиц)

	Обработки.ПечатьОбщихФорм.ПоместитьВременнуюТаблицуДанныхПоставщика(МенеджерВременныхТаблиц);

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

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

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

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

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

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

#Область ПечатьПоДаннымТорговыхДокументов

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

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

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

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

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

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

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

Функция ТекстЗапросаДанныхМаркировки(ЗаполнитьДанныеШтрихкодовДляУКДДо = Ложь)

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

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

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

Функция ТекстЗапросаДанныхПрослеживаемость()
	
	ТекстЗапроса = РеализацияУслугПрочихАктивовЛокализация.ТекстЗапросаДанныхПрослеживаемость();
	
	Возврат ТекстЗапроса;
	
КонецФункции

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

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

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

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

#Область ПечатьПоДаннымСчетовФактур

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция ПолучитьПокупателей(СписокПокупателей, ДатаСведений, ПолучатьИННКПП = Ложь) Экспорт
	
	Возврат ЗаполнитьСлужебныеРеквизитыПокупателей(СписокПокупателей, ДатаСведений, ПолучатьИННКПП);
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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