Заявка на возврат товаров от клиента / Модуль менеджера

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

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

// Формирует представление объекта метаданных на основном языке.
// Возвращаемое значение:
// Строка - Представление объекта метаданных на основном языке.
//
Функция ПредставлениеОбъектаНаОсновномЯзыке() Экспорт
	
	КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
	
	ПредставлениеОбъекта = НСтр(
		"ru = 'Заявка на возврат товаров от клиента'",
		КодОсновногоЯзыка);
		
	Возврат ПредставлениеОбъекта;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ТекстыЗапросаРаспоряженияНакладных

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

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

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

#Область РасчетСостояний

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область НаправленияДеятельности

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Процедура ЗаполнитьТабличныйДокументЗаявкиНаВозврат(ТабличныйДокумент, Запрос, ОбъектыПечати, КодЯзыка)
	
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаявкаНаВозвратТоваровОтКлиента_ЗаявкаНаВозврат";
	
	ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
	РезультатЗапроса = ПакетРезультатовЗапроса[0]; // РезультатЗапроса
	ДанныеПечати = РезультатЗапроса.Выбрать();
	РезультатПоТабличнойЧастиВозвращаемыеТовары = ПакетРезультатовЗапроса[8];
	РезультатПоТабличнойЧастиЗаменяющиеТовары   = ПакетРезультатовЗапроса[ПакетРезультатовЗапроса.Количество() - 1];
	
	ИспользоватьРучныеСкидки         = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
	ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
	
	ПервыйДокумент = Истина;
	КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
	ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки;
	ВыводитьКоды = ЗначениеЗаполнено(ИмяКолонкиКодов);
	
	Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПФ_MXL_ЗаявкаНаВозврат", КодЯзыка);
	
	ОбластьЗаголовокЗаменаИсправление = Макет.ПолучитьОбласть("ЗаголовокЗаменаИсправление");
	ОбластьЗаголовокВозвратИсправление = Макет.ПолучитьОбласть("ЗаголовокВозвратИсправление");
	ОбластьЗаголовокЗамена = Макет.ПолучитьОбласть("ЗаголовокЗамена");
	ОбластьЗаголовокВозврат = Макет.ПолучитьОбласть("ЗаголовокВозврат");
	
	ОбластьПоставщик = Макет.ПолучитьОбласть("Поставщик");
	ОбластьПокупатель = Макет.ПолучитьОбласть("Покупатель");
	ОбластьДополнительнаяИнформация = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
	ОбластьПодвалЗаказа = Макет.ПолучитьОбласть("ПодвалЗаказа");
	
	Если Не ЗначениеЗаполнено(ИмяКолонкиКодов) Тогда
		// В случае если не надо выводить колонку для отображения кодов
		// 		раздвинем колонку товаров на ширину колонки кодов.
		ОбластьПервойКолонкиТовара = Макет.Область("ПерваяКолонкаТовара");
		ОбластьПервойКолонкиТовара.ШиринаКолонки = ОбластьПервойКолонкиТовара.ШиринаКолонки + 12;
	КонецЕсли;
	
	Пока ДанныеПечати.Следующий() Цикл
		
		Если Не ПервыйДокумент Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		Иначе
			ПервыйДокумент = Ложь;
		КонецЕсли;
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		СтруктураПоиска      = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
		ЗаменяющиеТоварыТЧ   = РезультатПоТабличнойЧастиЗаменяющиеТовары.Выгрузить();
		ВозвращаемыеТоварыТЧ = РезультатПоТабличнойЧастиВозвращаемыеТовары.Выгрузить();
		
		ЕстьНаценки = Ложь;
		ЕстьСкидки  = Ложь;
		Товары = ЗаменяющиеТоварыТЧ.НайтиСтроки(СтруктураПоиска);
		
		Скидки = Новый Структура;
		
		Если ИспользоватьРучныеСкидки Или ИспользоватьАвтоматическиеСкидки Тогда
			
			Если ТипЗнч(Товары) = Тип("ТаблицаЗначений") Или ТипЗнч(Товары) = Тип("Массив") Тогда
				
				Для Каждого СтрокаТоваров Из Товары Цикл
					Если СтрокаТоваров.СуммаСкидки>0 Тогда
						ЕстьСкидки = Истина;
						Прервать;
					КонецЕсли;
				КонецЦикла;
				
				Для Каждого СтрокаТоваров Из Товары Цикл
					Если СтрокаТоваров.СуммаСкидки<0 Тогда
						ЕстьНаценки = Истина;
						Прервать;
					КонецЕсли;
				КонецЦикла;
				
			ИначеЕсли ТипЗнч(Товары) = Тип("ВыборкаИзРезультатаЗапроса") Тогда
				
				Пока Товары.Следующий() Цикл
					Если Товары.СуммаСкидки>0 Тогда
						ЕстьСкидки = Истина;
					ИначеЕсли Товары.СуммаСкидки<0 Тогда
						ЕстьНаценки = Истина;
					КонецЕсли;
				КонецЦикла;
				
			КонецЕсли;
			
			Если ЕстьНаценки И ЕстьСкидки Тогда
				Скидки.Вставить("ПостфиксКолонки", "СкидкаНаценка");
			ИначеЕсли ЕстьНаценки И НЕ ЕстьСкидки Тогда
				Скидки.Вставить("ПостфиксКолонки", "Наценка");
			ИначеЕсли ЕстьСкидки Тогда
				Скидки.Вставить("ПостфиксКолонки", "Скидка");
			КонецЕсли;
			
		КонецЕсли;
		
		Скидки.Вставить("ЕстьСкидки", ЕстьНаценки ИЛИ ЕстьСкидки);
		Скидки.Вставить("ЕстьСкидка", ЕстьСкидки);
		Скидки.Вставить("ЕстьНаценка", ЕстьНаценки);
		
		ЕстьСкидки = Скидки.ЕстьСкидки;
		
		ДанныеОИсправлении = Новый Структура("НомерИсправляемогоДокумента, ДатаИсправляемогоДокумента");
		ЗаполнитьЗначенияСвойств(ДанныеОИсправлении, ДанныеПечати);
		ИсправительныйДокумент = ЗначениеЗаполнено(ДанныеОИсправлении.НомерИсправляемогоДокумента) 
								И ЗначениеЗаполнено(ДанныеОИсправлении.ДатаИсправляемогоДокумента);
		
		НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДанныеПечати.Номер);
		Если ИсправительныйДокумент Тогда
			НомерИсправляемогоДокументаНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(
			ДанныеОИсправлении.НомерИсправляемогоДокумента);
		КонецЕсли;
		
		СтруктураДанныхШапки = Новый Структура;
		СтруктураДанныхШапки.Вставить("НомерДокумента", НомерНаПечать);
		СтруктураДанныхШапки.Вставить("ДатаДокумента", Формат(ДанныеПечати.Дата, СтрШаблон("Л=%1;ДЛФ=DD", КодЯзыка)));
		
		ЕстьТоварыНаЗамену = ЗаменяющиеТоварыТЧ.НайтиСтроки(Новый Структура("Отменено, Ссылка", Ложь, ДанныеПечати.Ссылка)).Количество() > 0;
		Если ИсправительныйДокумент Тогда
			
			СтруктураДанныхШапки.Вставить("НомерИсправляемогоДокумента", НомерИсправляемогоДокументаНаПечать);
			СтруктураДанныхШапки.Вставить("ДатаИсправляемогоДокумента", Формат(ДанныеОИсправлении.ДатаИсправляемогоДокумента, СтрШаблон("Л=%1;ДЛФ=DD", КодЯзыка)));
			
			ОбластьЗаголовокДляВывода = ?(ЕстьТоварыНаЗамену, ОбластьЗаголовокЗаменаИсправление, ОбластьЗаголовокВозвратИсправление);
			
		Иначе
			
			ОбластьЗаголовокДляВывода = ?(ЕстьТоварыНаЗамену, ОбластьЗаголовокЗамена, ОбластьЗаголовокВозврат);
			
		КонецЕсли;
		
		ОбластьЗаголовокДляВывода.Параметры.Заполнить(СтруктураДанныхШапки);
		
		ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьЗаголовокДляВывода, ДанныеПечати.Ссылка);
		ТабличныйДокумент.Вывести(ОбластьЗаголовокДляВывода);
		
		// Вывод области поставщика
		СведенияОЮрФизЛице = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата);
		
		Если НЕ ЗначениеЗаполнено(КодЯзыка)
			ИЛИ КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Тогда
			
			ИмяРеквизитаНаименования = "ПолноеНаименование";
			ИмяРеквизитаАдрес = "ЮридическийАдрес";
			
		Иначе
			
			ИмяРеквизитаНаименования = ?(ЗначениеЗаполнено(СведенияОЮрФизЛице.НаименованиеМеждународное), 
											"НаименованиеМеждународное",
											"ПолноеНаименование");
											
			ИмяРеквизитаАдрес = ?(ЗначениеЗаполнено(СведенияОЮрФизЛице.МеждународныйАдрес),
									"МеждународныйАдрес",
									"ЮридическийАдрес");
			
		КонецЕсли;
		
		Реквизиты = СтрШаблон("%1,ИНН,КПП,%2,Телефоны,", ИмяРеквизитаНаименования, ИмяРеквизитаАдрес);
		
		СтруктураДанныхПоставщик = Новый Структура;
		СтруктураДанныхПоставщик.Вставить("ПредставлениеПоставщика", 
			ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОЮрФизЛице, Реквизиты));
		ОбластьПоставщик.Параметры.Заполнить(СтруктураДанныхПоставщик);
		ТабличныйДокумент.Вывести(ОбластьПоставщик);
		
		// Вывод области покупателя
		СведенияОЮрФизЛице = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Контрагент, ДанныеПечати.Дата);
		
		Если НЕ ЗначениеЗаполнено(КодЯзыка)
			ИЛИ КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Тогда
			
			ИмяРеквизитаНаименования = "ПолноеНаименование";
			ИмяРеквизитаАдрес = "ЮридическийАдрес";
			
		Иначе
			
			ИмяРеквизитаНаименования = ?(ЗначениеЗаполнено(СведенияОЮрФизЛице.НаименованиеМеждународное), 
											"НаименованиеМеждународное",
											"ПолноеНаименование");
											
			ИмяРеквизитаАдрес = ?(ЗначениеЗаполнено(СведенияОЮрФизЛице.МеждународныйАдрес),
									"МеждународныйАдрес",
									"ЮридическийАдрес");
			
		КонецЕсли;
		
		Реквизиты = СтрШаблон("%1,ИНН,КПП,%2,Телефоны,", ИмяРеквизитаНаименования, ИмяРеквизитаАдрес);
		
		СтруктураДанныхПокупатель = Новый Структура;
		СтруктураДанныхПокупатель.Вставить("ПредставлениеПокупателя",
			ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОЮрФизЛице, Реквизиты));
		ОбластьПокупатель.Параметры.Заполнить(СтруктураДанныхПокупатель);
		ТабличныйДокумент.Вывести(ОбластьПокупатель);
		
		// Вывод области таблицы возвращаемых товаров
		ПараметрыВывода = Новый Структура;
		ПараметрыВывода.Вставить("ВыводитьКоды", ВыводитьКоды);
		ПараметрыВывода.Вставить("ТолькоКоличество", ДанныеПечати.ВозвратОтКомиссионера);
		ПараметрыВывода.Вставить("УчитыватьНДС", ДанныеПечати.УчитыватьНДС);
		ПараметрыВывода.Вставить("ЦенаВключаетНДС", ДанныеПечати.ЦенаВключаетНДС);
		ПараметрыВывода.Вставить("ВыводитьПодвалНДС", Ложь);
		ПараметрыВывода.Вставить("ЕстьСкидки", Ложь);
		ПараметрыВывода.Вставить("КодЯзыка", КодЯзыка);
		
		ВывестиТаблицуТоваровВТабличныйДокументЗаявкиНаВозврат(
			ТабличныйДокумент,
			Макет,
			ВозвращаемыеТоварыТЧ,
			ИмяКолонкиКодов,
			"ВозвращаемыйТовар",
			ДанныеПечати,
			ПараметрыВывода
		);
		
		// Вывод области таблицы заменяющих товаров
		Если ЕстьТоварыНаЗамену Тогда
			
			ПараметрыВывода = Новый Структура;
			ПараметрыВывода.Вставить("ВыводитьКоды", ВыводитьКоды);
			ПараметрыВывода.Вставить("ТолькоКоличество", Ложь);
			ПараметрыВывода.Вставить("УчитыватьНДС", ДанныеПечати.УчитыватьНДС);
			ПараметрыВывода.Вставить("ЦенаВключаетНДС", ДанныеПечати.ЦенаВключаетНДС);
			ПараметрыВывода.Вставить("ВыводитьПодвалНДС", Истина);
			ПараметрыВывода.Вставить("ЕстьСкидки", НЕ ДанныеПечати.ВозвратОтКомиссионера И ЕстьСкидки);
			ПараметрыВывода.Вставить("Скидки", Скидки);
			ПараметрыВывода.Вставить("КодЯзыка", КодЯзыка);
			
			ВывестиТаблицуТоваровВТабличныйДокументЗаявкиНаВозврат(
				ТабличныйДокумент,
				Макет,
				ЗаменяющиеТоварыТЧ,
				ИмяКолонкиКодов,
				"ЗаменяющийТовар",
				ДанныеПечати,
				ПараметрыВывода
			);
			
		КонецЕсли;
		
		// Вывод дополнительной информации
		Если ЗначениеЗаполнено(ДанныеПечати.ДополнительнаяИнформация) Тогда
			ОбластьДополнительнаяИнформация.Параметры.Заполнить(ДанныеПечати);
			ТабличныйДокумент.Вывести(ОбластьДополнительнаяИнформация);
		КонецЕсли;
		
		// Вывод подвала заказа
		СтруктураДанныхМенеджер = Новый Структура;
		СтруктураДанныхМенеджер.Вставить("Менеджер", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.Менеджер, ДанныеПечати.Дата));
		ОбластьПодвалЗаказа.Параметры.Заполнить(СтруктураДанныхМенеджер);
		ТабличныйДокумент.Вывести(ОбластьПодвалЗаказа);
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(
			ТабличныйДокумент,
			НомерСтрокиНачало,
			ОбъектыПечати,
			ДанныеПечати.Ссылка);
		
	КонецЦикла;
	
	ТабличныйДокумент.АвтоМасштаб = Истина;
	
КонецПроцедуры

Процедура УстановитьПараметр(ОбластьМакета, ИмяПараметра, ЗначениеПараметра)
	ОбластьМакета.Параметры.Заполнить(Новый Структура(ИмяПараметра, ЗначениеПараметра));
КонецПроцедуры

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

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

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

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

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

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

Функция ДобавлятьКомандыПечатиКомплектаДокументов() Экспорт
	Возврат Не ПраваПользователяПовтИсп.ЭтоПартнер();
КонецФункции

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

#Область Комплекты_Печати

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

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

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

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

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

#Область ТекущиеДела

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция ТекстЗапросаЗаказыВРаботе()

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

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

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

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

#Область Назначения

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

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

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

#КонецЕсли

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