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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	#Область ГрафикПлановойОплатыИДатаПлатежа
	
	СтруктураПараметров.ДатаПлатежа                      			= "Объект.ДатаПлатежа";
	
	#КонецОбласти
		
	#Область СостояниеВзаиморасчетов
	
	СтруктураПараметров.ЭлементыФормы.НадписьВалюты        			= "ДекорацияВалюты";
	СтруктураПараметров.ЭлементыФормы.НадписьЭтапы         			= "ДекорацияЭтапыОплаты";
	СтруктураПараметров.НадписьЭтапыОплаты                 			= "Форма.НадписьЭтапыОплаты";
	СтруктураПараметров.ЭлементыФормы.НадписьРасчеты       			= "ДекорацияСостояниеРасчетов";
	
	#КонецОбласти
	
	Возврат СтруктураПараметров;
КонецФункции

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

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

#КонецЕсли

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ВыкупПринятыхНаХранениеТоваровЛокализация.ДобавитьКомандыПечати(КомандыПечати);

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

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

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

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

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

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


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

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

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

Функция ПолноеИмяОбъекта()
	Возврат "Документ.ВыкупПринятыхНаХранениеТоваров";
КонецФункции

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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