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

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

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

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

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

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

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

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

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

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

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

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

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

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

		Возврат КомандаСоздатьНаОсновании;
	КонецЕсли;

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

			КонецЕсли;

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

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

			КонецЕсли;

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

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

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

		КонецЦикла;

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

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

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

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

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

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

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

#КонецЕсли

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