Приходный ордер на товары / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	СтруктураПараметров = ОбщегоНазначенияУТ.ПерваяСтрокаРезультатаЗапросаВСтруктуру(Результат);
	ОбщегоНазначенияУТ.УстановитьПараметрыЗапроса(Запрос, СтруктураПараметров);

	ТипыОжидаемоеПоступление = Метаданные.ОпределяемыеТипы.ОжидаемоеПоступление.Тип.Типы();
	Запрос.УстановитьПараметр("ТипыОжидаемоеПоступление", ТипыОжидаемоеПоступление);

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

Процедура ПолучитьДанныеДокумента(Запрос, ДокументСсылка)

	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();

	Если ДокументСсылка = Неопределено Тогда
		Возврат;
	КонецЕсли;

	СписокЗапросов = Новый Массив;

	ТекстЗапросаДанныеДокументаШапка(СписокЗапросов);
	ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов);

	ТекстЗапроса = СтрСоединить(СписокЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());

	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
	Запрос.Выполнить();

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

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

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

	СписокЗапросов.Добавить(ТекстЗапросаТаблицаТовары);

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

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

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

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

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

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

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

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

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

Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)

	Если ДокументОбъект <> Неопределено
		И ДокументОбъект.Статус <> Перечисления.СтатусыПриходныхОрдеров.Принят Тогда
		Возврат;
	КонецЕсли;

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

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

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

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

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

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

	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	Запрос.УстановитьПараметр("КолонкаКодов", ИмяКолонкиКодов);
	Если ИспользуетсяМаркируемаяПродукция Тогда
		ОпределениеМаркируемаяПродукция = ПриходныйОрдерНаТоварыЛокализация.ОпределениеПризнакаМаркируемаяПродукцияТекстаЗапроса("ПриходныйОрдерНаТоварыТовары.Номенклатура");
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОпределениеПризнакаМаркируемаяПродукция", ОпределениеМаркируемаяПродукция);
	Иначе
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОпределениеПризнакаМаркируемаяПродукция", "ЛОЖЬ");
	КонецЕсли; 
	
	МассивРезультатов = Запрос.ВыполнитьПакет();
	
	РезультатЗапроса = МассивРезультатов[0]; // РезультатЗапроса
	ВыборкаПоДокументам = РезультатЗапроса.Выбрать();
	
	РезультатЗапроса = МассивРезультатов[2]; // РезультатЗапроса
	ВыборкаПоТабличнымЧастям = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	РезультатЗапроса   = МассивРезультатов[3]; // РезультатЗапроса
	ВыборкаПоМаркам    = РезультатЗапроса.Выбрать();

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

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

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

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

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

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

Функция ДанныеДляПечатиЦенников(МассивДокументов) Экспорт

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

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

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

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

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

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

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

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

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

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

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

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

	Возврат Новый ТаблицаЗначений;
	
КонецФункции

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

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

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

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

#Область ОбновлениеИнформационнойБазы

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

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

// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт

	Обработчик = Обработчики.Добавить();
	Обработчик.Процедура = "Документы.ПриходныйОрдерНаТовары.ОбработатьДанныеДляПереходаНаНовуюВерсию";
	Обработчик.Версия = "11.5.25.7";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор = Новый УникальныйИдентификатор("a07d2ef3-6091-4ea1-9e4e-8a145862fc1f");
	Обработчик.Многопоточный = Истина;
	Обработчик.ПроцедураЗаполненияДанныхОбновления = "Документы.ПриходныйОрдерНаТовары.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
	Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
	Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Некритичный;
	СписокОписаний = Новый Массив;
	СписокОписаний.Добавить(НСтр("ru = 'Обновление документов ""Приходный ордер на товары"":'"));
	//++ НЕ УТ
	СписокОписаний.Добавить(НСтр("ru = '- перезаполняет реквизит ""Отправитель"" в документах, распоряжениями для которых выступает ""Производство без заказа"".'"));
	//-- НЕ УТ
	
	Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
	
	Читаемые = Новый Массив;
	Читаемые.Добавить(Метаданные.Документы.ПриходныйОрдерНаТовары.ПолноеИмя());
	//++ НЕ УТ
	Читаемые.Добавить(Метаданные.Документы.ПроизводствоБезЗаказа.ПолноеИмя());
	//-- НЕ УТ
	Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
	
	Изменяемые = Новый Массив;
	Изменяемые.Добавить(Метаданные.Документы.ПриходныйОрдерНаТовары.ПолноеИмя());
	Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
	
	Блокируемые = Новый Массив;
	Блокируемые.Добавить(Метаданные.Документы.ПриходныйОрдерНаТовары.ПолноеИмя());
	Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");

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

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

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

	Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
	
КонецПроцедуры

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

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

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

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