|
|
|
Помогите с запросом | ☑ | ||
|---|---|---|---|---|
|
0
Melcor
05.05.14
✎
13:40
|
Доброго дня. Есть самописный регистр бонусы сантехников. Хочу в запросе получать последнюю запись по периоду, при этом хочу знать по какому подразделению было начисление и с условием, что СуммаБонусов больше нуля, но 1С ругается если я не включаю эти поля в группировку, а они мне там не нужны.
Вот так не работает: ВЫБРАТЬ интБонусыСантехников.Клиент КАК Клиент, интБонусыСантехников.Подразделение, интБонусыСантехников.СуммаБонусов, МАКСИМУМ(интБонусыСантехников.Период) КАК Период ИЗ РегистрНакопления.интБонусыСантехников КАК интБонусыСантехников ГДЕ интБонусыСантехников.Клиент = &ВыбСантехник И интБонусыСантехников.СуммаБонусов > &НулевоеЗначение СГРУППИРОВАТЬ ПО интБонусыСантехников.Клиент |
|||
|
1
Ненавижу 1С
гуру
05.05.14
✎
13:41
|
а накуа? для этого есть срезы последних у регистров сведений
|
|||
|
2
Classic
05.05.14
✎
13:42
|
ВЫБРАТЬ ПЕРВЫЕ 1
....... УПОРЯДОЧИТЬ ПО интБонусыСантехников.Период УБЫВ |
|||
|
3
Classic
05.05.14
✎
13:42
|
без группировок
|
|||
|
4
Люблю 1с
05.05.14
✎
13:43
|
а параметр &НулевоеЗначение небось равен нулю
|
|||
|
5
Melcor
05.05.14
✎
13:44
|
(3) Всё равно ошибка
(4) Ага |
|||
|
6
kosts
05.05.14
✎
13:44
|
(0) Нужен составной запрос. Первым делом найти дату последнего движения, потом присоединить к регистру по периоду.
Это если не периодический. |
|||
|
7
Classic
05.05.14
✎
13:45
|
(5)
Какая ошибка? ВЫБРАТЬ ПЕРВЫЕ 1 интБонусыСантехников.Клиент КАК Клиент, интБонусыСантехников.Подразделение, интБонусыСантехников.СуммаБонусов, интБонусыСантехников.Период ИЗ РегистрНакопления.интБонусыСантехников КАК интБонусыСантехников ГДЕ интБонусыСантехников.Клиент = &ВыбСантехник И интБонусыСантехников.СуммаБонусов > &НулевоеЗначение УПОРЯДОЧИТЬ ПО интБонусыСантехников.Период УБЫВ |
|||
|
8
Люблю 1с
05.05.14
✎
13:45
|
(5) а не проще ли в запросе вместо этого параметра сразу с нулем сравнивать?
|
|||
|
9
kosts
05.05.14
✎
13:47
|
Если отрицательных бонусов не бывает, то зачем сравнивать с нулем. Скорее всего и индекса нет по сумме. На больших базах будут тормоза.
|
|||
|
10
Melcor
05.05.14
✎
13:47
|
(7) Спасибо, всё работает
(9) Бывают |
|||
|
11
Classic
05.05.14
✎
13:48
|
(10)
ты ж говорил, что ошибка |
|||
|
12
Melcor
05.05.14
✎
13:49
|
(11) Максимум не убрал
|
|||
|
13
kosts
05.05.14
✎
13:50
|
(7) Не универсально, как для списка клиентов это получить?
|
|||
|
14
fisher
05.05.14
✎
13:50
|
(9) Откуда тормоза будут? Селективность такого условия крайне низкая. Индекс тут нафиг не нужен.
|
|||
|
15
Classic
05.05.14
✎
13:50
|
(13)
А где сказано, что надо универсально? |
|||
|
16
Classic
05.05.14
✎
13:52
|
Для универсальности недостаточно условий. Например что делать при нескольких записях с "последним периодом"
|
|||
|
17
kosts
05.05.14
✎
13:53
|
(14) Тогда уже так, тормоза будет одинаковые, что с индексом что и без...
|
|||
|
18
kosts
05.05.14
✎
13:54
|
(16) такие не допущать до записи...
|
|||
|
19
fisher
05.05.14
✎
13:56
|
(17) Никаких тормозов это условие не добавляет.
Еще расскажи, что быстрее будет фильтровать записи на клиенте. |
|||
|
20
Classic
05.05.14
✎
13:56
|
(18)
Недопускать из-за одного (возможно разового) отчета? Мы ж не вкурсе, какую роль выполняет данный РС |
|||
|
21
kosts
05.05.14
✎
14:04
|
(19) Просмотр всей таблицы, это разве не тормоза?
|
|||
|
22
kosts
05.05.14
✎
14:05
|
(21) Имею ввиду при отсутствии других условий
|
|||
|
23
Classic
05.05.14
✎
14:13
|
(21)
Там же условие на клиента. Почему вся таблица? На клиенте наверняка индекс есть |
|||
|
24
kosts
05.05.14
✎
14:14
|
(23) Зря спорим, я про общий случай, вы про частный. Я понял
|
|||
|
25
Classic
05.05.14
✎
14:16
|
(24)
Разговор про то, что добавление условия Сумма > 0 не влияет на тормоза При общем случае все равно прийдется перебирать всю таблицу, хоть с данным условием, хоть без него |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |