Поступление товаров с хранения / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

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

//-- НЕ УТ


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// Распределим дубли товаров, нераспределенные на первом проходе
	Если ТаблицаНераспределенныхТоваров.Количество() > 0 Тогда

		ОбрабатываемыеСтроки = Новый Массив;
		КешированныеЗначения = Неопределено;

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

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

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

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

	Для Каждого Строка Из Объект.Товары Цикл
		
		//++ НЕ УТ
		Если Не Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5 Тогда
		//-- НЕ УТ
			Если ЗначениеЗаполнено(Строка.Цена) Тогда

				ОбрабатываемыеСтрокиСЦеной.Добавить(Строка);
				Продолжить;

			ИначеЕсли ЗначениеЗаполнено(Объект.ВидЦены) Тогда

				ОбрабатываемыеСтрокиСВидомЦены.Добавить(Строка);
				Продолжить;

			КонецЕсли;
		//++ НЕ УТ
		КонецЕсли;
		//-- НЕ УТ
		
		ОбрабатываемыеСтроки.Добавить(Строка);
		
	КонецЦикла;

	ЗаполнитьЦенуПродажи = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект, Истина);

	КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
	
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
		ОбрабатываемыеСтроки,
		СтруктураДействий,
		Объект.Товары,
		КэшированныеЗначения);

	СтруктураДействий.Вставить("ПересчитатьСумму");

	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
		ОбрабатываемыеСтрокиСЦеной,
		СтруктураДействий,
		Объект.Товары,
		КэшированныеЗначения);

	СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ЗаполнитьЦенуПродажи);

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

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

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

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

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

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

#КонецЕсли

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

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

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

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

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

Процедура ОформитьПоступлениеТоваровПоОдноходовке(Запрос, ТекстыЗапроса, Регистры)

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

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

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

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

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

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

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

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

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

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

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

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

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

	Возврат ОписаниеОпераций;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

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

//-- НЕ УТ

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

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

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

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

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

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

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

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

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

	Возврат ПродажиСервер.ПолучитьУсловияПродаж(Соглашение);

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

//-- НЕ УТ

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

//++ НЕ УТ

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

//-- НЕ УТ

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

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

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

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

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

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

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

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

	Возврат ТекстЗапроса;
	
КонецФункции

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

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

// Возвращает текст соединения между таблицами "Таблица" и "ДанныеУчета"
// 
//  Параметры:
//  ИспользоватьНомерГТД - Булево - 
//
// Возвращаемое значение:
//  Строка - 
//
Функция ТекстСоединения(ИспользоватьНомерГТД = Истина) Экспорт

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

	Возврат ТекстСоединения;

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

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

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

// Возвращает текст запроса распоряжений к оформлению
//
// Возвращаемое значение:
//  Строка - текст запрос
//
Функция ТекстЗапросаРаспоряженияКОформлению() Экспорт

	Возврат РегистрыНакопления.ТоварыКПоступлению.ТекстЗапросаРаспоряженияКОформлению();

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

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

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

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

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

#Область Распоряжение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Возврат Ложь;

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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