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