Оприходование излишков отгруженных товаров / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

#Область СозданиеНаОсновании

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецОбласти
//-- НЕ УТ

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

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

// Параметры:
//	Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение.
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
	
	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)
	|	И ЗначениеРазрешено(Партнер)
	|	И ЗначениеРазрешено(Подразделение)
	|	И ЗначениеРазрешено(ХозяйственнаяОперация)";
	
КонецПроцедуры

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

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

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

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

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

//++ НЕ УТ

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

#Область ЗаполнениеПоРаспоряжению

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

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

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

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

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

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

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

	// Добавление количества заказов
	Ключ = ПараметрыЗаполнения.КлючевыеПоля;
	
	Условие = "ПО [Количество]"; // @query-part
	НакладныеСервер.РаспределитьКоличество(ТаблицаЗаказы, Товары, "КоличествоВЗаказе", Ключ, Условие, Истина);
	
	// Добавление отдельными строками нераспределенного количества заказов
	НакладныеСервер.ДополнитьТаблицу(ТаблицаЗаказы, Товары, "КоличествоВЗаказе");
	
КонецПроцедуры

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

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

#КонецЕсли

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

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

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Если Данные.ХозяйственнаяОперация =  Перечисления.ХозяйственныеОперации.ОприходованиеИзлишковТоваровВПользуКомитента Тогда
		ШаблонИмениДокумента = НСтр("ru = 'Оприходование излишков товаров у комиссионера %1 от %2'");
	ИначеЕсли Данные.ХозяйственнаяОперация =  Перечисления.ХозяйственныеОперации.ОприходованиеИзлишковТоваровВПользуПоклажедателя Тогда
		ШаблонИмениДокумента = НСтр("ru = 'Оприходование излишков товаров на хранении с правом продажи %1 от %2'");
	Иначе
		ШаблонИмениДокумента = НСтр("ru = 'Оприходование излишков товаров, отгруженных клиенту %1 от %2'");
	КонецЕсли;
	
	Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонИмениДокумента,
																			Данные.Номер,
																			Данные.Дата);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// см. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт

	Обработчик = Обработчики.Добавить();
	Обработчик.Процедура = "Документы.ОприходованиеИзлишковОтгруженныхТоваров.ОбработатьДанныеДляПереходаНаНовуюВерсию";
	Обработчик.Версия = "11.5.20.26";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Некритичный;
	Обработчик.Идентификатор = Новый УникальныйИдентификатор("e743ae02-3408-4c69-9768-922e0efb24ac");
	Обработчик.Многопоточный = Истина;
	Обработчик.ПроцедураЗаполненияДанныхОбновления = "Документы.ОприходованиеИзлишковОтгруженныхТоваров.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
	Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
	
	СписокОписаний = Новый Массив;
	СписокОписаний.Добавить(НСтр("ru = 'Обновление документов ""Оприходование излишков отгруженных товаров"":'"));
	СписокОписаний.Добавить(НСтр("ru = '- замена аналитики с перечисления ""Типы налогов"" на справочник ""Виды налогов и взносов"".';"));
	
	Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
	
	Читаемые = Новый Массив;
	Читаемые.Добавить(Метаданные.Документы.ОприходованиеИзлишковОтгруженныхТоваров.ПолноеИмя());
	Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
	
	Изменяемые = Новый Массив;
	Изменяемые.Добавить(Метаданные.Документы.ОприходованиеИзлишковОтгруженныхТоваров.ПолноеИмя());
	Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
	
	Блокируемые = Новый Массив;
	Блокируемые.Добавить(Метаданные.Документы.ОприходованиеИзлишковОтгруженныхТоваров.ПолноеИмя());
	Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");

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

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

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

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

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

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

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

#КонецЕсли

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