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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Статус

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ПечатьЗаданияНаОтборРазмещениеТоваров

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

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

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

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

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

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

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

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

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

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

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

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

	Реквизиты = Запрос.Выполнить().Выбрать();
	Реквизиты.Следующий();

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

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

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

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

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

Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)

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

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

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

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

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

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

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

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

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

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

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

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

Функция ТекстЗапросаТаблицаЗаказыМатериаловВПроизводство(Запрос, ТекстыЗапроса, Регистры)

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

// Функция получает данные для формирования печатной формы М-11
//
Функция ПолучитьДанныеДляПечатнойФормыМ11(ПараметрыПечати, МассивДокументов) Экспорт
	
	Запрос = ПолучитьЗапросПолученияДанныхДляПечатнойФормыМ11();
	
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
			"Товары.Упаковка",
			"Товары.Номенклатура"));
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
			"Цены.Упаковка",
			"Товары.Номенклатура"));
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаНаименованиеЕдиницыИзмерения",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
			"Наименование",
			"Товары.Упаковка",
			"Товары.Номенклатура"));
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКодЕдиницыИзмерения",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
			"Код",
			"Товары.Упаковка",
			"Товары.Номенклатура"));
	
	Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
	
	РезультатПакетаЗапросов = Запрос.ВыполнитьПакет();
	// Пакет запросов:
	// 		[0] - Временная таблица по табличной части документа
	// 		[1] - Временная таблица по ценам номенклатуры табличной части
	// 		[2] - Временная таблица по курсам валют документов
	// 		[3] - Выборка по шапкам документов
	// 		[4] - Выборка по табличным частям документов.
	
	Возврат Новый Структура(
		"РезультатПоШапке, РезультатПоТабличнойЧасти",
		РезультатПакетаЗапросов[3],
		РезультатПакетаЗапросов[4]);
	
КонецФункции

Функция ПолучитьЗапросПолученияДанныхДляПечатнойФормыМ11()

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

Функция ПечатьПередачаМатериаловВПроизводство(МассивОбъектов, ОбъектыПечати)

	КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
	ДопКолонка = КолонкаКодов.ИмяКолонки;
	ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
	ВыводитьДопКолонку = ЗначениеЗаполнено(ДопКолонка);

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

	РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс");
	СинонимДокумента = Метаданные.Документы.ПередачаМатериаловВПроизводство.Синоним;

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

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

	КонецЦикла;

	Возврат ТабДокумент;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ВидДеятельностиНДС

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

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

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

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

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

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


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

Функция СозданиеНаОснованииПроверкаНаличияОрдеров()

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

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

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

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

#КонецЕсли
//-- Устарело_Производство21

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