конф: самописная, 1С 7.7 Сложная таблица, как это лучше организовать
04.12.2009
17:26
#14
"нет, сейчас вообще убрал формат
т.е. написал что-то типа
знач = запрос.месяц;
где знач выводится непосредственно на таблицу и получил что-то типа: декабрь 08, январь 09, ...,
т.е. запрос.месяц - это не дата, а уже форматированная часть даты."
т.е. написал что-то типа
знач = запрос.месяц;
где знач выводится непосредственно на таблицу и получил что-то типа: декабрь 08, январь 09, ...,
т.е. запрос.месяц - это не дата, а уже форматированная часть даты."
04.12.2009
18:18
#15
"и последний, пока что, вопрос:
если есть:
|Группировка Лого упорядочить по количествосумма;
то имеем сортировку по возрастанию.
Как слелать ее по убыванию?"
если есть:
|Группировка Лого упорядочить по количествосумма;
то имеем сортировку по возрастанию.
Как слелать ее по убыванию?"
07.12.2009
18:18
#16
и еще один вопрос: вроде "без итогов" нигде не стоит, но итоги никак получить не могу. В чем может быть дело?
10.12.2009
17:09
#17
"теперь надо немного переиграть, т.е. нужны итоги, как по столбцам, так и по строкам. Ну по строкам понятно, тут можно счетчик сделать, а вот по столбцам видимо придется делать промежуточную таблицу значений и в ней список значений, т.е. что-то типа:
Таб = СоздатьОбъект("Таблица");
Запрос.Выполнить (ТекстЗапроса);
тз = создатьобъект ("ТаблицаЗначений");
тз.новаяколонка ("Логотип");
тз.новаяколонка ("СЗ");
пока запрос.группировка ("Лого") = 1
цикл
тз.новаястрока ();
тз.логотип = запрос.лого;
тз.сз = создатьобъект ("СписокЗначений");
пока запрос.группировка ("Месяц") = 1
цикл
тз.сз.добавитьзначение (запрос.количествосумма,запрос.месяц);
конеццикла;
конеццикла;
запрос.группировка ("Лого");
тз.новаястрока (1);
тз.логотип = """";
тз.сз = создатьобъект ("Списокзначений");
пока запрос.группировка ("Месяц") = 1
цикл
тз.сз.добавитьзначение (запрос.месяц,запрос.месяц);
конеццикла;
запрос.вначаловыборки();
тз.выбратьстроки ();
тз.получитьстроку ();
таб.вывестисекцию ("Шапка|лого");
счетчик = 1;
пока счетчик<тз.сз.размерсписка () цикл
месяц1 = тз.сз.получитьзначение (счетчик,вр);
счетчик = счетчик+1;
таб.присоединитьсекцию ("Шапка|мес");
конеццикла;
пока тз.получитьстроку () = 1
цикл
логотип = тз.логотип;
таб.вывестисекцию ("строка|лого");
счетчик = 1;
пока счетчик<тз.сз.размерсписка ()
цикл
счетчик = счетчик+1;
колво = тз.сз.получитьзначение(счетчик,вр);
таб.присоединитьсекцию ("Строка|мес");
конеццикла;
конеццикла;
таб.вывестисекцию ("Подвал|лого");
тз.получитьстроку ();
пока счетчик >1
цикл
итогмесяцколво = тз.итог("Логотип");
таб.присоединитьсекцию ("Подвал|мес");
счетчик = счетчик-1;
конеццикла;
Таб.Показать("Печать", """");
Но как теперь правильно вычислить и вывести итоги по столбцам?
"
Таб = СоздатьОбъект("Таблица");
Запрос.Выполнить (ТекстЗапроса);
тз = создатьобъект ("ТаблицаЗначений");
тз.новаяколонка ("Логотип");
тз.новаяколонка ("СЗ");
пока запрос.группировка ("Лого") = 1
цикл
тз.новаястрока ();
тз.логотип = запрос.лого;
тз.сз = создатьобъект ("СписокЗначений");
пока запрос.группировка ("Месяц") = 1
цикл
тз.сз.добавитьзначение (запрос.количествосумма,запрос.месяц);
конеццикла;
конеццикла;
запрос.группировка ("Лого");
тз.новаястрока (1);
тз.логотип = """";
тз.сз = создатьобъект ("Списокзначений");
пока запрос.группировка ("Месяц") = 1
цикл
тз.сз.добавитьзначение (запрос.месяц,запрос.месяц);
конеццикла;
запрос.вначаловыборки();
тз.выбратьстроки ();
тз.получитьстроку ();
таб.вывестисекцию ("Шапка|лого");
счетчик = 1;
пока счетчик<тз.сз.размерсписка () цикл
месяц1 = тз.сз.получитьзначение (счетчик,вр);
счетчик = счетчик+1;
таб.присоединитьсекцию ("Шапка|мес");
конеццикла;
пока тз.получитьстроку () = 1
цикл
логотип = тз.логотип;
таб.вывестисекцию ("строка|лого");
счетчик = 1;
пока счетчик<тз.сз.размерсписка ()
цикл
счетчик = счетчик+1;
колво = тз.сз.получитьзначение(счетчик,вр);
таб.присоединитьсекцию ("Строка|мес");
конеццикла;
конеццикла;
таб.вывестисекцию ("Подвал|лого");
тз.получитьстроку ();
пока счетчик >1
цикл
итогмесяцколво = тз.итог("Логотип");
таб.присоединитьсекцию ("Подвал|мес");
счетчик = счетчик-1;
конеццикла;
Таб.Показать("Печать", """");
Но как теперь правильно вычислить и вывести итоги по столбцам?
"
11.12.2009
11:48
#18
"1. делать надо ДВА ЗАПРОСа !!!
2. регистр ВыпускПродукции оборотный?
вот тебе таблица, без "нижних" итогов
для получения их нужно будет "замомнить" все Лого и делать запрос по ним, с группировкой по месяцам
Запрос = создатьобъект ("Запрос");
текстзапроса =
"//{{запрос (лого1)
|Период с ДатаНач по ДатаКонц;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
//|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц все вошедшиевзапрос;
|Условие (ПустоеЗначение(Лого)=0);
//|Без Итогов;
|"//}}Запрос
;
Запрос.Выполнить (ТекстЗапроса);
Таб = СоздатьОбъект("Таблица");
//шапку по месяцам - выводим сам )))
СЗ = СоздатьОбъект("СписокЗначений");
Пока запрос.группировка(1) = 1 цикл
//запомним "Лого"
Лого = Запрос.Лого;
СЗ.ДобавитьЗначение(Лого);
Пока запрос.группировка(2) = 1 цикл
//выводим табличную часть
КонецЦикла;
//выводим сумму по строке
КонецЦикла;
//выводим подвал по месяцам
Запрос = создатьобъект ("Запрос");
текстзапроса =
"//{{запрос (лого1)
|Период с ДатаНач по ДатаКонц;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Месяц все вошедшиевзапрос;
|Условие (ПустоеЗначение(Лого)=0);
|Условие (Лого в СЗ);
|"//}}Запрос
;
Запрос.Выполнить (ТекстЗапроса);
Пока запрос.группировка(1) = 1 цикл
//а теперь заполняем итоги по месяцам
КонецЦикла;"
2. регистр ВыпускПродукции оборотный?
вот тебе таблица, без "нижних" итогов
для получения их нужно будет "замомнить" все Лого и делать запрос по ним, с группировкой по месяцам
Запрос = создатьобъект ("Запрос");
текстзапроса =
"//{{запрос (лого1)
|Период с ДатаНач по ДатаКонц;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
//|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц все вошедшиевзапрос;
|Условие (ПустоеЗначение(Лого)=0);
//|Без Итогов;
|"//}}Запрос
;
Запрос.Выполнить (ТекстЗапроса);
Таб = СоздатьОбъект("Таблица");
//шапку по месяцам - выводим сам )))
СЗ = СоздатьОбъект("СписокЗначений");
Пока запрос.группировка(1) = 1 цикл
//запомним "Лого"
Лого = Запрос.Лого;
СЗ.ДобавитьЗначение(Лого);
Пока запрос.группировка(2) = 1 цикл
//выводим табличную часть
КонецЦикла;
//выводим сумму по строке
КонецЦикла;
//выводим подвал по месяцам
Запрос = создатьобъект ("Запрос");
текстзапроса =
"//{{запрос (лого1)
|Период с ДатаНач по ДатаКонц;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Месяц все вошедшиевзапрос;
|Условие (ПустоеЗначение(Лого)=0);
|Условие (Лого в СЗ);
|"//}}Запрос
;
Запрос.Выполнить (ТекстЗапроса);
Пока запрос.группировка(1) = 1 цикл
//а теперь заполняем итоги по месяцам
КонецЦикла;"