V82.ОбщиеМодули.ПроцедурыКонтроляОстатков.ТоварыВРезервеНаСкладахКонтрольСвободныхОстатков_Заказ_КорректировкаЗаказа_Резервирование C# (CSharp) Method

ТоварыВРезервеНаСкладахКонтрольСвободныхОстатков_Заказ_КорректировкаЗаказа_Резервирование() public method

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