Списание недостач товаров / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

//-- НЕ УТ

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

//++ НЕ УТ

#Область НеоперативноеДопроведение

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

	Результаты = ОбщегоНазначенияУТ.ВыполнитьПакетЗапросов(Запрос, ТекстыЗапроса);
	
	Возврат Результаты[Результаты.ВГраница()];
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

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

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

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

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

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

//-- НЕ УТ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция СформироватьПечатнуюФормуАктСписанияТоваров(МассивОбъектов, ОбъектыПечати)

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

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

//++ НЕ УТ

#Область НеоперативноеДопроведение

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

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

	ТекстыЗапроса.Добавить(ТекстЗапроса, "ВтВидыЗапасов");

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

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

//-- НЕ УТ

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

#КонецЕсли

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