Имя: Пароль:
1C
1С v8
Запрос: длинное выражение в поле и Группировка
0 andrewks
 
21.11.11
20:33
собственно, вопрос: есть поле в запросе, в котором указано очень длинное выражение (с выбором).
в группировке приходится тоже его дублировать, по псевдониму не принимает. как можно обойти? или это суровая реальность?
1 andrewks
 
21.11.11
20:36
забыл уточнить: в поле тип дата.
со ссылками на справочники получается с псевдонимом
2 shuhard
 
21.11.11
20:36
(0) засунь в подзапрос
3 PR
 
21.11.11
20:36
Все во вложенный запрос, потом группировать.
Красиво, но не правильно IMHO :))
4 andrewks
 
21.11.11
20:38
подзапрос? а как это скажется на производительности?
5 andrewks
 
21.11.11
20:38
и почему именно с датами такие траблы?
6 shuhard
 
21.11.11
20:39
(4) снизит,
но тебе же важно не дублировать длинное выражение =)
7 PR
 
21.11.11
20:40
(5) Почему именно с датами?
С любыми так.
8 andrewks
 
21.11.11
20:40
(7) только что со ссылкой на справочник взлетело по псевдониму. а с датой не взлетает
9 PR
 
21.11.11
20:42
(8) И псевдоним уникальный? Попробуй написать в псевдониме Вася275.
10 andrewks
 
21.11.11
20:44
(9) уникальный. а при чём здесь Вася? :)
11 PR
 
21.11.11
20:45
(10) Ну я так, в качестве примера уникального :))
Можешь Гватемала11 попробовать :))
12 andrewks
 
21.11.11
20:48
(11) пишет: поле не найдено. хотя псевдоним точно такой, копипастом делаю
13 andrewks
 
21.11.11
20:50
я вот честно говорю: так и не понял регламент указания псевдонимов в группировке. везде взлетает, а тут нет.
14 PR
 
21.11.11
20:51
Я про то и говорю, может дело не в том, что дата, а в том, что ты группируешь по какому-то другому полю, а не по полю с выбором, для которого назначен альяс? :))
15 andrewks
 
21.11.11
20:55
да не, ну чё я, выдумываю, что-ли? какой-то затык у 1с с псевдонимами в секции Группировка

ну вот сам попробуй: простейший запрос

select
null as Материал
group by
Материал


он тебе скажет - поле не найдено "Материал"
хотя в секции Упорядочить и Итоги этот псевдоним примет

приходится писать так:


select
null as Материал
group by
null



НО! почему-то не всегда ругается. вот не пойму, от чего зависит

в другом месте
case when ОстМат.Склад is null then value(Справочник.Склады.ПустаяСсылка) else ОстМат.Склад end as Склад
и
group by Склад

скушал. разъясните, что к чему
16 PR
 
21.11.11
20:57
(15) Напиши в другом месте так :))
case when ОстМат.Склад is null then value(Справочник.Склады.ПустаяСсылка) else ОстМат.Склад end as СпоримВБазеНетПоляСТакимИменем
и
group by СпоримВБазеНетПоляСТакимИменем
17 andrewks
 
21.11.11
20:59
а, всё, понял. я уже сам начал догадываться, речь получается не про всевдоним, а про реквизиты физ.таблиц

т.е. все тупо копипастят, я так понимаю?
18 shuhard
 
21.11.11
21:00
(17) нет
я предпочитаю подзапросы
отлаживаться проще
19 PR
 
21.11.11
21:00
(17) Ну не знаю, я просто знаю про эту мульку и в СГРУППИРОВАТЬ всегда пишу содержимое поля :))
20 PR
 
21.11.11
21:01
+(19) А, не понял сразу.
Ну да, копипастят, если без вложенных запросов :))
21 andrewks
 
21.11.11
21:01
(19) разверни: т.е. копипастишь, или нет?
22 andrewks
 
21.11.11
21:01
ясно. грустно чё-то. неужели по-человечьи нельзя было сделать?
23 andrewks
 
21.11.11
21:09
ещё вопрос: в условии Где то же самое, туда тоже копипастить надо сложные выражения.
а вот кто в курсе, он каждый раз вычисляет эти выражения: и в поле, и в условии, или по-умному делает, с оптимизацией?
24 ДенисЧ
 
21.11.11
21:38
Кстати, в скуле тоже не работает...
25 ДенисЧ
 
21.11.11
21:38
(23) По умному. Точнее, это скуль (if any) делает..
26 andrewks
 
21.11.11
21:44
(25) это уже хорошо
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший