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

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

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

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

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

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

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

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

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

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

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

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

#Область Доставка

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


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

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

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

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

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

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


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

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

#Область Заполнение

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

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

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

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

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

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

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

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

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

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

// Возвращает шаблон назначения
// 
// Параметры:
//  Объект - ДокументОбъект.ПриемкаТоваровНаХранение, ДанныеФормыСтруктура - 
// 
// Возвращаемое значение:
//  см. Справочники.Назначения.ШаблонНового
//
Функция ШаблонНазначения(Объект) Экспорт
	
	ШаблонНазначения = Справочники.Назначения.ШаблонНового();
	
	
	Возврат ШаблонНазначения;
	
КонецФункции

//-- НЕ УТКА

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

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

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

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

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

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

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


// Заполняет массив допустимых наименований входящих документов.
//
// Параметры:
//  МассивНаименований	 - Массив - массив наименования входящих документов.
//
Процедура ДополнитьНаименованияВходящихДокументов(МассивНаименований) Экспорт
	
КонецПроцедуры

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

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

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

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

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

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

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

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

#КонецЕсли

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Процедура ОформитьПоступлениеТоваровПоОдноходовке(Запрос, ТекстыЗапроса, Регистры)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// Задание на размещение товаров
	Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати, "ЗаданиеНаРазмещение");

	Если ПраваПользователяПовтИсп.ПечатьЭтикетокИЦенников() Тогда
		// Ценники
		КомандаПечати = КомандыПечати.Добавить();
		КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьЭтикетокИЦенников";
		КомандаПечати.МенеджерПечати = "Обработка.ПечатьЭтикетокИЦенников";
		КомандаПечати.Идентификатор = "Ценники";
		КомандаПечати.Представление = НСтр("ru = 'Ценники'");
		КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;

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

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

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

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

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

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

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

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

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

// Функция помещает необходимые данные в структуру. Структура помещается во временное хранилище.
//
// Возвращаемое значение:
//	Строка - адрес структуры данных во временном хранилище.
//
Функция ДанныеДляПечатиЭтикеток(МассивДокументов) Экспорт

	ДатаЦенообразования = ОбщегоНазначенияУТ.ПолучитьМаксимальнуюДатуДокументов(МассивДокументов);
	ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25(ДатаЦенообразования);

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

// Функция помещает необходимые данные в структуру. Структура помещается во временное хранилище.
//
// Возвращаемое значение:
//	Строка - адрес структуры данных во временном хранилище.
//
Функция ДанныеДляПечатиЦенников(МассивДокументов) Экспорт

	ДатаЦенообразования = ОбщегоНазначенияУТ.ПолучитьМаксимальнуюДатуДокументов(МассивДокументов);
	ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25(ДатаЦенообразования);

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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