|
v7: Подсчет количества строк в документах SQL | ☑ | ||
---|---|---|---|---|
0
Lacoster
02.10.13
✎
10:27
|
Всем привет! Нашим работягам платят бабки за количество набитых строк в документ. Нужно сделать отчет. Вот я на скуле набросал. Весь смысл в том что хочу все реализовать в скуле, циклом пробежать по документам всегда успею.
|SELECT | Жур.IDDoc as [Док $Документ], | Жур.IDDocDef as [Док_вид $ВидДокумента], | Жур.$ОбщийРеквизит.Автор [Автор $Справочник.Пользователи], | (select Max(ДокС.LINENO_) as КолС from $ДокументСтроки.Док_вид ДокС) Строк | |FROM | _1SJourn as Жур |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |and Жур.IsMark=0 |and Жур.Closed & 1 = 1 |and Жур.$ОбщийРеквизит.Автор in (Select val from #СписокАвторов) А вопрос в том что запрос этот не работает. ДокуметСтроки ждет параметр с названием документа. Как мне ему передать? |
|||
1
viktor_vv
02.10.13
✎
10:37
|
|Select
|Count() as КолСтрок |FROM | _1SJourn as Жур | Left join $ДокументСтроки.ВидДокументаТвоего as ДокСтрокиТвой 0n Жур.IDDOC = ДокСтрокиТвой.IDDOC |Group by Жур.IDDoc , Жур.$ОбщийРеквизит.Автор |
|||
2
viktor_vv
02.10.13
✎
10:38
|
И в
Where Жур.IDDOCDEF = $ВидДокумента.ТвойВидДокумента |
|||
3
viktor_vv
02.10.13
✎
10:39
|
А есл по нескольким видам документов, то объединяй несколько селектов.
|
|||
4
Lacoster
02.10.13
✎
10:39
|
(1) у меня в журнале разные виды доков. В этом вся и херня.
|
|||
5
Lacoster
02.10.13
✎
10:40
|
(3) это понятно. Мне лениво писать кучу селектов, хочу автоматику. Да и не известно, вдруг сегодня этот автор заполнит другой документ, а селекта на этот док нет. Не получит свои бабки
|
|||
6
Mikeware
02.10.13
✎
10:40
|
(4) ну и цепляй разные. в чем проблемы?
|
|||
7
viktor_vv
02.10.13
✎
10:41
|
Select
inion all select Потом сверху обернешь еще одним селектом и сгруппируешь (5) Формируй запрос динамически через метаданные. |
|||
8
Mikeware
02.10.13
✎
10:41
|
(5) и что тебе мешает построить запрос динамически (кроме религии)?
|
|||
9
Lacoster
02.10.13
✎
10:42
|
(8) мозг. Не умею
|
|||
10
viktor_vv
02.10.13
✎
10:44
|
(7)+ Или кучу left join , вместо inion.
|
|||
11
Lacoster
02.10.13
✎
10:45
|
(10) да я же говорю. Вдруг завтра скажут автору заполнять ещё документы, а этого дока не будет в перечне селектов, получается он оне получит бабки. Да и править каждый раз отчет придется
|
|||
12
viktor_vv
02.10.13
✎
10:49
|
(11) см (8) и (7) :).
|
|||
13
viktor_vv
02.10.13
✎
10:51
|
(12)+ Если не все доки нужны, сделай настроечный справочник, где перчисли виды документов для отчета, по нему и формируй текст запроса.
|
|||
14
Злой Бобр
02.10.13
✎
10:51
|
(11) Зачем править? Перечень видов документов вытягивай в список с пометками через метаданные. Пусть отмечают нужные и вперед.
|
|||
15
Lacoster
02.10.13
✎
10:52
|
(12) как мне динамически запрос делать? Из моего запроса выловить необходимые мне виды доков и подставлять в шаблон запроса?
|
|||
16
Lacoster
02.10.13
✎
10:53
|
(14) не получится отмечать нужные. Начальник не заморачивается о том кто какие доки правит
|
|||
17
Злой Бобр
02.10.13
✎
10:57
|
(16) Ты даешь инструмент. А пользоваться им или нет - это уже не твои проблемы. Пусть хоть с потолка цыфру берут, никто ж невозражает.
Делай все в точности как написано в ТЗ. |
|||
18
viktor_vv
02.10.13
✎
11:03
|
(15) Не надо вылавливать, сам запрос формируй по всем документам.
Текстзапроса = ""; Для i = 1 по Метаданные.Документ() Цикл Если Метаданные.Документ(i).РеквизитТабличнойЧасти() = 0 Тогда // исключим документы без табличной части Продолжить ; КонецЕсли ; ВидДок = Метаданные.Документ(i).Идентификатор ; /// А тут уже формируй кусок запроса с подставновкой вида документа ТекстЗапроса = Текстзапроса + ЧеУТебяТамПолучится ; КонецЦикла; |
|||
19
Злой Бобр
02.10.13
✎
11:05
|
(18) Запрос в цикле. Просто прелестно. Иди сам засунь пальцы в дверной проем.
|
|||
20
Mikeware
02.10.13
✎
11:06
|
(18) опередил
(19) где ты видишь "запрос в цикле"? |
|||
21
Злой Бобр
02.10.13
✎
11:08
|
(20) Ну пока в (18) такое и вижу.
|
|||
22
Salimbek
02.10.13
✎
11:09
|
(21) Ты там видишь Выполнение запроса? Я вижу только формирование текста...
|
|||
23
viktor_vv
02.10.13
✎
11:11
|
(19) Какой-то ты агрессивный :). Нету там запроса в цикле.
|
|||
24
Lacoster
02.10.13
✎
11:14
|
(18) идею понял. Текст запроса в цикле заипенить и потом выполнить....ща подумаю
|
|||
25
Злой Бобр
02.10.13
✎
11:22
|
(23) Да, я такой. Если б там небыло вначале
Текстзапроса = ""; то я б и не спорил. |
|||
26
viktor_vv
02.10.13
✎
11:25
|
(25) Ну так инициализировал переменную для текста запроса.
|
|||
27
Mikeware
02.10.13
✎
12:09
|
(25) ты забыл анекдот про буратино?
|
|||
28
antoneus
02.10.13
✎
13:34
|
Целесообразнее не по метаданным бежать, а вытащить список видов введенных доков из журнала
select distinct iddocdef [ВидДокумента $ВидДокумента] from _1sjourn (nolock) из из него уже лепить текст запроса. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |