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

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

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

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

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

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

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


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

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

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

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

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

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


#Область ТекстыЗапросаРаспоряженияНакладных

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

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

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

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

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

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

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

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

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

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

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

#Область ГруппыЗатрат

// Обновляет перечень групп затрат документа
// 
// Параметры:
// 	Объект - ДокументОбъект.ЗаказПереработчику2_5, Структура - данные объекта
// 	ГруппыЗатрат - ТаблицаЗначений, ДанныеФормыКоллекция - таблица групп затрат
// 	КоличествоГруппЗатрат - Число - реквизит формы, хранящий количество групп затрат
//
Процедура ОбновитьГруппыЗатрат(Объект, ГруппыЗатрат, КоличествоГруппЗатрат) Экспорт

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

// Обновляет представление групп затрат документа
// 
// Параметры:
// 	Объект - ДокументОбъект.ЗаказПереработчику2_5, Структура - данные объекта
// 	ГруппыЗатрат - ТаблицаЗначений
//
Процедура ОбновитьПредставлениеГруппЗатрат(Объект, ГруппыЗатрат) Экспорт
	
	Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
		ТекГруппа.ГруппаЗатрат = ПредставлениеГруппыЗатрат(ТекГруппа, Объект.ГруппировкаЗатрат);
	КонецЦикла;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

		ТекстЗапроса = ТекстЗапросаДляРасчетаСостоянийЗаказов();
		ТекстЗапроса = СтрЗаменить(
						ТекстЗапроса,
						"ОбъектРасчетов В (ВЫБРАТЬ ОбъектРасчетов ИЗ ОбъектыРасчетов)",
						"ОбъектРасчетов = &ОбъектРасчетов");

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

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

	ТекстЗапроса = СтрЗаменить(
					ТекстЗапроса,
					"&НеИспользоватьСтатусыЗаказов",
					?(ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам2_5"), "ЛОЖЬ", "ИСТИНА"));
					
	ТекстЗапроса = СтрЗаменить(
					ТекстЗапроса,
					"&ОтборОбъектРасчетов",
					"ОбъектРасчетов В (ВЫБРАТЬ ОбъектРасчетов ИЗ ОбъектыРасчетов)");
	
	Возврат ТекстЗапроса

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

#КонецЕсли


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

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

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

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

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

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

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

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

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

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

#Область ГруппыЗатрат

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

#Область ТекстыЗапросовПроведения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ГруппыЗатрат

Процедура ОбновитьГруппуЗатрат(ГруппыЗатрат, ОписаниеГруппыЗатрат)
	
	СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", ОписаниеГруппыЗатрат.НомерГруппыЗатрат);
	НайденныеСтроки = ГруппыЗатрат.НайтиСтроки(СтруктураОтбора);
	Если Не НайденныеСтроки.Количество() = 0 Тогда
		ЗаполнитьЗначенияСвойств(НайденныеСтроки[0], ОписаниеГруппыЗатрат);
	КонецЕсли;
	
КонецПроцедуры

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

#КонецЕсли

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