|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
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 не влияет на тормоза При общем случае все равно прийдется перебирать всю таблицу, хоть с данным условием, хоть без него |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |