Итоги запроса с пропуском группировок

1. Altair777 644 13.10.09 10:31 Сейчас в теме
Всем доброго дня.
Помогите, пожалуйста с одной проблемой.
Есть запрос с N количеством группировок. Нужно выдать результаты по последней группировке во все предыдущих :
т.е. имеем, к примеру
1 - Склад
2 - ВидТМЦ
3 - ТМЦ
4 - День

По ТМЦ за День - все нормально, но как получить в разрез Склад за День?
Т.е. мне нужно получить Итого за день по всех предыдущих группировках, а их может быть до 6-7
Что-то я запутался

Результаты выводятся в виде шахматки
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Ёпрст 1063 13.10.09 10:37 Сейчас в теме
3. Altair777 644 13.10.09 10:42 Сейчас в теме
(2) я уже сделал... это из моей тестовой базы. :)
Т.е. это доработка. Напрасно взялся? :cry:
4. Ёпрст 1063 13.10.09 10:53 Сейчас в теме
(3) самое простое - выгрузить запрос в ТЗ и сворачивать + фильтровать... но это нефига не быстро..
5. Altair777 644 13.10.09 10:56 Сейчас в теме
У меня эта мысль тоже была.
Кстати, я ее тебе в личке написал, сначала тебе, а потом тему создал, т.к. ты был офф.
Потому что практически только на тебя надеюсь и уповаю :)
Но при таком подходе еще будут проблемы с группировкой по ТЗ.
А т.к. там сам отчет такой исковерканный с точки зрения здравого смысла...
6. Ёпрст 1063 13.10.09 11:05 Сейчас в теме
(5) Посмотри в сторону Получить() - метод у запроса, лень смотреть как сделано...
7. Altair777 644 13.10.09 11:28 Сейчас в теме
Прямое позиционирование на запись в выборке по конкретным значениям группировок.
т.е. обходить запрос не 1 раз?
8. PeRom 51 13.10.09 12:24 Сейчас в теме
Глумился я как-то над подобной задачкой, только в 8-ке. Получилось в строка море всяких группировок, в столбцах даты. тоже путался немного, но когда всё разложил - всё прозразно: циклы по группировкам вложенные(один обход), из них выход на формирование колонок(обход с отбором)...
9. JohnyDeath 301 13.10.09 12:38 Сейчас в теме
ИндексированнаяТаблица тебе должна помочь
10. Altair777 644 13.10.09 12:48 Сейчас в теме
(9) боюсь что это будет сложно...
Я же тебе писал о степени своей "продвинутости" в 1С++ :oops:
11. Altair777 644 13.10.09 14:33 Сейчас в теме
Ёпрст... прийди!

В смысле, тема ап :)
12. Altair777 644 13.10.09 18:41 Сейчас в теме
в порядке бреда... группировка День - в начало
есть свои плюсы, но и минусы тоже
13. JohnyDeath 301 13.10.09 20:38 Сейчас в теме
Если я тебя правильно понял, то алгоритм будет примерно следующим:
1. Загружаем результат запроса в ИТЗ
2. Индексируем ИТЗ по колонкам "Склад,День"
3. Когда нужны итоги по конкретному складу за конкретный день вызываешь метод ИТЗ "ИтогПоДиапазону"

Выглядеть все должно примерно так:
ИТЗ=СоздатьОбъект("ИндексированнаяТаблица");
ИТЗ.ЗагрузитьЗапрос(Запрос, 1, 0); //если твои данные получаешь стандартным запросом
//ИТЗ.Загрузить(ТЗданных);// или так, если твои данные размещенны в ТЗ

ИмяИндекса="СкладДень";//любая строка
ИТЗ.ДобавитьИндекс("СкладДень","*Склад,*День");

Ключ=СоздатьОбъект("СписокЗначений");
//тут у тебя идет выборка результатов/вывод в таблицу
...
      //тут понадобилось подсчитать "Количество" по ТекСклад на ТекДату
      Ключ.УдалитьСтроки();
      Ключ.ДобавитьЗначение(ТекСклад);
      Ключ.ДобавитьЗначение(ТекДата);

      КолПоСкладуЗаДень = ИТЗ.ИтогПоДиапазону("Количество", ИмяИндекса, Ключ, Ключ);
...
//конец выборки
Показать


П.С. не исключены мелкие ошибки и опечатки. Документация по ИТЗ: http://www.1cpp.ru/docum/icpp/html/IndexedTable.html . Пробуй. За уши потом не оторвешь! :D
14. Altair777 644 14.10.09 11:47 Сейчас в теме
(13) Вот! Это уже понятнее :)
Спасибо
15. Altair777 644 14.10.09 14:45 Сейчас в теме
Все, проблема решена с помощью 1С++ и объекта ИндексированнаяТаблица
Огромное спасибо Евгению Мартыненкову ( JohnyDeath )
за направление на путь истинный и практические советы при реализации решения.
16. Altair777 644 16.10.09 12:19 Сейчас в теме
Есть одна проблема.
Все нормально, пока не натыкаюсь на группировку по справочнику
Не получается получить итог в разрезе дат.
С элементами все нормально.
17. Altair777 644 19.10.09 12:09 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот