Возврат товаров поставщику / Модуль менеджера

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

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

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

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

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

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

// СтандартныеПодсистемы.ВерсионированиеОбъектов

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

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

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

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

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

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

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

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

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

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

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

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

	Возврат ПараметрыУказанияСерий;
	
КонецФункции

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

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


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

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

#Область УчетНДС

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ПартионныйУчет

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Если ПривилегированныйРежим() Тогда
		УстановитьПривилегированныйРежим(Ложь);
	КонецЕсли;
	
	Возврат ТабличныйДокумент;

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

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

#Область ОснованиеДляПечати

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

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

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

	// Возврат поставщику
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "ВозвратПоставщику";
	КомандаПечати.Представление = НСтр("ru = 'Возврат поставщику'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	КомандаПечати.ОсновнаяПечатнаяФорма = Истина;
	КомандаПечати.НаименованиеПечатнойФормы = НСтр("ru = 'Возврат поставщику'");

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

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

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

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

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

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

	Возврат СтруктураВозврата
	
КонецФункции

Функция ПолноеИмяОбъекта()
	Возврат "Документ.ВозвратТоваровПоставщику";
КонецФункции

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

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

#Область ШаблоныСообщений

// Вызывается при подготовке шаблонов сообщений и позволяет переопределить список реквизитов и вложений.
//
// Параметры:
//  Реквизиты               - ДеревоЗначений - список реквизитов шаблона:
//         * Имя            - Строка - Уникальное имя общего реквизита.
//         * Представление  - Строка - Представление общего реквизита.
//         * Тип            - Тип    - Тип реквизита. По умолчанию строка.
//         * Формат         - Строка - Формат вывода значения для чисел, дат, строк и булевых значений.
//  Вложения                - ТаблицаЗначений - печатные формы и вложения:
//         * Имя            - Строка - Уникальное имя вложения.
//         * Представление  - Строка - Представление варианта.
//         * ТипФайла       - Строка - Тип вложения, который соответствует расширению файла: "pdf", "png", "jpg", mxl"
//                                      и др.
//  ДополнительныеПараметры - Структура - дополнительные сведения о шаблоне сообщений.
//
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
	
КонецПроцедуры

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

// Заполняет список получателей SMS при отправке сообщения сформированного по шаблону.
//
// Параметры:
//   ПолучателиSMS - ТаблицаЗначений - список получается SMS:
//     * НомерТелефона - Строка - номер телефона, куда будет отправлено сообщение SMS.
//     * Представление - Строка - представление получателя сообщения SMS.
//     * Контакт       - СправочникСсылка - контакт, которому принадлежит номер телефона.
//  ПредметСообщения - ЛюбаяСсылка - ссылка на объект являющийся источником данных.
//
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
	
КонецПроцедуры

// Заполняет список получателей письма при отправки сообщения сформированного по шаблону.
//
// Параметры:
//   ПолучателиПисьма - ТаблицаЗначений - список получается письма:
//     * Адрес           - Строка - адрес электронной почты получателя.
//     * Представление   - Строка - представление получается письма.
//     * ВариантОтправки - Строка - Варианты отправки письма: "Кому", "Копия", "СкрытаяКопия", "ОбратныйАдреса";
//  ПредметСообщения - ЛюбаяСсылка - ссылка на объект являющийся источником данных.
//
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
	
КонецПроцедуры

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

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

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

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

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

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

#КонецЕсли

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