Пересортица товаров / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// Акт о пересортице товаров
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "АктПересортицыТоваров";
	КомандаПечати.Представление = НСтр("ru = 'Акт о пересортице товаров'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	
	ПересортицаТоваровЛокализация.ДобавитьКомандыПечати(КомандыПечати);

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

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

	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктПересортицыТоваров") Тогда

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

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

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

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

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

	РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс, НомерИсправляемогоДокумента, ДатаИсправляемогоДокумента");
	СинонимДокумента = НСтр("ru='Акт о пересортице товаров'", ОбщегоНазначения.КодОсновногоЯзыка());

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

	ОбластьНомераШапка              = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
	ОбластьКодовСписаниеШапка       = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодовСписание");
	ОбластьКодовОприходованиеШапка  = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодовОприходование");
	ОбластьТоварСписаниеШапка       = Макет.ПолучитьОбласть("ШапкаТаблицы|ТоварСписание");
	ОбластьТоварОприходованиеШапка  = Макет.ПолучитьОбласть("ШапкаТаблицы|ТоварОприходование");
	ОбластьЕдИзмСписаниеШапка       = Макет.ПолучитьОбласть("ШапкаТаблицы|ЕдиницаИзмеренияСписание");
	ОбластьЕдИзмОприходованиеШапка  = Макет.ПолучитьОбласть("ШапкаТаблицы|ЕдиницаИзмеренияОприходование");
	ОбластьДанныеШапка              = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");

	Если Не ВыводитьДопКолонку Тогда

		Макет.Область("ТоварСписание").ШиринаКолонки = Макет.Область("ТоварСписание").ШиринаКолонки
				+ Макет.Область("КолонкаКодовСписание").ШиринаКолонки;
		Макет.Область("ТоварОприходование").ШиринаКолонки = Макет.Область("ТоварОприходование").ШиринаКолонки
				+ Макет.Область("КолонкаКодовОприходование").ШиринаКолонки;

	КонецЕсли;

	ОбластьНомераСтрока              = Макет.ПолучитьОбласть("Строка|НомерСтроки");
	ОбластьКодовСписаниеСтрока       = Макет.ПолучитьОбласть("Строка|КолонкаКодовСписание");
	ОбластьКодовОприходованиеСтрока  = Макет.ПолучитьОбласть("Строка|КолонкаКодовОприходование");
	ОбластьТоварСписаниеСтрока       = Макет.ПолучитьОбласть("Строка|ТоварСписание");
	ОбластьТоварОприходованиеСтрока  = Макет.ПолучитьОбласть("Строка|ТоварОприходование");
	ОбластьЕдИзмСписаниеСтрока       = Макет.ПолучитьОбласть("Строка|ЕдиницаИзмеренияСписание");
	ОбластьЕдИзмОприходованиеСтрока  = Макет.ПолучитьОбласть("Строка|ЕдиницаИзмеренияОприходование");
	ОбластьДанныхСтрока              = Макет.ПолучитьОбласть("Строка|Данные");

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

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

		// Вывод шапки.
		ТабДокумент.Вывести(ОбластьНомераШапка);

		Если ВыводитьДопКолонку Тогда

			ТабДокумент.Присоединить(ОбластьКодовСписаниеШапка);

		КонецЕсли;
		ТабДокумент.Присоединить(ОбластьТоварСписаниеШапка);
		ТабДокумент.Присоединить(ОбластьЕдИзмСписаниеШапка);
		
		Если ВыводитьДопКолонку Тогда

			ТабДокумент.Присоединить(ОбластьКодовОприходованиеШапка);

		КонецЕсли;
		ТабДокумент.Присоединить(ОбластьТоварОприходованиеШапка);
  		ТабДокумент.Присоединить(ОбластьЕдИзмОприходованиеШапка);

		ТабДокумент.Присоединить(ОбластьДанныеШапка);

		СуммаВсего = 0;
		ВсегоНаименований = 0;

		// Вывод строк.
		ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаДокументы.Ссылка));
		
		ВыборкаПоСтрокам = ВыборкаПоТабличнымЧастям.Выбрать();
		
		Пока ВыборкаПоСтрокам.Следующий() Цикл

			ОбластьНомераСтрока.Параметры.Заполнить(ВыборкаПоСтрокам);
			ТабДокумент.Вывести(ОбластьНомераСтрока);

			Если ВыводитьДопКолонку Тогда

				ОбластьКодовСписаниеСтрока.Параметры.Заполнить(ВыборкаПоСтрокам);
				ТабДокумент.Присоединить(ОбластьКодовСписаниеСтрока);

			КонецЕсли;

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

				ОбластьКодовОприходованиеСтрока.Параметры.Заполнить(ВыборкаПоСтрокам);
				ТабДокумент.Присоединить(ОбластьКодовОприходованиеСтрока);

			КонецЕсли;

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

			// Данные количестве.
			ОбластьДанныхСтрока.Параметры.Заполнить(ВыборкаПоСтрокам);
			
			ТабДокумент.Присоединить(ОбластьДанныхСтрока);

			ВсегоНаименований = ВсегоНаименований + 1;

		КонецЦикла;

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

		ТабДокумент.Вывести(ОбластьСуммаПрописью);

		// Вывод подписей.
		ОбластьПодписи.Параметры.Ответственный = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ВыборкаДокументы.Ответственный, 
			?(ВыборкаДокументы.Исправление, ВыборкаДокументы.ДатаИсправляемогоДокумента, ВыборкаДокументы.Дата));
		ОбластьПодписи.Параметры.Кладовщик = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ВыборкаДокументы.Кладовщик,
			?(ВыборкаДокументы.Исправление, ВыборкаДокументы.ДатаИсправляемогоДокумента, ВыборкаДокументы.Дата));
		ТабДокумент.Вывести(ОбластьПодписи);

		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокументы.Ссылка);

	КонецЦикла;
	
	Если ПривилегированныйРежим() Тогда
		УстановитьПривилегированныйРежим(Ложь);
	КонецЕсли;
	
	Возврат ТабДокумент;
	
КонецФункции

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

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

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

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

#КонецЕсли

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