Передача сырья переработчику / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ОснованиеДляПечати

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Возврат ПередачаСырьяПереработчикуЛокализация.ТекстОтраженияВРеглУчете();

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

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

	Возврат ПередачаСырьяПереработчикуЛокализация.ТекстЗапросаВТОтраженияВРеглУчете();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	ПередачаСырьяПереработчикуЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры

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

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

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

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

#Область ОснованиеДляПечати

// Возвращает текст основания по данным документа и указанному порядку расчетов
//
// Параметры:
//	Объект - ДанныеФормыСтруктура, ДокументОбъект.ПередачаСырьяПереработчику - Объект документа, по которму необходимо получить текст основания
//	ПоДоговору - Булево - текст оснвоания строится на оснвоании договора, иначе на основании заказа (если неопределно, то в зависимости запоненных реквизитов).
//
// Возвращаемое значение:
// 	Структура - Описание:
// * Основание - Строка - представление
// * ОснованиеДата - Дата - дата
// * ОснованиеНомер - Строка - номер
//
Функция СтруктураОснования(Объект, ПоДоговору = Неопределено)
	
	СтруктураОснование = Новый Структура;
	СтруктураОснование.Вставить("Основание");
	СтруктураОснование.Вставить("ОснованиеНомер");
	СтруктураОснование.Вставить("ОснованиеДата");
	
	Если Не ПоДоговору = Ложь И ЗначениеЗаполнено(Объект.Договор) Тогда
		
		Запрос = Новый Запрос(
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	ДоговорыКонтрагентов.НаименованиеДляПечати КАК Основание,
		|	ДоговорыКонтрагентов.Дата КАК ОснованиеДата,
		|	ДоговорыКонтрагентов.Номер КАК ОснованиеНомер
		|ИЗ
		|	Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
		|ГДЕ
		|	ДоговорыКонтрагентов.Ссылка = &Ссылка");
		Запрос.УстановитьПараметр("Ссылка", Объект.Договор);
		
		Выборка = Запрос.Выполнить().Выбрать();
		
		Если Выборка.Следующий() Тогда
			СтруктураОснование.Основание = СокрЛП(Выборка.Основание);
			СтруктураОснование.ОснованиеДата = Выборка.ОснованиеДата;
			СтруктураОснование.ОснованиеНомер = СокрЛП(Выборка.ОснованиеНомер);
		КонецЕсли;
		
	ИначеЕсли Не ПоДоговору = Истина И Объект.ПередачаПоЗаказам Тогда
		
		МассивЗаказов = Неопределено;
		Если ЗначениеЗаполнено(Объект.ЗаказПереработчику) Тогда
			
			МассивЗаказов = Новый Массив;
			МассивЗаказов.Добавить(Объект.ЗаказПереработчику);
			
		ИначеЕсли Объект.Товары.Количество() <> 0 Тогда
			
			Если ТипЗнч(Объект) = Тип("Структура") Тогда
				МассивЗаказов = Объект.Товары.ВыгрузитьКолонку("ЗаказПереработчику");
			Иначе
				МассивЗаказов = Объект.Товары.Выгрузить(, "ЗаказПереработчику").ВыгрузитьКолонку("ЗаказПереработчику");
			КонецЕсли;
			
		КонецЕсли;
		
		Если МассивЗаказов <> Неопределено Тогда
			
			Запрос = Новый Запрос(
			"ВЫБРАТЬ РАЗРЕШЕННЫЕ
			|	ЗаказыКлиентов.НомерПоДаннымПартнера КАК НомерПоДаннымПартнера,
			|	ЗаказыКлиентов.ДатаПоДаннымПартнера  КАК ДатаПоДаннымПартнера,
			|	ЗаказыКлиентов.Номер                 КАК Номер,
			|	ЗаказыКлиентов.Дата                  КАК Дата,
			|	&СинонимЗаказа                       КАК Синоним
			|ИЗ
			|	Документ.ЗаказПереработчику КАК ЗаказыКлиентов
			|ГДЕ
			|	ЗаказыКлиентов.Ссылка В(&МассивЗаказов)");
			
			Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказов);
			Запрос.УстановитьПараметр("СинонимЗаказа", НСтр("ru='Заказ переработчику (2.4)'"));
			Выборка = Запрос.Выполнить().Выбрать();
			
			ТекстПоЗаказам = "";
			ОдноОснование = Выборка.Количество() = 1;
			Пока Выборка.Следующий() Цикл
				
				Если ЗначениеЗаполнено(Выборка.НомерПоДаннымПартнера) И ЗначениеЗаполнено(Выборка.ДатаПоДаннымПартнера) Тогда
					
					ИнформацияОЗаказе = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
						НСтр("ru = '%1 № %2 от %3'"),                    // Строка с параметрами
						Выборка.Синоним,                                 // 1 параметр
						Выборка.НомерПоДаннымПартнера,                   // 2 параметр
						Формат(Выборка.ДатаПоДаннымПартнера, "ДЛФ=DD")); // 3 параметр
					ДатаПоЗаказам  = Выборка.ДатаПоДаннымПартнера;
					НомерПоЗаказам = Выборка.НомерПоДаннымПартнера;
				Иначе
					
					ИнформацияОЗаказе = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(Выборка, Выборка.Синоним);
					ДатаПоЗаказам  = Выборка.Дата;
					НомерПоЗаказам = Выборка.Номер;
				КонецЕсли;
				
				ТекстПоЗаказам = ТекстПоЗаказам + ", " + ИнформацияОЗаказе;
				
			КонецЦикла;
			
			СтруктураОснование.Основание      = СокрЛП(Сред(ТекстПоЗаказам, 3));
			СтруктураОснование.ОснованиеДата  = ?(ОдноОснование, ДатаПоЗаказам, "");
			СтруктураОснование.ОснованиеНомер = ?(ОдноОснование,ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(НомерПоЗаказам),"");
		КонецЕсли;
		
	КонецЕсли;
	
	Возврат СтруктураОснование; // Возврат значения по умолчанию
	
КонецФункции

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

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

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

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

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

Функция ЕстьДокументыКОформлению(Параметры)
	
	Возврат Обработки.ЖурналДокументовПереработки.ЕстьДокументыКОформлению(
		Параметры, Перечисления.ХозяйственныеОперации.ПередачаПереработчику);
	
КонецФункции

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

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

#Область ОбновлениеИнформационнойБазы

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

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

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

#КонецЕсли

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