V82.ОбщиеМодули.ЗаказыНаПроизводствоИПереработку.ВыполнитьПогашениеПотребностиЗаказаНаПроизводствоПоРаспределению C# (CSharp) Method

ВыполнитьПогашениеПотребностиЗаказаНаПроизводствоПоРаспределению() public method

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