К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Странность работы группировки в запросе

Гость
0 - 13.06.2014 - 12:26
Запрос по документам:
...
Склад=Документ.ОтчетККМ.Склад;
ТекДок=Документ.ОтчетККМ.ТекущийДокумент;
Группировка Склад;
Группировка ТекДок;
...
Работает нормально.
А вот при варианте Группировка Склад Все
документы не группируются по складам.
(По каждому складу идут все документы).
Как быть ?

Группировка Склад Все нужна для того, чтобы в запросе получить и те склады, по которым не было документов.



Гость
1 - 13.06.2014 - 13:23
Что группируешь, приведи запрос целиком
Гость
2 - 13.06.2014 - 16:33
Документы группирую
|ПЕРИОД С ДатаНачала По ДатаКонца;
|ОбрабатыватьДокументы Все;
|Обрабатывать НеПомеченныеНаУдаление;
|Склад = Документ.ОтчетККМ.Склад;
|ДатаДок = Документ.ОтчетККМ.ДатаДок.ДатаДок;
|ТекДок = Документ.ОтчетККМ.ТекущийДокумент;
|Условие (Склад В спСкладовМагазинов);
|Группировка Склад Все;
|Группировка ДатаДок Все;
|Группировка ТекДок;";
Гость
3 - 13.06.2014 - 16:35
Мне нужно, чтобы в запрос попали ВСЕ склады и ВСЕ даты, независимо от существуют ли по этим складам и датам документы.
Гость
4 - 13.06.2014 - 17:12
соединяй со справочником, если хочешь все склады
Гость
5 - 13.06.2014 - 18:20
4-Управление торговлей 11 >
Склад = Справочник.Склады,Документ.ОтчетККМ.Склад,...
Так?
А с группировкой по дате что делать? Там та же проблема - Группировка ДатаДок Все "цепляет" ВСЕ документы.
Гость
6 - 13.06.2014 - 18:42
А нахрена нужна группировка по дате?
А нахрена нужна группировка по документу?

"Мне нужно, чтобы в запрос попали ВСЕ склады и ВСЕ даты, независимо от существуют ли по этим складам и датам документы" - А вот индейское жилище...
С какой это стати запрос будет формировать строку на какай-нить день, если в этот день не было затребованных движений?

Шизофреническое задание...
Гость
7 - 13.06.2014 - 18:47
6-VZ >Мне надо построить таблицу: строки-склады, столбцы-дни (КАЖДЫЙ день из опр.периода), в ячейках - документы.
Причем в таблицу должны попадать все склады и все дни, независимо от того, есть ли документы.
Вот я и пытаюсь выбрать данные для заполнения таблицы одним запросом.
Гость
8 - 13.06.2014 - 18:51
есть КалендарныеГрафики
Гость
9 - 13.06.2014 - 18:56
8-Управление торговлей 11 >Что есть "КалендарныеГрафики" ?
Парни, да у меня другая задача.
Сеть магазинов, которая свои продажи сбрасывает в центр.базу. Продажи загружаются в виде документов ОтчетККМ. А я хочу сделать отчет по этим загрузкам - есть документ за данный день по данному магазину, нет документа. Без всяких движений.
А вы сразу обзываться начинаете - "Шизофреническое задание"...
Гость
10 - 13.06.2014 - 19:00
Проблему-то я решил. Не совсем красиво, но тем не менее.
При обходе группировки по документам отсекаю лишние документы проверкой по дате и складу "родительских" группировок. Но хотелось без костылей.
Гость
11 - 13.06.2014 - 19:08
И, похоже, это "семерка"...
Что за конфа?
Гость
12 - 13.06.2014 - 19:09
11-VZ Так я и обозначал, что v7.
Конфа - допиленная ТиС 9.2.
Гость
13 - 13.06.2014 - 19:20
аааа, 7.7, это я проглядел
я бы сделал наверно так - по документам обычный запрос без излишеств, встроенными циклами вывожу табличку магазин/день и методом ПолучитьГруппировку(магазин,день) смотрю наличие документов
Гость
14 - 13.06.2014 - 19:21
13-Управление торговлей 11 >"встроенными" - это "вложенными" :)
Гость
15 - 13.06.2014 - 19:39
14-Управление торговлей 11 >Где это, интересно, в v7 метод ПолучитьГруппировку?
Данные для заполнения таблицы Склады-Даты элегантно было бы получить одним запросом.
Вопрос только в том, почему так "неочевидно" работает группировка по складам и датам с параметром ВСЕ.
"Очевидно" было бы, если бы при отсутствии документов для данной даты или склада группировка по документам давала бы пустой список, а она тащит все документы других складов и дат...
Гость
16 - 13.06.2014 - 20:00
15-Marlboro >ну ошибся, по памяти писал
Получить(<?>)
Синтаксис:
Получить(<ЗначениеГруппировки1>,...,<ЗначениеГрупп ировкиN>)
Назначение:
Прямое позиционирование на запись в выборке по конкретным значениям группировок.
Возвращает: 1 - если запись найдена, 0 - иначе.
Параметры:
<ЗначениеГруппировкиN> - значение параметра N-ой группировки запроса.
Замечание:
Опущенные при вызове последние значения группировок должны заменяться запятыми. Если при вызове метода опущены все параметры, то выборка позиционируется на самое начало временного набора данных, на строку итогов. После выполнения метода Получить может осуществляться дальнейший обход выборки вызовами метода Группировка.
Гость
17 - 13.06.2014 - 20:08
кстати, есть же стандартная группировка "день" вроде?
Гость
18 - 13.06.2014 - 23:42
16-Управление торговлей 11 >Да это неважно, как я прохожу итоги запроса - вложенными циклами по группировкам или прямым позиционированием на запись, все равно я получаю неправильные значения группировки по документам (если использовался параметр ВСЕ для вышестоящих группировок Склад и Дата).

А Группировка День ВСЕ дает тоже самое.
Гость
19 - 14.06.2014 - 07:27
Зачастую в семерке выгружают в ТЗ. В ней сортируют и её обрабатывают, считая итоги.
Гость
20 - 14.06.2014 - 17:51
я так и не понял, что за группировки, если нет никакой функции - ни остатков, ни прихода, ни расхода
Гость
21 - 14.06.2014 - 20:13
20-USSR > "Группируются" поля. Хоть явно их обозначай, хоть через функцию.
Извращение (7) напрямую одним запросом в ТЗ, как мечтает автор, "красиво", не сотворить.
Гость
22 - 14.06.2014 - 20:54
+21 Но можно попробовать нечто вроде:
|ПЕРИОД С ДатаНачала По ДатаКонца;
|Обрабатывать НеПомеченныеНаУдаление;
|Док = Документ.ОтчетККМ.ТекущийДокумент;
|Склад = Документ.ОтчетККМ.Склад;
|Условие (Склад В спСкладовМагазинов);
|Группировка Склад Все;
|Группировка День Все;";
Гость
23 - 15.06.2014 - 10:25
Я по такой проблеме никогда бы не стал заморачиваться. Выбрал в ТЗ документы, добавил нужные колонки, в цикле заполнил, затем делай что хочешь. 5 строчек лишнего года, с точки зрения потери скорости полная ерунда, зато полная гибкость. Не надо быть апологетом парадигмы - абсолютно все извлекать из запроса. Будьте проще ... Это не проблема, чтобы всерьез обсуждать
Гость
24 - 15.06.2014 - 11:25
23-USSR > Извлекать данные только и исключительно только - это "восьмеризм" ;)
В v8, правило "только запрос", в общем-то, оправдано (в силу самой концепции недоущения клиента к прямому контакту с базой.
Но в "семерке" акцент на "только" - это эстетство. А в случае с ДБФ-ной базой - и нерационально: выборка бысрее.
Гость
25 - 15.06.2014 - 21:44
Цитата:
Сообщение от VZ Посмотреть сообщение
В v8, правило "только запрос", в общем-то, оправдано (в силу самой концепции недоущения клиента к прямому контакту с базой).
Это-то фигня. А вот то, что объектное чтение в режиме автоматического управления блокировками так и норовит установить хотя бы S-блокировки на уровне СУБД - это проблема. Доставляет, когда какой-нить балбес идя на поводу у пользователей делает раскраску списков обращаясь к данным через пару точек (а я даже 4 видел). С ростом числа пользователей такой коллапс приходит - просто пипец.


К списку вопросов






Copyright ©, Все права защищены