|
v7: Сумма по колонке в прямом запросе. | ☑ | ||
---|---|---|---|---|
0
Eeakie
15.05.14
✎
01:50
|
Извиняюсь за тупость, но как в прямом запросе посчитать сумму колонки в документе (аналогично Док.Итог(<Колонка>))?.
select Док.iddoc as Документ, ??? as Сумма from <...> where <...> group by <...> |
|||
1
Eeakie
15.05.14
✎
01:58
|
Обычное sum($Документ.Сумма) дает результат, но в некоторых случаях неверный. Как такое может быть?
|
|||
2
SiAl-chel
15.05.14
✎
02:16
|
(+1) По IDDOC группируешь?
|
|||
3
ivsher
15.05.14
✎
11:35
|
А зачем считать сумму? Если в конфигураторе для данного реквизита стоит признак "Итог по колонке", то получить итог можно из шапки документа.
|
|||
4
Eeakie
15.05.14
✎
11:46
|
(2) Да.
(3) Получать суммы при переборе довольно таки долго. Много документов обрабатывается. А я как раз оптимизацией занимаюсь сейчас. |
|||
5
Дык ё
15.05.14
✎
11:50
|
(1) ошибка в запросе
(3) +1 |
|||
6
Eeakie
15.05.14
✎
11:59
|
(5) Может я не так понимаю. Как в запросе получить итог из шапки?
|
|||
7
Mikeware
15.05.14
✎
12:01
|
(6) Ну помотри на таблицу шапки.
|
|||
8
Eeakie
15.05.14
✎
12:03
|
(7) Какую еще таблицу шапки?
|
|||
9
Попытка1С
15.05.14
✎
12:05
|
$Док.СуммаДокумента
|
|||
10
ДенисЧ
15.05.14
✎
12:05
|
(8) DH*
|
|||
11
Попытка1С
15.05.14
✎
12:05
|
Селект соответственно не с ДокументСтроки а с Документ
|
|||
12
Матадор
15.05.14
✎
12:08
|
(0) Придется учить SQL :)
Смотри в сторону GROUP BY <****> WITH ROLLUP |
|||
13
Eeakie
15.05.14
✎
12:09
|
(12) Я этим и занимаюсь :)
|
|||
14
Матадор
15.05.14
✎
12:11
|
(0) Хотя конечно, если тебе только итог по колонке табличной части документа нужен, то тогда проще действительно в шапку документа смотреть, если конечно у тебя стоит галочка "итог по колонке" в свойствах таб части.
|
|||
15
Eeakie
15.05.14
✎
12:14
|
(14) Да, галка стоит. Только я вот не совсем понимаю, что значит это "смотреть в шапку документа". В SQL только начал углубляться... пока только элементарные запросы получается делать.
|
|||
16
DmitrO
15.05.14
✎
12:16
|
(15) везет же людям, впереди столько интересного :)
|
|||
17
ДенисЧ
15.05.14
✎
12:17
|
(15) Может, ты для начала свой запрос покажешь, чтобы мы тут практической телепатологией не занимались?
|
|||
18
Eeakie
15.05.14
✎
12:17
|
О, взлетело. Просто добавил в group by $Документ.Сумма и в селекте убрал sum($Документ.Сумма).
|
|||
19
Eeakie
15.05.14
✎
12:20
|
(17) Сильно хреново сделан запрос?
|select Заявка.iddoc [Заявка $Документ.Заявка] | , Журнал.docno Номер | , cast(left(Журнал.date_time_iddoc, 8) as datetime) Дата | , substring(Журнал.date_time_iddoc, 9, 6) Время | , Журнал.closed & 1 Проведен | , $Заявка.Автор [Автор $Справочник.Сотрудники1] | , $Заявка.Клиент [Клиент $Справочник.Клиенты] | , sum(Бухгалтерия.РезервТовараОстаток) Бухгалтерия | , sum(Склад.КоличествоОстаток) Склад | , sum(Шайба.ОстатокТовараОстаток) Шайба | , $Заявка.Сумма Сумма | , $Заявка.НДС НДС |from $Документ.Заявка as Заявка with (nolock) | inner join | _1sjourn Журнал with (nolock) on Журнал.iddoc = Заявка.iddoc | left join | $РегистрОстатки.Заявки(,, Фирма = :ТекущаяФирма) as Бухгалтерия on Бухгалтерия.ПоСчету = Заявка.iddoc | left join | $РегистрОстатки.Ожидания(,, Фирма = :Центролаб) as Склад on Склад.Заявка = Заявка.iddoc | left join | $РегистрОстатки.ОстаткиТоваровОбщ(,, Фирма = :Центролаб) as Шайба on Шайба.Заявка = Заявка.iddoc |where | Журнал.date_time_iddoc between :НачДата and :КонДата~ | and $Заявка.Фирма = :ТекущаяФирма"; | and Шайба.ОстатокТовараОстаток <> 0"; | and $Заявка.Автор in (select val from #Авторы)"; |group by | Заявка.iddoc, | Журнал.docno, | cast(left(Журнал.date_time_iddoc, 8) as datetime), | substring(Журнал.date_time_iddoc, 9, 6), | Журнал.closed & 1, | $Заявка.Автор, | $Заявка.Клиент, | $Заявка.Сумма, | $Заявка.НДС"; |
|||
20
Ёпрст
15.05.14
✎
12:23
|
>>> group by $Документ.Сумма
это нездоровый диагноз |
|||
21
Ёпрст
15.05.14
✎
12:25
|
ну и в Этом запросе вот это всё
|from $Документ.Заявка as Заявка with (nolock) | inner join | _1sjourn Журнал with (nolock) on Журнал.iddoc = Заявка.iddoc вообще лишнее, при условии and Шайба.ОстатокТовараОстаток <> 0"; |
|||
22
Eeakie
15.05.14
✎
12:28
|
(20) Согласен. Никогда так и не делал, но в данном случае так отрабатывает правильно.
(21) Почему лишнее? Как это связано вообще? Разные данные же получаю. Журнал только для фильтра по периоду и признака проведенности. |
|||
23
Eeakie
15.05.14
✎
12:32
|
Я вообще считаю, что такие данные как Номер, Дата, Время, Проведенность получать глупо в запросе. Но скорость увеличивается прилично, если брать их напрямую с запроса, а не с итоговой ТЗ.
|
|||
24
Eeakie
15.05.14
✎
12:32
|
+(23) Из документа в итоговой ТЗ.
|
|||
25
Eeakie
15.05.14
✎
12:38
|
(21) Действительно лишнее... Просто там 3 почти одинаковых варианта получения данных и "Шайба.ОстатокТовараОстаток <> 0" отрабатывает только при одном из них. Скопировал немного неправильно.
|
|||
26
trad
15.05.14
✎
12:43
|
|select Заявка.iddoc [Заявка $Документ.Заявка]
| , Журнал.docno Номер | , cast(left(Журнал.date_time_iddoc, 8) as datetime) Дата | , substring(Журнал.date_time_iddoc, 9, 6) Время | , Журнал.closed & 1 Проведен | , $Заявка.Автор [Автор $Справочник.Сотрудники1] | , $Заявка.Клиент [Клиент $Справочник.Клиенты] | , Бухгалтерия.РезервТовараОстаток Бухгалтерия | , Склад.КоличествоОстаток Склад | , Шайба.ОстатокТовараОстаток Шайба | , $Заявка.Сумма Сумма | , $Заявка.НДС НДС |from $Документ.Заявка as Заявка with (nolock) | inner join | _1sjourn Журнал with (nolock) on Журнал.iddoc = Заявка.iddoc | left join | $РегистрОстатки.Заявки(,, Фирма = :ТекущаяФирма, ПоСчету, РезервТовара) as Бухгалтерия on Бухгалтерия.ПоСчету = Заявка.iddoc | left join | $РегистрОстатки.Ожидания(,, Фирма = :Центролаб, Заявка, Количество) as Склад on Склад.Заявка = Заявка.iddoc | left join | $РегистрОстатки.ОстаткиТоваровОбщ(,, Фирма = :Центролаб, Заявка, ОстатокТовара) as Шайба on Шайба.Заявка = Заявка.iddoc |where | Журнал.date_time_iddoc between :НачДата and :КонДата~ | and Журнал.iddocdef = $ВидДокумента.Заявка | and $Заявка.Фирма = :ТекущаяФирма | and Шайба.ОстатокТовараОстаток <> 0 | and $Заявка.Автор in (select val from #Авторы) |
|||
27
Eeakie
15.05.14
✎
12:51
|
(26) Из-за того, что были не указаны нужные измерения и ресурсы всё... Не подумал бы...
|
|||
28
Eeakie
15.05.14
✎
12:54
|
(26) and Журнал.iddocdef = $ВидДокумента.Заявка как-то влияет на скорость отбора? Потому что на результат никак.
|
|||
29
Eeakie
15.05.14
✎
12:56
|
Всем спасибо.
|
|||
30
Mikeware
15.05.14
✎
12:59
|
(23)естественно, увеличивается. Ты ж не лащишьк каждому объекту
|
|||
31
trad
15.05.14
✎
13:08
|
(28) ... и домашним заданием будет изучение планов выполнения запросов с этим условием и без
|
|||
32
Ёпрст
15.05.14
✎
13:21
|
(22) подумай.
|
|||
33
Ёпрст
15.05.14
✎
13:21
|
что ты накладываешь этим условием.
|
|||
34
Ёпрст
15.05.14
✎
13:22
|
Грубо - в результате запроса будет только те заказы, что есть на остатке в регистре шайбы..
Нафига там запрос по документам - хз. |
|||
35
Ёпрст
15.05.14
✎
13:22
|
Ну разве что, реквизиты дока вытащить - только запрос нужно переписать будет.
|
|||
36
Eeakie
15.05.14
✎
13:26
|
(30),(31) Усвоил :)
(32)-(35) Уже понял. Всё переписал. Надо работать над логикой... Спасибо. |
|||
37
Eeakie
15.05.14
✎
13:53
|
$Заявка.Автор in (select val from #Авторы)
Запрос.УложитьСписокОбъектов(СписокЭлементов, "#Авторы"); Если СписокЭлементов пуст, то фильтр отключится? |
|||
38
Ёпрст
15.05.14
✎
13:57
|
(37) конечно нет
:) |
|||
39
trad
15.05.14
✎
13:59
|
(37) нет, не отключится
|
|||
40
Eeakie
15.05.14
✎
13:59
|
(38) А жаль :)
|
|||
41
Eeakie
15.05.14
✎
15:31
|
$РегистрОстатки.Ожидания(,, Фирма = :Центролаб, Заявка, Количество) as Склад on Склад.Заявка = Заявка.iddoc
Ничего не дает, потому что тип измерения "Заявка" в регистре просто <Документ>, а не <Документ.Заявка>. Как можно это победить? |
|||
42
trad
15.05.14
✎
15:35
|
on Склад.Заявка = $ВидДокумента36.Заявка + Заявка.iddoc
|
|||
43
Eeakie
15.05.14
✎
15:37
|
(42) Взлетело, спасибо. Но что это? Где почитать?
|
|||
44
Ёпрст
15.05.14
✎
15:42
|
||||
45
ivsher
15.05.14
✎
15:42
|
||||
46
Eeakie
15.05.14
✎
15:56
|
(44) ооо, буду разбираться...
(45) ага, врубился. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |