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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Возврат Неопределено;
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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