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

ЗаполнитьТабличнуюЧастьМатериалыПоОстаткам() public method

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