Kivals
|
|
« Ответ #49 : 23-02-2010 11:27 » |
|
Конфигурация -> Отчеты -> ТеоретическийБалансПодсолнечника -> ФормаОтчета Процедура КнопкаСформировать1Нажатие(Элемент) и Процедура КнопкаСформировать5Нажатие(Элемент)
по этим двум процедурам у меня проблемы ((((
Сначал рассказываю идею. Ты пишешь текст запроса в таком виде (псевдокод): ТекстЗапроса=" |ВЫБРАТЬ | (Выражение, например: КОНЕЦПЕРИОДА(ТаблицаЗапроса.Период, НЕДЕЛЯ)) КАК Группировка1, | (Выражение, например: ТаблицаЗапроса.Регистратор) Группировка2, | СУММА(ТаблицаЗапроса.ПолеСуммы) КАК СуммаПоляСуммы, | ..., | СУММА(ТаблицаЗапроса.ПолеКво) КАК СуммаПоляКво |ИЗ | НазваниеТаблицыВКонфигураторе КАК ТаблицаЗапроса |СГРУППИРОВАТЬ ПО | (Выражение аналогичное Группировка 1), | (Выражение аналогичное Группировка 2) |ИТОГИ | СУММА(СуммаПоляСуммы), | ..., | СУММА(СуммаПоляКво) |ПО | Группировка1, | Группировка2 |"; Потом обход по результатам запроса выполняется так: Результат=Запрос.Выполнить(); Выборка1=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка1.Следующий() Цикл // Здесь работаем с итогами по Группировке 1 // Здесь что-то делаем ДО детализации по группировке 2 Выборка2=Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // !!! Внимание: выборка 2 - это выборка из выборки 1 Пока Выборка2.Следующий() Цикл // Здесь работаем с итогами по Группировке 2 КонецЦикла; // Здесь что-то делаем ПОСЛЕ детализации по группировке 2 КонецЦикла; Заметь: чем больше полей в блоке запроса ИТОГИ...ПО... (т.е. чем больше группировок итогов) - тем больше вложенных циклов у тебя будет Вот собственно и все. В итоге КнопкаСформировать1Нажатие() получилась вот такая (почитай в синтакс помощнике про ЗаполнитьЗначенияСвойств()): Процедура КнопкаСформировать1Нажатие(Элемент) // Вставить содержимое обработчика. Запрос = Новый запрос; Запрос.Текст = "ВЫБРАТЬ | ТеоретическийБалансПодсолнечника.Регистратор КАК Регистратор, | КОНЕЦПЕРИОДА(ТеоретическийБалансПодсолнечника.Период, НЕДЕЛЯ) КАК КонецНедели, | СУММА(ТеоретическийБалансПодсолнечника.z) КАК z, | СУММА(ТеоретическийБалансПодсолнечника.z1) КАК z1, | СУММА(ТеоретическийБалансПодсолнечника.z2) КАК z2, | СУММА(ТеоретическийБалансПодсолнечника.z3) КАК z3, | СУММА(ТеоретическийБалансПодсолнечника.z4) КАК z4, | СУММА(ТеоретическийБалансПодсолнечника.z8) КАК z8, | СУММА(ТеоретическийБалансПодсолнечника.z9) КАК z9, | СУММА(ТеоретическийБалансПодсолнечника.z10) КАК z10, | СУММА(ТеоретическийБалансПодсолнечника.z11) КАК z11, | СУММА(ТеоретическийБалансПодсолнечника.z12) КАК z12, | СУММА(ТеоретическийБалансПодсолнечника.z13) КАК z13, | СУММА(ТеоретическийБалансПодсолнечника.z14) КАК z14, | СУММА(ТеоретическийБалансПодсолнечника.z15) КАК z15, | СУММА(ТеоретическийБалансПодсолнечника.z16) КАК z16, | СУММА(ТеоретическийБалансПодсолнечника.z17) КАК z17, | СУММА(ТеоретическийБалансПодсолнечника.z18) КАК z18, | СУММА(ТеоретическийБалансПодсолнечника.z19) КАК z19, | СУММА(ТеоретическийБалансПодсолнечника.x) КАК x, | СУММА(ТеоретическийБалансПодсолнечника.x1) КАК x1, | СУММА(ТеоретическийБалансПодсолнечника.x2) КАК x2, | СУММА(ТеоретическийБалансПодсолнечника.x3) КАК x3, | СУММА(ТеоретическийБалансПодсолнечника.x4) КАК x4, | СУММА(ТеоретическийБалансПодсолнечника.x8) КАК x8, | СУММА(ТеоретическийБалансПодсолнечника.x9) КАК x9, | СУММА(ТеоретическийБалансПодсолнечника.x10) КАК x10, | СУММА(ТеоретическийБалансПодсолнечника.x11) КАК x11, | СУММА(ТеоретическийБалансПодсолнечника.x12) КАК x12, | СУММА(ТеоретическийБалансПодсолнечника.x13) КАК x13, | СУММА(ТеоретическийБалансПодсолнечника.x14) КАК x14, | СУММА(ТеоретическийБалансПодсолнечника.x15) КАК x15, | СУММА(ТеоретическийБалансПодсолнечника.x16) КАК x16, | СУММА(ТеоретическийБалансПодсолнечника.x17) КАК x17, | СУММА(ТеоретическийБалансПодсолнечника.x18) КАК x18, | СУММА(ТеоретическийБалансПодсолнечника.x19) КАК x19, | СУММА(ТеоретическийБалансПодсолнечника.c) КАК c, | СУММА(ТеоретическийБалансПодсолнечника.c2) КАК c2, | СУММА(ТеоретическийБалансПодсолнечника.c4) КАК c4, | СУММА(ТеоретическийБалансПодсолнечника.c5) КАК c5, | СУММА(ТеоретическийБалансПодсолнечника.c6) КАК c6, | СУММА(ТеоретическийБалансПодсолнечника.c7) КАК c7, | СУММА(ТеоретическийБалансПодсолнечника.c9) КАК c9, | СУММА(ТеоретическийБалансПодсолнечника.c10) КАК c10, | СУММА(ТеоретическийБалансПодсолнечника.c11) КАК c11, | СУММА(ТеоретическийБалансПодсолнечника.c12) КАК c12, | СУММА(ТеоретическийБалансПодсолнечника.c13) КАК c13, | СУММА(ТеоретическийБалансПодсолнечника.c14) КАК c14, | СУММА(ТеоретическийБалансПодсолнечника.c15) КАК c15, | СУММА(ТеоретическийБалансПодсолнечника.c16) КАК c16, | СУММА(ТеоретическийБалансПодсолнечника.c17) КАК c17, | СУММА(ТеоретическийБалансПодсолнечника.c18) КАК c18, | СУММА(ТеоретическийБалансПодсолнечника.c19) КАК c19, | СУММА(ТеоретическийБалансПодсолнечника.c20) КАК c20, | СУММА(ТеоретическийБалансПодсолнечника.c21) КАК c21, | СУММА(ТеоретическийБалансПодсолнечника.c22) КАК c22, | СУММА(ТеоретическийБалансПодсолнечника.c23) КАК c23, | СУММА(ТеоретическийБалансПодсолнечника.c24) КАК c24, | СУММА(ТеоретическийБалансПодсолнечника.c25) КАК c25, | СУММА(ТеоретическийБалансПодсолнечника.c26) КАК c26, | СУММА(ТеоретическийБалансПодсолнечника.c27) КАК c27, | СУММА(ТеоретическийБалансПодсолнечника.c28) КАК c28, | СУММА(ТеоретическийБалансПодсолнечника.c29) КАК c29, | СУММА(ТеоретическийБалансПодсолнечника.c30) КАК c30, | СУММА(ТеоретическийБалансПодсолнечника.c31) КАК c31, | СУММА(ТеоретическийБалансПодсолнечника.c32) КАК c32, | СУММА(ТеоретическийБалансПодсолнечника.c33) КАК c33, | СУММА(ТеоретическийБалансПодсолнечника.c34) КАК c34, | СУММА(ТеоретическийБалансПодсолнечника.c35) КАК c35, | СУММА(ТеоретическийБалансПодсолнечника.k) КАК k, | СУММА(ТеоретическийБалансПодсолнечника.k2) КАК k2, | СУММА(ТеоретическийБалансПодсолнечника.k3) КАК k3, | СУММА(ТеоретическийБалансПодсолнечника.k4) КАК k4, | СУММА(ТеоретическийБалансПодсолнечника.k5) КАК k5 |ИЗ | РегистрНакопления.ТеоретическийБалансПодсолнечника КАК ТеоретическийБалансПодсолнечника |ГДЕ | ТеоретическийБалансПодсолнечника.Период МЕЖДУ &НачалоДня И &КонецДня | |СГРУППИРОВАТЬ ПО | ТеоретическийБалансПодсолнечника.Регистратор, | КОНЕЦПЕРИОДА(ТеоретическийБалансПодсолнечника.Период, НЕДЕЛЯ) | |УПОРЯДОЧИТЬ ПО | Регистратор |ИТОГИ | СУММА(z), | СУММА(z1), | СУММА(z2), | СУММА(z3), | СУММА(z4), | СУММА(z8), | СУММА(z9), | СУММА(z10), | СУММА(z11), | СУММА(z12), | СУММА(z13), | СУММА(z14), | СУММА(z15), | СУММА(z16), | СУММА(z17), | СУММА(z18), | СУММА(z19), | СУММА(x), | СУММА(x1), | СУММА(x2), | СУММА(x3), | СУММА(x4), | СУММА(x8), | СУММА(x9), | СУММА(x10), | СУММА(x11), | СУММА(x12), | СУММА(x13), | СУММА(x14), | СУММА(x15), | СУММА(x16), | СУММА(x17), | СУММА(x18), | СУММА(x19), | СУММА(c), | СУММА(c2), | СУММА(c4), | СУММА(c5), | СУММА(c6), | СУММА(c7), | СУММА(c9), | СУММА(c10), | СУММА(c11), | СУММА(c12), | СУММА(c13), | СУММА(c14), | СУММА(c15), | СУММА(c16), | СУММА(c17), | СУММА(c18), | СУММА(c19), | СУММА(c20), | СУММА(c21), | СУММА(c22), | СУММА(c23), | СУММА(c24), | СУММА(c25), | СУММА(c26), | СУММА(c27), | СУММА(c28), | СУММА(c29), | СУММА(c30), | СУММА(c31), | СУММА(c32), | СУММА(c33), | СУММА(c34), | СУММА(c35), | СУММА(k), | СУММА(k2), | СУММА(k3), | СУММА(k4), | СУММА(k5) |ПО | КонецНедели, | Регистратор |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("НачалоДня", НачалоДня(НачПериода)); Запрос.УстановитьПараметр("КонецДня", КонецДня(КонПериода)); темп = Новый ТабличныйДокумент; ТабДок = ПолучитьМакет("Макет"); ОбластьВведение = ТабДок.ПолучитьОбласть("Введение"); Темп.Вывести(ОбластьВведение); Результат = Запрос.Выполнить(); ВыборкаПериод = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПериод.Следующий() Цикл ВыборкаРегистратор = ВыборкаПериод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаРегистратор.Следующий() Цикл Если ВыборкаРегистратор=Неопределено Тогда Продолжить; КонецЕсли; ОбластьРегистратор = ТабДок.ПолучитьОбласть("Регистратор"); ОбластьРегистратор.Параметры.Дата=ВыборкаРегистратор.Регистратор.Дата; ЗаполнитьЗначенияСвойств(ОбластьРегистратор.Параметры, ВыборкаРегистратор, "z,z1,z2,z3,z4,z8,z9,z10,z11,z12,z13,z14,z15,z16,z17,z18,z19,"+ "x,x1,x2,x3,x4,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,"+ "c,c2,c4,c5,c6,c7,c9,c11,c12,c13,c14,c15,c16,c17,c19,c20,c21,"+ "c22,c23,c24,c25,c26,c27,c28,c29,c30,c31,c32,c33,c34,c35"+ ""); Темп.Вывести(ОбластьРегистратор); КонецЦикла; ОбластьПериод = ТабДок.ПолучитьОбласть("Период"); ОбластьПериод.Параметры.Дата1=ВыборкаПериод.Регистратор; ЗаполнитьЗначенияСвойств(ОбластьПериод.Параметры, ВыборкаПериод, "k,k2,k3,k4,k5"); ОбластьПериод.Параметры.k1=//ВыборкаПериод.k1; ((ВыборкаПериод.z2) + (ВыборкаПериод.x2)) / (ВыборкаПериод.k); ОбластьПериод.Параметры.k6=//ВыборкаПериод.k6; ((ВыборкаПериод.z4) + (ВыборкаПериод.x4)) / (ВыборкаПериод.k); //ОбластьПериод.Параметры.k7=ВыборкаПериод.k7; //ОбластьПериод.Параметры.k8=ВыборкаПериод.k8; //ОбластьПериод.Параметры.k9=ВыборкаПериод.k9; //ОбластьПериод.Параметры.k10=ВыборкаПериод.k10; //ОбластьПериод.Параметры.k11=ВыборкаПериод.k11; //ОбластьПериод.Параметры.k12=ВыборкаПериод.k12; //ОбластьПериод.Параметры.k13=ВыборкаПериод.k13; //ОбластьПериод.Параметры.k14=ВыборкаПериод.k14; //ОбластьПериод.Параметры.k15=ВыборкаПериод.k15; //ОбластьПериод.Параметры.k16=ВыборкаПериод.k16; //ОбластьПериод.Параметры.k17=ВыборкаПериод.k17; //ОбластьПериод.Параметры.k18=ВыборкаПериод.k18; //ОбластьПериод.Параметры.k19=ВыборкаПериод.k19; //ОбластьПериод.Параметры.k20=ВыборкаПериод.k20; //ОбластьПериод.Параметры.k21=ВыборкаПериод.k21; //ОбластьПериод.Параметры.k22=ВыборкаПериод.k22; //ОбластьПериод.Параметры.k23=ВыборкаПериод.k23; //ОбластьПериод.Параметры.k24=ВыборкаПериод.k24; //ОбластьПериод.Параметры.k25=ВыборкаПериод.k25; //ОбластьПериод.Параметры.k26=ВыборкаПериод.k26; //ОбластьПериод.Параметры.k27=ВыборкаПериод.k27; Темп.Вывести(ОбластьПериод); КонецЦикла; ТабФорма = Отчеты.ТеоретическийБалансПодсолнечника.ПолучитьФорму("ФормаТаблицы"); ТабФорма.Открыть(); ТабФорма.ЭлементыФормы.Результат.Вывести(Темп); КонецПроцедуры
Мне было лень прописывать все коэффициенты в результате - это сделаешь сам по аналогии с k1 и k6. Аналогично для КнопкаСформировать5Нажатие().
|