Заказ переработчику (2.4) / Модуль менеджера

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

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

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

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

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


	//-- Устарело_Производство21
	МеханизмыДокумента.Добавить("РеестрДокументов");
	МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");

	МеханизмыДокумента.Добавить("АдресныйСклад");
	
КонецПроцедуры

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция КолонкиСуммирования(Объект, ИмяТаблицы)
	
	КолонкиСуммирования = "КоличествоУпаковок,Количество,Сумма";
	
	Если ТипЗнч(Объект) = Тип("ДанныеФормыСтруктура") Тогда
		КолонкиСуммирования = КолонкиСуммирования + ",СуммаОтменено" 
							  + ?(ИмяТаблицы = "ВозвратныеОтходы", ",СуммаСНДСОтменено,СуммаНДСОтменено", ""); 	
	КонецЕсли;	
	
	Возврат КолонкиСуммирования;
	
КонецФункции	

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

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

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


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

#Область ВыборСтатейИАналитик

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

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

#Область УчетНДС

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

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

#Область Взаиморасчеты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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


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

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

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

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

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

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

	ТекстОтбора = "ИСТИНА";
	
	Если ЗначениеЗаполнено(Отбор) Тогда
		Для Каждого КлючЗначение Из Отбор Цикл
			
			Ключ = КлючЗначение.Ключ;
			
			Если Ключ = "Ссылка" Тогда
				Ключ = "Таблица.Ссылка";
			КонецЕсли;
			
			ТекстОтбора = 
				ТекстОтбора
				+ " И "
				+ Ключ
				+ " В(&"
				+ КлючЗначение.Значение
				+ ")";
			
		КонецЦикла;
	
	КонецЕсли;
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Отбор", ТекстОтбора);
	
	Возврат ТекстЗапроса;

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

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

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

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

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

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

#Область НаправленияДеятельности

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

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

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

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

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

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

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

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

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

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

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

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

#Область ВременныеТаблицы

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

Функция ТекстЗапросаТаблицаОтмененоПоступление()

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

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

Функция КоэффициентНормативов(ФактическаяПродукция, НормативнаяПродукция, Наибольший = Истина) Экспорт

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

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

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

	// Добавление новых данных
	Для каждого СтрокаЗаказа Из Нормативы Цикл
		СтрокаДокумента = Приемник.Добавить();
		ЗаполнитьЗначенияСвойств(СтрокаДокумента, СтрокаЗаказа);
		Если ПроверитьОкруглениеНормативов И СтрокаЗаказа.КоличествоОкруглено Тогда
			СтрокаДокумента.КоличествоУпаковок = СтрокаДокумента.КоличествоУпаковок * КоэффициентНормативов;
			СтрокаДокумента.Количество = ?(ЕстьКоэффициентУпаковки,
				Окр(СтрокаЗаказа.КоличествоУпаковок * СтрокаЗаказа.КоэффициентУпаковки, 0),
				Окр(СтрокаЗаказа.КоличествоУпаковок * СтрокаЗаказа.ДанныеУпаковки.Числитель / СтрокаЗаказа.ДанныеУпаковки.Знаменатель, 0));
		Иначе
			СтрокаДокумента.Количество = СтрокаЗаказа.Количество * КоэффициентНормативов;
			СтрокаДокумента.КоличествоУпаковок =  ?(ЕстьКоэффициентУпаковки,
				СтрокаДокумента.Количество / СтрокаЗаказа.КоэффициентУпаковки,
				СтрокаДокумента.Количество * СтрокаЗаказа.ДанныеУпаковки.Знаменатель / СтрокаЗаказа.ДанныеУпаковки.Числитель);
		КонецЕсли;
		СтрокаДокумента[ИмяПоляГруппаЗатрат] = НомерГруппыЗатрат;
		Если ДопЗначения <> Неопределено Тогда
			ЗаполнитьЗначенияСвойств(СтрокаДокумента, ДопЗначения);
		КонецЕсли; 
	КонецЦикла;
	
КонецПроцедуры 

Процедура УстановитьУсловноеОформлениеСписка(Список) Экспорт

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.НизкийПриоритетДокумента);

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

Функция ПолноеИмяОбъекта()
	Возврат "Документ.ЗаказПереработчику";
КонецФункции

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

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


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


#Область КорректировкаЗаказа

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

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

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

#Область ФормированиеГиперссылкиВЖурналеДокументыПродажи

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

Функция ИмяФормыРабочееМесто() Экспорт
	
	Возврат "Документ.ЗаказПереработчику.Форма.РабочееМесто";
	
КонецФункции

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

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

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

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

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

#КонецЕсли

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