конф: самописная, 1С 7.7 Сложная таблица, как это лучше организовать
30.11.2009
18:13
#1
"есть:
1. 1с 7.7
2. нужно сделать отчет типа:
январь февраль декабрь всего
лого1
лого2
лого3
всего
3. пишем в цикле 12 запросов типа:
"//{{запрос (лого1)
|Период с ДатаМесНач по ДатаМесКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Условие (ПустоеЗначение(Лого)=0);
где датамеснач - начало месяца, например 01.01.09, датамесконц - 31.01.09
создал одну секцию горизонтальную и одну вертикальную, но что-то дальше не соображу куда двигаться, присоединитьсекцию не совсем работает, т.к. движение по запросу идет не слева направо, а сверху вниз."
1. 1с 7.7
2. нужно сделать отчет типа:
январь февраль декабрь всего
лого1
лого2
лого3
всего
3. пишем в цикле 12 запросов типа:
"//{{запрос (лого1)
|Период с ДатаМесНач по ДатаМесКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Условие (ПустоеЗначение(Лого)=0);
где датамеснач - начало месяца, например 01.01.09, датамесконц - 31.01.09
создал одну секцию горизонтальную и одну вертикальную, но что-то дальше не соображу куда двигаться, присоединитьсекцию не совсем работает, т.к. движение по запросу идет не слева направо, а сверху вниз."
30.11.2009
18:33
#2
В цикле 12 запросов это круто!!!
Есть передопределенная группировка:
Группировка Месяц, дальше собири в ТЗ, как надо.
Есть передопределенная группировка:
Группировка Месяц, дальше собири в ТЗ, как надо.
01.12.2009
17:06
#4
"А все-таки продскажите еще, пожалуйста, как можно сделать таблицу не только "вниз", но и "вправо":
"//{{запрос (лого1)
|Период с ДатаМесНач по ДатаМесКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц;
|Условие (ПустоеЗначение(Лого)=0);
и выгружаем, но тогда идет что-то типа
январь
лого1
лого2
лого3
февраль
лого2
лого3
лого5
март
лого1
лого3
....
а как можно сделать, чтобы:
январь февраль март
лого1 10 30
лого2 15 10
лого3 18 14
ну и т.д.
Подскажите хоть в какую сторону копать?"
"//{{запрос (лого1)
|Период с ДатаМесНач по ДатаМесКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц;
|Условие (ПустоеЗначение(Лого)=0);
и выгружаем, но тогда идет что-то типа
январь
лого1
лого2
лого3
февраль
лого2
лого3
лого5
март
лого1
лого3
....
а как можно сделать, чтобы:
январь февраль март
лого1 10 30
лого2 15 10
лого3 18 14
ну и т.д.
Подскажите хоть в какую сторону копать?"
01.12.2009
17:32
#5
"Если закрыть глаза на "и выгружаем", так как я не понял зачем нужно куда то что то выгружать, то будет так:
"//{{запрос (лого1)
|Период с ДатаМесНач по ДатаМесКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц Все ВошедшиеВЗапрос;
|Условие (ПустоеЗначение(Лого)=0);
и потом
Пока Запрос.Группировка("Лого")=1 Цикл
Таб.ВывестиСекцию("СекцияЛого");
Пока Запрос.Группировка("Месяц")=1 Цикл
Таб.ПрисоединитьСекцию("СекцияМесяца");
КонецЦикла;
КонецЦикла;
В результате и получим:
лого1 10 30
лого2 15 10
лого3 18 14
"
"//{{запрос (лого1)
|Период с ДатаМесНач по ДатаМесКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц Все ВошедшиеВЗапрос;
|Условие (ПустоеЗначение(Лого)=0);
и потом
Пока Запрос.Группировка("Лого")=1 Цикл
Таб.ВывестиСекцию("СекцияЛого");
Пока Запрос.Группировка("Месяц")=1 Цикл
Таб.ПрисоединитьСекцию("СекцияМесяца");
КонецЦикла;
КонецЦикла;
В результате и получим:
лого1 10 30
лого2 15 10
лого3 18 14
"
02.12.2009
15:52
#6
""выгружать" - имел ввиду запрос.выгрузить (ТЗ), впрочем это на самом деле не подходящий вариант.
По поводу Вашего предложения:
есть "таблица"
секции\секции
Лого Мес
Заголовок
Оснчасть <логотип> <колво>
Подвал
что в остальных частях не имеет сейчас значения.
Пишу след. код:
Запрос = создатьобъект ("Запрос");
текстзапроса =
"//{{запрос (лого1)
|Период с ДатаНач по ДатаКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц все вошедшиевзапрос;
|Условие (ПустоеЗначение(Лого)=0);
|"//}}Запрос
;
Запрос.Выполнить (ТекстЗапроса);
Таб = СоздатьОбъект("Таблица");
таб.вывестисекцию ("Заголовок");
Пока Запрос.Группировка("Лого")=1 Цикл
логотип = запрос.лого;
Таб.ВывестиСекцию("Лого");
Пока Запрос.Группировка("Месяц")=1 Цикл
колво = запрос.количествосумма;
Таб.присоединитьсекцию("Мес");
КонецЦикла;
КонецЦикла;
Но ничего не выходит.
Вообще как я не химичу с оснчасть, лого и мес в лучшем случае выходит что-то типа:
лого1 30
лого2
лого3 14
т.е. выводятся все логотипы, даже которые не были в последнем месяце, но присоединяется только одна секция со значениями за последний месяц."
По поводу Вашего предложения:
есть "таблица"
секции\секции
Лого Мес
Заголовок
Оснчасть <логотип> <колво>
Подвал
что в остальных частях не имеет сейчас значения.
Пишу след. код:
Запрос = создатьобъект ("Запрос");
текстзапроса =
"//{{запрос (лого1)
|Период с ДатаНач по ДатаКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц все вошедшиевзапрос;
|Условие (ПустоеЗначение(Лого)=0);
|"//}}Запрос
;
Запрос.Выполнить (ТекстЗапроса);
Таб = СоздатьОбъект("Таблица");
таб.вывестисекцию ("Заголовок");
Пока Запрос.Группировка("Лого")=1 Цикл
логотип = запрос.лого;
Таб.ВывестиСекцию("Лого");
Пока Запрос.Группировка("Месяц")=1 Цикл
колво = запрос.количествосумма;
Таб.присоединитьсекцию("Мес");
КонецЦикла;
КонецЦикла;
Но ничего не выходит.
Вообще как я не химичу с оснчасть, лого и мес в лучшем случае выходит что-то типа:
лого1 30
лого2
лого3 14
т.е. выводятся все логотипы, даже которые не были в последнем месяце, но присоединяется только одна секция со значениями за последний месяц."
02.12.2009
18:05
#8
"все, кажись нащупал свет в конце тунеля, ближе всего будет так:
Запрос = создатьобъект ("Запрос");
текстзапроса =
"//{{запрос (лого1)
|Период с ДатаНач по ДатаКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц все вошедшиевзапрос;
|Условие (ПустоеЗначение(Лого)=0);
|"//}}Запрос
;
Запрос.Выполнить (ТекстЗапроса);
Таб = СоздатьОбъект("Таблица");
таб.вывестисекцию ("Заголовок");
Пока Запрос.Группировка("Лого")=1 Цикл
логотип = запрос.лого;
Таб.ПрисоединитьСекцию("Лого|Оснчасть");
Пока Запрос.Группировка("Месяц")=1 Цикл
колво = запрос.количествосумма;
Таб.Присоединитьсекцию("Мес|Оснчасть");
КонецЦикла;
таб.вывести ();
КонецЦикла;
"
Запрос = создатьобъект ("Запрос");
текстзапроса =
"//{{запрос (лого1)
|Период с ДатаНач по ДатаКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц все вошедшиевзапрос;
|Условие (ПустоеЗначение(Лого)=0);
|"//}}Запрос
;
Запрос.Выполнить (ТекстЗапроса);
Таб = СоздатьОбъект("Таблица");
таб.вывестисекцию ("Заголовок");
Пока Запрос.Группировка("Лого")=1 Цикл
логотип = запрос.лого;
Таб.ПрисоединитьСекцию("Лого|Оснчасть");
Пока Запрос.Группировка("Месяц")=1 Цикл
колво = запрос.количествосумма;
Таб.Присоединитьсекцию("Мес|Оснчасть");
КонецЦикла;
таб.вывести ();
КонецЦикла;
"
02.12.2009
18:15
#9
"Запрос = создатьобъект ("Запрос");
текстзапроса =
"//{{запрос (лого1)
|Период с ДатаНач по ДатаКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц все вошедшиевзапрос;
|Условие (ПустоеЗначение(Лого)=0);
|Без Итогов;
|"//}}Запрос
;
в итоге будет одна группировка!"
текстзапроса =
"//{{запрос (лого1)
|Период с ДатаНач по ДатаКонц;
|Обрабатывать НеПомеченныеНаУдаление;
|Лого = Регистр.ВыпускПродукции.Продукция.Логотип;
|ТекущийДокумент = Регистр.ВыпускПродукции.ТекущийДокумент;
|Количество = Регистр.ВыпускПродукции.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Лого;
|Группировка Месяц все вошедшиевзапрос;
|Условие (ПустоеЗначение(Лого)=0);
|Без Итогов;
|"//}}Запрос
;
в итоге будет одна группировка!"
04.12.2009
16:19
#10
"Да, еще такой вопрос: а можно обратиться (получить) это самое "системное" значение "Месяц" из запроса:
т.е. теперь надо
ноябрь декабрь декабрь январь февраль март
лого1
лого2
лого3
... ну понятно.
Т.е. пишу что-то типа:
Запрос.Выполнить (ТекстЗапроса);
Таб = СоздатьОбъект("Таблица");
таб.вывестисекцию ("Заголовок");
таб.вывестисекцию ("шапка|лого");
счетчик = 0;
запрос.группировка ("Лого");
пока запрос.группировка ("месяц") = 1 цикл
таб.присоединитьсекцию ("шапка|мес");
месяц1 = формат (запрос.месяц, "ММММ");
счетчик = счетчик +1;
конеццикла;
запрос.вначаловыборки();
Пока Запрос.Группировка("Лого")=1 Цикл
логотип = запрос.лого;
Таб.вывестисекцию("строка|лого");
Пока Запрос.Группировка("Месяц")=1 Цикл
колво = запрос.количествосумма;
Таб.присоединитьсекцию("строка|Мес");
КонецЦикла;
КонецЦикла;
Ну нас тут интересует эта часть:
запрос.группировка ("Лого");
пока запрос.группировка ("месяц") = 1 цикл
таб.присоединитьсекцию ("шапка|мес");
месяц1 = формат (запрос.месяц, "ММММ");
счетчик = счетчик +1;
конеццикла;
Но при любом описании формата, хоть ММММ, хоть ДДММГГ, хоть еще что-то выходит пустой месяц, т.е. если ММММ - то ничего нет, если ДДММГГ - то " . . "."
т.е. теперь надо
ноябрь декабрь декабрь январь февраль март
лого1
лого2
лого3
... ну понятно.
Т.е. пишу что-то типа:
Запрос.Выполнить (ТекстЗапроса);
Таб = СоздатьОбъект("Таблица");
таб.вывестисекцию ("Заголовок");
таб.вывестисекцию ("шапка|лого");
счетчик = 0;
запрос.группировка ("Лого");
пока запрос.группировка ("месяц") = 1 цикл
таб.присоединитьсекцию ("шапка|мес");
месяц1 = формат (запрос.месяц, "ММММ");
счетчик = счетчик +1;
конеццикла;
запрос.вначаловыборки();
Пока Запрос.Группировка("Лого")=1 Цикл
логотип = запрос.лого;
Таб.вывестисекцию("строка|лого");
Пока Запрос.Группировка("Месяц")=1 Цикл
колво = запрос.количествосумма;
Таб.присоединитьсекцию("строка|Мес");
КонецЦикла;
КонецЦикла;
Ну нас тут интересует эта часть:
запрос.группировка ("Лого");
пока запрос.группировка ("месяц") = 1 цикл
таб.присоединитьсекцию ("шапка|мес");
месяц1 = формат (запрос.месяц, "ММММ");
счетчик = счетчик +1;
конеццикла;
Но при любом описании формата, хоть ММММ, хоть ДДММГГ, хоть еще что-то выходит пустой месяц, т.е. если ММММ - то ничего нет, если ДДММГГ - то " . . "."
Читают тему
(гостей: 1)