ArkadyKiller
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Ребята помогите сделать итог в отчете 1с7.7, ниже код модуля, и скрин отчета. Код: //***********************************************************************************// //*** ПРИ ОТКРЫТИИ ***// //***********************************************************************************// Процедура ПриОткрытии() НачДата=ТекущаяДата(); //КонДата=ТекущаяДата(); КонецПроцедуры //******************************************* Процедура Сформировать() ДокЗаказ=СоздатьОбъект("Документ.ЗаказПродукцииНовый"); ДокДС0=СоздатьОбъект("Документ.ОтпускПродукцииДС0"); ДокДС2=СоздатьОбъект("Документ.ОтпускПродукцииДС2"); ТЗ=СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Документ","Документ.ЗаказПродукцииНовый"); ТЗ.НоваяКолонка("Номенклатура","Справочник.Номенклатура"); ТЗ.НоваяКолонка("Количество","Число",15,3); ТЗД=СоздатьОбъект("ТаблицаЗначений"); ТЗД.НоваяКолонка("Документ","Документ.ЗаказПродукцииНовый"); ТЗН=СоздатьОбъект("ТаблицаЗначений"); ТЗН.НоваяКолонка("Номенклатура","Справочник.Номенклатура"); ДокЗаказ.ВыбратьДокументы(НачДата,НачДата); Пока ДокЗаказ.ПолучитьДокумент() > 0 Цикл Если (ДокЗаказ.Проведен() <> 1) Тогда Продолжить; КонецЕсли; ДокЗаказ.ВыбратьСтроки(); Пока ДокЗаказ.ПолучитьСтроку()=1 Цикл //Сообщить(" "+ДокЗаказ.Документ.Вид()+"/"+ДокЗаказ.Документ.ПредставлениеВида()); Если ДокЗаказ.Документ.Вид()="ОтпускПродукцииДС2" Тогда ДокДС2.НайтиДокумент(ДокЗаказ.Документ); ДокДС2.ВыбратьСтроки(); Пока ДокДС2.ПолучитьСтроку()=1 Цикл Если ДокДС2.Количество<>0 Тогда ТЗД.НоваяСтрока();ТЗД.Документ =ДокЗаказ.ТекущийДокумент(); ТЗН.НоваяСтрока();ТЗН.Номенклатура=ДокДС2.Продукция; ТЗ.НоваяСтрока(); ТЗ.Документ=ДокЗаказ.ТекущийДокумент(); ТЗ.Номенклатура=ДокДС2.Продукция; ТЗ.Количество=ДокДС2.Количество; КонецЕсли; КонецЦикла; ИначеЕсли ДокЗаказ.Документ.Вид()="ОтпускПродукцииДС0" Тогда ДокДС0.НайтиДокумент(ДокЗаказ.Документ); ДокДС0.ВыбратьСтроки(); Пока ДокДС0.ПолучитьСтроку()=1 Цикл Если ДокДС0.Количество<>0 Тогда ТЗД.НоваяСтрока();ТЗД.Документ =ДокЗаказ.ТекущийДокумент(); ТЗН.НоваяСтрока();ТЗН.Номенклатура=ДокДС0.Продукция; ТЗ.НоваяСтрока(); ТЗ.Документ=ДокЗаказ.ТекущийДокумент(); ТЗ.Номенклатура=ДокДС0.Продукция; ТЗ.Количество=ДокДС0.Количество; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ТЗД.Свернуть("Документ",""); ТЗН.Свернуть("Номенклатура",""); ТЗД.Сортировать("+Документ");ТЗН.Сортировать("+Номенклатура"); ТЗД.ВыбратьСтроки(); Пока ТЗД.ПолучитьСтроку()=1 Цикл ТЗН.ВыбратьСтроки(); Пока ТЗН.ПолучитьСтроку()=1 Цикл ТЗ.НоваяСтрока(); ТЗ.Документ=ТЗД.Документ; ТЗ.Номенклатура=ТЗН.Номенклатура; КонецЦикла; КонецЦикла; КонецЦикла; //Рисуем шапку Таб=Создатьобъект("Таблица"); Если флКороткий=0 Тогда Таб.ИсходнаяТаблица("Таблица70"); Иначе Таб.ИсходнаяТаблица("Таблица100"); КонецЕсли; Таб.ВывестиСекцию("Шапка|Общая"); Если флКороткий=0 Тогда ТЗД.ВыбратьСтроки(); Пока ТЗД.ПолучитьСтроку()=1 Цикл ДопТекст=СокрЛП(" "+ СокрЛП(ТЗД.Документ.НомерДок) +" от "+ТЗД.Документ.ДатаДок)+ "["+СокрЛП(ТЗД.Документ.Комментарий)+"]"; Таб.ПрисоединитьСекцию("Шапка|ДОП"); КонецЦикла; КонецЕсли; Таб.ПрисоединитьСекцию("Шапка|ИТ"); ТЗ.Свернуть("Документ,Номенклатура","Количество"); ТЗ.Сортировать("+Номенклатура,+Документ"); ТЗ.НоваяКолонка("Лоток","Число",15,3); //Выводим таблицу ТЗ.ВыбратьСтроки(); ТекНоменклатура="-=ПУСТО=-";ТекКолВо=0; ТекЛоток=0;ИтТекЛоток=0; Пока ТЗ.ПолучитьСтроку()=1 Цикл Если СокрЛП(ТЗ.Номенклатура.Наименование)<>ТекНоменклатура Тогда Если ТекНоменклатура="-=ПУСТО=-" Тогда ТекНоменклатура=СокрЛП(ТЗ.Номенклатура.Наименование); ТЗ.Лоток=?(ТЗ.Номенклатура.Лоток=0,0,ТЗ.Количество/ТЗ.Номенклатура.Лоток); Таб.ВывестиСекцию("Строка|Общая"); Если флКороткий=0 Тогда Таб.ПрисоединитьСекцию("Строка|ДОП"); КонецЕсли; ТекКолВо=ТекКолВо+ТЗ.Количество; ТекКолВо70=Окр(ТекКолВо/100*70,0,1); ТекЛоток=ТекЛоток+ТЗ.Лоток; ИтТекЛоток=ИтТекЛоток+ТЗ.Лоток; Иначе Таб.ПрисоединитьСекцию("Строка|ИТ"); ТекКолВо=0; ТекЛоток=0; ТекНоменклатура=СокрЛП(ТЗ.Номенклатура.Наименование); ТЗ.Лоток=?(ТЗ.Номенклатура.Лоток=0,0,ТЗ.Количество/ТЗ.Номенклатура.Лоток); Таб.ВывестиСекцию("Строка|Общая"); Если флКороткий=0 Тогда Таб.ПрисоединитьСекцию("Строка|ДОП"); КонецЕсли; ТекКолВо=ТекКолВо+ТЗ.Количество; ТекЛоток=ТекЛоток+ТЗ.Лоток; ТекКолВо70=Окр(ТекКолВо/100*70,0,1); ИтТекЛоток=ИтТекЛоток+ТЗ.Лоток; КонецЕсли; Иначе ТЗ.Лоток=?(ТЗ.Номенклатура.Лоток=0,0,ТЗ.Количество/ТЗ.Номенклатура.Лоток); Если флКороткий=0 Тогда Таб.ПрисоединитьСекцию("Строка|ДОП"); КонецЕсли; ТекКолВо=ТекКолВо+ТЗ.Количество; ТекКолВо70=Окр(ТекКолВо/100*70,0,1); ТекЛоток=ТекЛоток+ТЗ.Лоток; ИтТекЛоток=ИтТекЛоток+ТЗ.Лоток; КонецЕсли; КонецЦикла; Таб.ПрисоединитьСекцию("Строка|ИТ"); //Рисуем подвал Таб.ВывестиСекцию("Подвал|Общая"); Если флКороткий=0 Тогда ТЗД.ВыбратьСтроки(); Пока ТЗД.ПолучитьСтроку()=1 Цикл ЗаказЛоток=0; ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл Если ТЗ.Документ=ТЗД.Документ Тогда; ЗаказЛоток=ЗаказЛоток+ТЗ.Лоток; КонецЕсли; КонецЦикла; Таб.ПрисоединитьСекцию("Подвал|ДОП"); КонецЦикла; КонецЕсли; Таб.ПрисоединитьСекцию("Подвал|ИТ"); Таб.Опции(,,4,2,); Таб.ТолькоПросмотр(1); Таб.Показать(" "); КонецПроцедуры |
|