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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Назначения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

//-- НЕ УТ

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

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

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

#КонецЕсли


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

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

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

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

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

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

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

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

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

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

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

	|	&ВалютаВзаиморасчетов КАК Валюта,
	|	&СуммаВзаиморасчетов КАК СуммаВВалюте,
	|	0 КАК СуммаБезНДСВВалюте,

	|	&ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
	|	&СуммаВзаиморасчетов КАК СуммаВВалютеВзаиморасчетов,
	|	0 КАК СуммаБезНДСВВалютеВзаиморасчетов,
	|	
	|	&ОбъектРасчетов КАК ИсточникГФУРасчетов,
	|	&ИдентификаторОбъектаРасчетов КАК ИдентификаторФинЗаписи
	|ГДЕ
	|	&ЭтоСписаниеЗаНашСчет
	|";

	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

Процедура УстановитьПараметр(ОбластьМакета, ИмяПараметра, ЗначениеПараметра)
	
	ОбластьМакета.Параметры.Заполнить(Новый Структура(ИмяПараметра, ЗначениеПараметра));
	
КонецПроцедуры

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

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

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

#КонецЕсли

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