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