Передача товаров / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

#Область СозданиеНаОсновании

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

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

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

//++ НЕ УТ

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

//-- НЕ УТ

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

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

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

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

//++ НЕ УТ
#Область ПроводкиРеглУчета

// Функция возвращает текст запроса для отражения документа в регламентированном учете.
//
// Возвращаемое значение:
//	Строка - Текст запроса
//
Функция ТекстОтраженияВРеглУчете() Экспорт
	
	Возврат ПередачаТоваровХранителюЛокализация.ТекстОтраженияВРеглУчете();
	
КонецФункции

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

#КонецОбласти
//-- НЕ УТ

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

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

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

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

#Область Серии

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

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

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

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

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

#Область Доставка

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

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

#Область СостояниеВыполненияДокументов

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

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

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

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

// Возвращает таблицу значений по умолчанию для реквизита "Основание".
//
// Параметры:
//	Объект - ДанныеФормыСтруктура, ДокументОбъект.ПередачаТоваровХранителю - объект документа, по которому необходимо
//																			получить список выбора.
//
// Возвращаемое значение:
//	ТаблицаЗначений - Таблица значений с реквизитами оснований.
//
Функция ТаблицаОснованийДляПечати(Объект) Экспорт
	
	ТаблицаОснований = Новый ТаблицаЗначений;
	ТаблицаОснований.Колонки.Добавить("Основание", Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(300)));
	ТаблицаОснований.Колонки.Добавить("ОснованиеДата", Новый ОписаниеТипов("Дата", , , , ,
																			Новый КвалификаторыДаты(ЧастиДаты.Дата)));
	ТаблицаОснований.Колонки.Добавить("ОснованиеНомер", Новый ОписаниеТипов("Строка", , , ,
																			Новый КвалификаторыСтроки(128)));
	
	СтруктураОснования = СтруктураОснования(Объект, Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов);
	
	Если ЗначениеЗаполнено(СтруктураОснования.Основание) Тогда
		
		ДобавленнаяСтрока = ТаблицаОснований.Добавить();
		ЗаполнитьЗначенияСвойств(ДобавленнаяСтрока, СтруктураОснования);
		
		ДобавленнаяСтрока.Основание = СтруктураОснования.Основание + ", " + НСтр("ru='передача на хранение'");
		
		Если ЗначениеЗаполнено(СтруктураОснования.ОснованиеДата)
			И ЗначениеЗаполнено(СтруктураОснования.ОснованиеНомер) Тогда
			
			ТекстРасширенный = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 № %2 от %3'"),
																						СтруктураОснования.Основание,
																						СтруктураОснования.ОснованиеНомер,
																						Формат(СтруктураОснования.ОснованиеДата, "ДЛФ=DD"));
			
			ТекстРасширенный = ТекстРасширенный + ", " + НСтр("ru='передача на хранение'");
			
			ДобавленнаяСтрока = ТаблицаОснований.Добавить();
			ЗаполнитьЗначенияСвойств(ДобавленнаяСтрока, СтруктураОснования);
			
			ДобавленнаяСтрока.Основание = ТекстРасширенный;
			
		КонецЕсли;
		
	КонецЕсли;
	
	СтруктураОснования = СтруктураОснования(Объект, Перечисления.ПорядокРасчетов.ПоЗаказам);
	
	Если ЗначениеЗаполнено(СтруктураОснования.Основание) Тогда
		ДобавленнаяСтрока = ТаблицаОснований.Добавить();
		ЗаполнитьЗначенияСвойств(ДобавленнаяСтрока, СтруктураОснования);
		ДобавленнаяСтрока.Основание = СтруктураОснования.Основание + ", " + НСтр("ru='передача на хранение'");
	КонецЕсли;
	
	Если ТаблицаОснований.Количество() = 0 Тогда
		ДобавленнаяСтрока = ТаблицаОснований.Добавить();
		ДобавленнаяСтрока.Основание = НСтр("ru='Передача на хранение'");
	КонецЕсли;
	
	Возврат ТаблицаОснований;
	
КонецФункции

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

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

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

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

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

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

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

	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
		ОбрабатываемыеСтроки,
		СтруктураДействий,
		Товары,
		Неопределено);

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

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

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

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

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

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

#КонецЕсли

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область УнифицированныеМетодыПоХозяйственнымОперациям

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

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

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

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

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

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

#Область Округление

//++ НЕ УТ

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

//-- НЕ УТ

// Пересчитывает количество единиц
//
// Параметры:
//  Объект - ДанныеФормыСтруктура - 
//
Процедура ПересчитатьКоличествоЕдиниц(Объект) Экспорт
	
	КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
	
	СтруктураДействий = Новый Структура;
	ДобавитьДействиеПересчитатьКоличествоЕдиниц(СтруктураДействий);
	
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
	
КонецПроцедуры

//++ НЕ УТ

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

//-- НЕ УТ

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

// Возвращает параметры перерасчета клиента единиц
//
// Возвращаемое значение:
//  Неопределено - 
//
Функция ПараметрыПересчетаКоличестваЕдиниц() Экспорт
	
	Возврат Неопределено;
	
КонецФункции

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

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

#Область ТекстыЗапросов

#Область ТекстыЗапросовЗаполненияСпискаРаспоряжений

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

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

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

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

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

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

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

#Область ДокументЗаказ

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

// Возвращает менеджер документа заказ клиента
//
// Возвращаемое значение:
//  ДокументМенеджер.ЗаказКлиента - 
//
Функция МенеджерЗаказа() Экспорт
	
	Возврат Документы.ЗаказКлиента;
	
КонецФункции

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

// Возвращает типа для заказа клиента
// 
// Возвращаемое значение:
//  Тип - 
//
Функция ТипЗаказа() Экспорт
	
	Возврат Тип("ДокументСсылка.ЗаказКлиента");
	
КонецФункции

// Возвращает синоним заказа.
//
// Возвращаемое значение:
//  Строка - синоним заказа.
//
Функция СинонимЗаказа() Экспорт
	
	Возврат НСтр("ru='Заказ клиента'");
	
КонецФункции

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

#Область АктОРасхождениях

// Возвращает тип основания акта о расхождении
//
// Возвращаемое значение:
//  ПеречислениеСсылка.ТипыОснованияАктаОРасхождении
//
Функция ТипОснованияАкта() Экспорт
	
	Возврат Перечисления.ТипыОснованияАктаОРасхождении.ПередачаТоваровХранителю;
	
КонецФункции

// Возвращает признак оформления документа возврата через документ акта о расхождении
//
// Возвращаемое значение:
//  Булево - 
//
Функция ОформитьВозвратАкта() Экспорт
	
	Возврат Истина;
	
КонецФункции

// Возвращает постфикс имени акта о расхождении
//
// Возвращаемое значение:
//  Строка - 
//
Функция ПостфиксИмениАкта() Экспорт
	
	Возврат НСтр("ru = 'после передачи товаров хранителю'");
	
КонецФункции

// Возвращает заголовок формы акта о расхождении при создании
//
// Возвращаемое значение:
//  Строка - 
//
Функция ЗаголовокФормыСозданияАкта() Экспорт
	
	Возврат НСтр("ru = 'Акт о расхождениях после передачи товаров хранителю (создание)'");
	
КонецФункции

// Возвращает заголовок формы акта о расхождении
//
// Возвращаемое значение:
//  Строка - 
//
Функция ЗаголовокФормыАкта() Экспорт
	
	Возврат НСтр("ru = 'Акт о расхождениях после передачи товаров хранителю'");
	
КонецФункции

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

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

// Возвращает подсказку договора акта о расхождении
//
// Возвращаемое значение:
//  Строка - 
//
Функция ПодсказкаДоговораАкта() Экспорт
	
	Возврат НСтр("ru = 'Договор, в рамках которого оформлена передача'");
	
КонецФункции

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

#Область ХозяйственныеОперации

// Возвращает хозяйственную операцию документа.
//
// Возвращаемое значение:
//  ПеречислениеСсылка.ХозяйственныеОперации - 
// 
Функция ХозяйственнаяОперация() Экспорт
	
	Возврат Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи;
	
КонецФункции

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

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

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

#Область ФункциональныеОпции

// Возвращает признак применяемости соглашений с клиентами
//
// Возвращаемое значение:
//  Булево - 
//
Функция СоглашенияСКлиентамиПрименимы() Экспорт
	
	Возврат Истина;
	
КонецФункции

// Возвращает признак использование соглашений с клиентами
//
// Возвращаемое значение:
//  Булево -
//
Функция ИспользоватьСоглашенияСКлиентами() Экспорт
	
	Возврат ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");

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

// Возвращает признак использование расширенных возможностей заказа клиента
//
// Возвращаемое значение:
//  Булево -
//
Функция ИспользоватьРасширенныеВозможностиЗаказаКлиента() Экспорт
	
	Возврат ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
	
КонецФункции

// Возвращает признак использование заказов клиентов
//
// Возвращаемое значение:
//  Булево -
//
Функция ИспользоватьЗаказыКлиентов() Экспорт

	ИспользоватьЗаказыКлиентов = ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыКлиентов")
								 Или ПолучитьФункциональнуюОпцию("ИспользоватьЗаявкиНаВозвратТоваровОтКлиентов");

	Возврат ИспользоватьЗаказыКлиентов;

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

// Возвращает признак использование реализации по нескольким заказов.
//
// Возвращаемое значение:
//  Булево -
//
Функция ИспользоватьРеализациюПоНесколькимЗаказам() Экспорт

	Возврат ПолучитьФункциональнуюОпцию("ИспользоватьРеализациюПоНесколькимЗаказам");

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

// Возвращает признак реализации сверх заказа.
// 
// Возвращаемое значение:
// 	Булево
//
Функция РеализацияСверхЗаказа() Экспорт
	
	Возврат ПраваПользователяПовтИсп.РеализацияСверхЗаказа();
	
КонецФункции

// Возвращает признак отклонения от условий продаж.
// 
// Возвращаемое значение:
// 	Булево
//
Функция ОтклонениеОтУсловийПродаж() Экспорт
	
	Возврат ПраваПользователяПовтИсп.ОтклонениеОтУсловийПродаж();
	
КонецФункции

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

#Область ФункциональныеОпцииВТекстахЗапросов

// Изменяет в тексте запроса текст параметра использование расширенных возможностей заказа клиента.
// Должен отработать синхронно унифицированному методу ИспользоватьРасширенныеВозможностиЗаказаКлиента.
//
// Параметры:
//  ТекстЗапроса     - Строка - текст запроса.
//  ИмяТаблицы       - Строка - имя таблицы в запросе.
//  Параметр         - Строка - параметр в запросе.
//  ИмяТаблицыТовары - Строка - имя таблицы товаров в запросе.
//
Процедура ПодставитьТекстИспользоватьРасширенныеВозможностиЗаказаКлиента(
		ТекстЗапроса, ИмяТаблицы, Параметр = "&ИспользоватьРасширенныеВозможностиЗаказаКлиента", ИмяТаблицыТовары = "", ИмяРеквизитаЗаказКлиента = "ЗаказКлиента") Экспорт
	
	//++ НЕ УТ
	ХозяйственнаяОперацияДокумента = Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5;
	ХозяйственнаяОперацияДоговора  = ПереработкаНаСтороне.ХозяйственнаяОперацияДоговора();
	
	ИмяОперацииДокумента = ОбщегоНазначения.ИмяЗначенияПеречисления(ХозяйственнаяОперацияДокумента);
	ИмяОперацииДоговора  = ОбщегоНазначения.ИмяЗначенияПеречисления(ХозяйственнаяОперацияДоговора);
		
	НовыйТекст = "(%1.ХозяйственнаяОперация В (
				  |					ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.%2),
				  |					ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.%3))
				  |ИЛИ %4)";
				  
	НовыйТекст = СтрШаблон(НовыйТекст, ИмяТаблицы, ИмяОперацииДокумента, ИмяОперацииДоговора, Параметр);
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Параметр, НовыйТекст);
	//-- НЕ УТ
	
	Если Не ИмяТаблицыТовары = "" Тогда
		НовыйТекст = "НЕ ЕСТЬNULL(%1.%2.ЭтоЗаказКакСчет, НЕ %3)"; //@Query-part
		НовыйТекст = СтрШаблон(НовыйТекст, ИмяТаблицыТовары, ИмяРеквизитаЗаказКлиента, Параметр);
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Параметр, НовыйТекст);
	КонецЕсли;
	
	Возврат;
	
КонецПроцедуры

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

#Область Форма

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

// Устанавливает доступность элемента договор.
//
// Параметры:
//  Форма - ФормаКлиентскогоПриложения -
//  Объект - ДанныеФормыСтруктура -
//  Договор - СправочникСсылка.ДоговорыКонтрагентов, Неопределено -
//
Процедура УстановитьДоступностьДоговора(Форма, Объект, Договор = Неопределено) Экспорт
	
	Элементы = Форма.Элементы;

	ПродажиСервер.УстановитьДоступностьДоговора(
		Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Договор);
	
КонецПроцедуры

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

	Элементы.Партнер.Заголовок            = НСтр("ru = 'Клиент'");
	Элементы.ТоварыЗаказКлиента.Заголовок = НСтр("ru = 'Заказ клиента'");
	
	ПравоНаИзменениеЗаказов = ПравоДоступаЗаказа("Изменение");
	Элементы.ЗакрытьЗаказ.Доступность  = ПравоНаИзменениеЗаказов;
	Элементы.ЗакрытьЗаказы.Доступность = ПравоНаИзменениеЗаказов;
	
	Элементы.Соглашение.Видимость = ИспользоватьСоглашенияСКлиентами();
	Элементы.ТоварыЗаполнитьЦеныПоСоглашению.Видимость = Элементы.Соглашение.Видимость;
	Элементы.ТоварыЗаполнитьЦеныПоДоговору.Видимость   = Ложь;
	
КонецПроцедуры

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


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

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

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

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

	|		КОГДА ЗаказПереработчику.Ссылка ЕСТЬ НЕ NULL
	|			И ЗаказПереработчику.ПередачаПереработчикуПоНазначениюЗаказа
	|			ТОГДА ЗаказПереработчику.НазначениеПередачи
	//-- НЕ УТ
	|		ИНАЧЕ Значение(Справочник.Назначения.ПустаяСсылка)
	|	КОНЕЦ                                КАК Назначение,
	|	ВЫБОР
	|		КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
	|			И ЗаказКлиентаТовары.Обособленно
	|			ТОГДА ЗаказКлиентаТовары.Ссылка.Назначение
	//++ НЕ УТ
	|		КОГДА ЗаказПереработчикуТовары.Ссылка ЕСТЬ НЕ NULL
	|			И ЗаказПереработчикуТовары.Обособленно
	|			ТОГДА ЗаказПереработчикуТовары.Назначение

	//-- НЕ УТ
	|		ИНАЧЕ Значение(Справочник.Назначения.ПустаяСсылка)
	|	КОНЕЦ                                КАК НазначениеОтправителя,
	|	ТоварыКОформлению.Серия              КАК Серия,
	|	ТоварыКОформлению.КОформлению        КАК КОформлению,
	|	ВЫБОР
	|		КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
	|			ТОГДА ЗаказКлиентаТовары.ВидЦены
	//++ НЕ УТ
	|		КОГДА ЗаказПереработчику.Ссылка ЕСТЬ НЕ NULL
	|			ТОГДА ЗаказПереработчику.ВидЦены
	//-- НЕ УТ
	|	КОНЕЦ                                КАК ВидЦены,
	|	ВЫБОР
	|		КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
	|			ТОГДА ЗаказКлиентаТовары.Цена
	//++ НЕ УТ
	|		КОГДА ЗаказПереработчикуТовары.Ссылка ЕСТЬ НЕ NULL
	|			ТОГДА ЗаказПереработчикуТовары.Цена
	//-- НЕ УТ
	|	КОНЕЦ                                КАК Цена,
	|	ТоварыКОформлению.Склад              КАК Склад,
	|	ВЫБОР
	|		КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
	|			ТОГДА ЗаказКлиентаТовары.СрокПоставки
	//++ НЕ УТ
	|		КОГДА ЗаказПереработчикуТовары.Ссылка ЕСТЬ НЕ NULL
	|			ТОГДА ЗаказПереработчикуТовары.СрокПоставки
	//-- НЕ УТ
	|	КОНЕЦ                                КАК СрокПоставки,
	|	0                                    КАК Распределено,
	|	ДублиТоваров.КоличествоДублей        КАК КоличествоДублей
	|ИЗ
	|	ТоварыКОформлению КАК ТоварыКОформлению
	|	
	|	ЛЕВОЕ СОЕДИНЕНИЕ ДублиТоваровКОформлению КАК ДублиТоваров
	|	ПО ТоварыКОформлению.Номенклатура = ДублиТоваров.Номенклатура
	|	И ТоварыКОформлению.Характеристика = ДублиТоваров.Характеристика
	|	И ТоварыКОформлению.Склад = ДублиТоваров.Склад
	|	И ТоварыКОформлению.Серия = ДублиТоваров.Серия
	|	
	|	ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
	|	ПО ЗаказКлиентаТовары.Ссылка = ТоварыКОформлению.Распоряжение
	|	И ЗаказКлиентаТовары.КодСтроки = ТоварыКОформлению.КодСтроки
	|	
	//++ НЕ УТ
	|	ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику2_5 КАК ЗаказПереработчику
	|	ПО ЗаказПереработчику.Ссылка = ТоварыКОформлению.Распоряжение
	|	
	|	ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ЗаказПереработчикуТовары
	|	ПО ЗаказПереработчикуТовары.Ссылка = ТоварыКОформлению.Распоряжение
	|	И ЗаказПереработчикуТовары.КодСтроки = ТоварыКОформлению.КодСтроки
	|	

	//-- НЕ УТ
	|
	|УПОРЯДОЧИТЬ ПО
	|	ТоварыКОформлению.Номенклатура,
	|	ТоварыКОформлению.Характеристика,
	|	ТоварыКОформлению.Склад,
	|	ТоварыКОформлению.Серия,
	|	ВЫБОР
	|		КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
	|			И ЗаказКлиентаТовары.Обособленно
	|			ТОГДА ЗаказКлиентаТовары.Ссылка.Назначение
	//++ НЕ УТ

	|		КОГДА ЗаказПереработчику.Ссылка ЕСТЬ НЕ NULL
	|			И ЗаказПереработчику.ПередачаПереработчикуПоНазначениюЗаказа
	|			ТОГДА ЗаказПереработчику.НазначениеПередачи
	//-- НЕ УТ
	|		ИНАЧЕ Значение(Справочник.Назначения.ПустаяСсылка)
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
	|			ТОГДА ЗаказКлиентаТовары.ДатаОтгрузки
	//++ НЕ УТ
	|		КОГДА ЗаказПереработчикуТовары.Ссылка ЕСТЬ НЕ NULL
	|			ТОГДА ЗаказПереработчикуТовары.ДатаОтгрузки

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

		ОбрабатываемыеСтроки = Новый Массив();

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

		ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
			ОбрабатываемыеСтроки,
			СтруктураДействий,
			Объект.Товары,
			Неопределено);

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

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

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

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

#Область ОбщиеМетодыПоХозяйственнымОперациям

#Область ОбработчикиДействий

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

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

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

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

#Область Форма

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

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

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

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

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

#КонецЕсли

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