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/*ФлагЕстьОшибкаРазмещения*/)
{
//Сообщить(ТекстЗаказ, СтатусСообщения.Внимание);
}
}