Сборка товаров / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область СменаСтатуса

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

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

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

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

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

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

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

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

#Область ЗаполнениеПоЗаказу

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

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

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

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

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

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

#Область РаспоряжениеНаОтгрузку

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ВариантыКомплектации

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

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

//++ НЕ УТ
#Область ПодакцизныеТовары

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

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

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

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

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

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

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

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

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

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

	Результат = Запрос.Выполнить();

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

	НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(СтруктураПараметров.ВариантПриемкиТоваров);

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

	РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, СтруктураПараметров);

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

Процедура ПолучитьДанныеДокумента(Запрос, ДокументСсылка)

	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();

	Если ДокументСсылка = Неопределено Тогда
		Возврат;
	КонецЕсли;

	СписокЗапросов = Новый Массив;

	ТекстЗапросаДанныеДокументаШапка(СписокЗапросов);
	ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов);
	ТекстЗапросаДанныеДокументаТаблицаСерии(СписокЗапросов);
	ТекстЗапросаДанныеДокументаТаблицаВидыЗапасовОприходование(СписокЗапросов);
	ТекстЗапросаДанныеДокументаТаблицаВидыЗапасовСписание(СписокЗапросов);

	ТекстЗапроса = СтрСоединить(СписокЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());

	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
	Запрос.Выполнить();

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

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

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

	СписокЗапросов.Добавить(ТекстЗапросаТаблицаТовары);

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

Процедура ТекстЗапросаДанныеДокументаТаблицаСерии(СписокЗапросов)

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

	СписокЗапросов.Добавить(ТекстЗапросаТаблицаСерии);

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

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

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

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

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

Процедура ТекстЗапросаДанныеДокументаТаблицаВидыЗапасовСписание(СписокЗапросов)

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

	СписокЗапросов.Добавить(ТекстЗапросаТаблицаВидыЗапасовСписание);

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

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

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

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

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

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

	Если ЧастиТекстаЗапроса.Количество() = 0 Тогда
		Возврат "";
	КонецЕсли;

	ТекстЗапроса = СтрСоединить(ЧастиТекстаЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());

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

	Возврат ТекстЗапроса;

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

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

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

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

Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)

	ИмяРегистра = "ДвиженияСерийТоваров";

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

	ЧастиТекстаЗапроса = Новый Массив;

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

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

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

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

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

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

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

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

	ТекстЗапроса = СтрСоединить(ЧастиТекстаЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());

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

	Возврат ТекстЗапроса;

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

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

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

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

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

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

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

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

Функция ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры)

	ИмяРегистра = "ТоварыКОформлениюОтчетовКомитенту";

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

	ИнициализироватьВтВидыЗапасов(Запрос);

	Если Не Запрос.Параметры.Свойство("ТоварыОрганизацийИнициализированы") Тогда
		ИнициализироватьТоварыОрганизаций(Запрос);
	КонецЕсли;

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

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

	ЗапросВтВидыЗапасов.ВыполнитьПакет();
	
	Запрос.УстановитьПараметр("ВтВидыЗапасовИнициализирована", Истина);

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

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

	Результат = ЗапросРаспределения.ВыполнитьПакет();
	
	Запрос.УстановитьПараметр("СтоимостьКомплектующихНаКомплектыРаспределена", Истина);
	
КонецПроцедуры

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

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

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

Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
	
	ЧастиТекстаЗапроса = Новый Массив;

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

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

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

	ТекстЗапросаДанныхДокумента = СтрСоединить(ЧастиТекстаЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());

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

Процедура ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
	
	ЧастиТекстаЗапроса = Новый Массив;

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

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

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

	ТекстЗапросаДанныхДокумента = СтрСоединить(ЧастиТекстаЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());

	ОбъектМетаданных	= Метаданные.Документы.СборкаТоваров;
	ИмяТЧСерии			= "Серии";
	
	СкладыСервер.ОформитьОтгрузкуТоваров(Запрос,
										ТекстыЗапроса,
										Регистры,
										ТекстЗапросаДанныхДокумента,
										ОбъектМетаданных,
										ИмяТЧСерии);
	
КонецПроцедуры

Функция РаспределитьСтоимостьКомплектующихНаКомплекты(ТаблицаКомплектов, ТаблицаКомплектующих, Реквизиты)

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

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

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

		Счетчик = 0;
		ЗаписиКомплектующиеБезИдентификатора = Новый Массив();
		ЗаписиКомплектаБезИдентификатора = Новый Массив();
		
		Для Каждого СтрокаВыхода Из ТаблицаКомплектов Цикл

			// Количество выхода надо рассчитать на каждую строку входа.
			Если ВсегоДолейКоличествоВыхода <> 0 Тогда
				КоличествоВыхода = Окр(СтрокаВыхода.Количество / ВсегоДолейКоличествоВыхода, 3, РежимОкругления.Окр15как20);
			Иначе
				КоличествоВыхода = СтрокаВыхода.Количество;
			КонецЕсли;

			СтрокаВыхода.Количество = СтрокаВыхода.Количество - КоличествоВыхода;
			
			ЭтоЗначимыйВыход = РаспределенноеКоличество[Счетчик] <> 0;
			
			Если НЕ ЭтоЗначимыйВыход Тогда
			ИначеЕсли ЗначениеЗаполнено(СтрокаВыхода.ИдентификаторСтроки) Тогда
				ИдентификаторФинЗаписиВыхода = СтрокаВыхода.ИдентификаторСтроки;
			Иначе
				ИдентификаторФинЗаписиВыхода = ИдентификаторФинЗаписиВхода;
			КонецЕсли;

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

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

			Счетчик = Счетчик + 1;

		КонецЦикла;

		ВсегоДолейКоличествоВыхода = ВсегоДолейКоличествоВыхода - 1;

		Для Каждого ЗаписьКомплектующие Из ЗаписиКомплектующиеБезИдентификатора Цикл
			ЗаписьКомплектующие.ИдентификаторФинЗаписи = ИдентификаторФинЗаписиВыхода;
		КонецЦикла;

		Для Каждого ЗаписьКомплект Из ЗаписиКомплектаБезИдентификатора Цикл
			ЗаписьКомплект.ИдентификаторФинЗаписи = ИдентификаторФинЗаписиВыхода;
		КонецЦикла;

	КонецЦикла;

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

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

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

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

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

Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)

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

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

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

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

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

Функция ОписаниеОперацийУчетаСебестоимости(Документ) Экспорт
	
	ОписаниеОпераций = Новый Массив;

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

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

	РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
		ОписаниеОпераций,
		Перечисления.ОперацииУчетаСебестоимости.ВнутреннееПоступление,
		ТекстЗапроса);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

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

	КонецЕсли;
	СборкаТоваровЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры

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

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

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

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

#Область ТекущиеДела

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

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

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

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

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

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

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

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

#Область ЗаполнениеДокумента

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ОтчетСостояниеВыполненияДокумента

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

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

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

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



#Область ВидДеятельностиНДС

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

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

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

#КонецЕсли

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