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

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

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

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

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

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

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

	Запрос = Новый Запрос;
	ТекстыЗапроса	= Новый СписокЗначений;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

#Область ПроведениеПоРеглУчету

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

	Возврат ПеремещениеТоваровЛокализация.ТекстОтраженияВРеглУчете();

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

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

	Возврат ПеремещениеТоваровЛокализация.ТекстЗапросаВТОтраженияВРеглУчете();

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

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

//-- НЕ УТ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ
#Область ПодакцизныеТовары

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

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

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

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

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

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

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

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

	Результат = Запрос.Выполнить();

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

	НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(СтруктураПараметров.ВариантПриемкиТоваров);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Процедура ИнициализироватьКлючиАналитикиНоменклатуры(Запрос)

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

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

Функция ТекстЗапросаТаблицаЗаказыНаПеремещение(Запрос, ТекстыЗапроса, Регистры)

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

	Возврат ТекстЗапроса;

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

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

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

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

	ТекущийОбъектМетаданных = Метаданные.Документы.ПеремещениеТоваров;
	
	СкладыСервер.ОформитьПоступлениеТоваровПоДвухходовке(
		Запрос,
		ТекстыЗапроса,
		Регистры,
		ТекстЗапросаДокумента,
		ТекущийОбъектМетаданных,
		"Серии",
		"ТаблицаТовары");
		
КонецПроцедуры

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

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

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

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

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

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

Процедура ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры)

	ИмяРегистра = "ТоварыОрганизацийКПередаче";

	Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
		Возврат;
	КонецЕсли;

	Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
		ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
	КонецЕсли;

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

	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);

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

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

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

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

	ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);

	Если ДокументОбъект = Неопределено
		Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами Тогда

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

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

	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);

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

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

	Возврат ТекстЗапроса;

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

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

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

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

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

Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт

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

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

	Если ДокументОбъект = Неопределено
		Или ДокументОбъект.Статус = Перечисления.СтатусыПеремещенийТоваров.Принято Тогда

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

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

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

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

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

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

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

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

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

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

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

	// Задание на размещение товаров
	КомандаПечати = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати,
																							"ЗаданиеНаРазмещение",
																							8);
	
	ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
														"Статус",
														Перечисления.СтатусыПеремещенийТоваров.Принято,
														ВидСравнения.Равно);
	
	// Задание на отбор товаров
	Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати, "ЗаданиеНаОтбор", 9);

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

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

	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		Для Каждого Шапка Из ИспользованиеСерий.Строки Цикл
			
			НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
			Если Не ПервыйДокумент ИЛИ (ПервыйДокумент И НЕ ПерваяСтрокаОбъектов) Тогда
				ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			КонецЕсли;
			ПервыйДокумент = Ложь;
			
			// Выводим шапку накладной
			Если Шапка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеТоваров Тогда

				ОбластьЗаголовка  = ОбластьЗаголовкаПеремещение;

			Иначе //Шапка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами

				ОбластьЗаголовка = ОбластьЗаголовкаВнутренняяПередача;

			КонецЕсли;

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

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

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

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

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

#Область Организации

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ЗагрузкаДанныхИзФайла

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

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

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

	КонецЦикла;
	
	ПоместитьВоВременноеХранилище(ТаблицаТовары, АдресТаблицыСопоставления);

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

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

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

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

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

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

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

#КонецЕсли

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