Применение серии номенклатуры / Модуль объекта

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

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

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

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

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

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

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

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

	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборы, ДанныеРасшифровки, Истина);

	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
КонецПроцедуры

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

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

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

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

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

	//++ НЕ УТ

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

Процедура ЗаполнитьСлужебныеПоля(СтрокиДерева, Идентификатор)

	Для каждого СтрокаДерева Из СтрокиДерева Цикл
		
		СтрокаДерева.ИдентификаторЭлемента = Новый УникальныйИдентификатор;
		СтрокаДерева.ИдентификаторРодителя = Идентификатор;
		ЗаполнитьСлужебныеПоля(СтрокаДерева.Строки, СтрокаДерева.ИдентификаторЭлемента);
	
	КонецЦикла;

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

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

#КонецЕсли

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