Конфигурация -> Отчеты -> ТеоретическийБалансПодсолнечника -> ФормаОтчета
Процедура КнопкаСформировать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Нажатие().