V82.ОбщиеМодули.ЗаказыНаПроизводствоИПереработку.ЗаполнитьТабличнуюЧастьПродукцияПоОстаткамЗаказовНаПроизводство C# (CSharp) Method

ЗаполнитьТабличнуюЧастьПродукцияПоОстаткамЗаказовНаПроизводство() public method

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

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

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