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