Отбор (размещение) товаров / Модуль менеджера

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

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

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

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

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

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

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

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

		Возврат КомандаСоздатьНаОсновании;
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

#КонецЕсли
#КонецЕсли

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