|
v7: Получить автора документа основания в ПЗ | ☑ | ||
---|---|---|---|---|
0
monsterZE
04.10.12
✎
17:06
|
сабж, не выходит каменный цветок. =\
автор - общий реквизит без отбора. у документа есть реквизит ДокОсн - "Документ" ограничим его одним типом. пишу: ... | ДокСчет.$ОбщийРеквизит.Автор as [АвторДокОсн $Справочник.Сотрудники] ... |FROM | _1SJourn as Жур (NOLOCK) |INNER JOIN | $Документ.РасходнаяНал as Док ON Док.IDDoc = Жур.IDDoc |LEFT JOIN | $Документ.Счет as ДокСчет ON ДокСчет.IDDoc = $Док.ДокОсн |
|||
1
monsterZE
04.10.12
✎
17:07
|
возвращает пустоту в АвторДокОсн
|
|||
2
Попытка1С
04.10.12
✎
17:08
|
селект Жур.$ОбщийРеквизит.Автор as [АвторДокОсн $Справочник.Сотрудники]
|
|||
3
Попытка1С
04.10.12
✎
17:08
|
У тебя же общий реквизит не в документе а в журнале, на то он и общий
|
|||
4
monsterZE
04.10.12
✎
17:19
|
(3) хм.. чет я не допераю.. =) реквизит то общий, но он мне нужен из разных документов в одной строке..
вот рабочий запрос.. |SELECT | $Док.Вид as [ВидР $Перечисление.ВидРасходной], | $Док.ДокОсн as [ДокОсн $Документ], | Док.$ОбщийРеквизит.Автор as [Автор $Справочник.Сотрудники], | $ДокС.Товар as [Товар $Справочник.Товары], | SUM($ДокС.Сумма) as СуммаТовара, | SUM($ДокС.Количество * $ДокС.Коэффициент) as Количество, | субАвтор = CASE LTRIM(CAST (Док.$ОбщийРеквизит.Основание AS Char(2))) | WHEN 'К(' THEN RTRIM(CAST (Док.$ОбщийРеквизит.Основание AS Char(100))) | WHEN 'к(' THEN RTRIM(CAST (Док.$ОбщийРеквизит.Основание AS Char(100))) | ELSE '' | END |FROM | _1SJourn as Жур (NOLOCK) |INNER JOIN | $Документ.РасходнаяНал as Док ON Док.IDDoc = Жур.IDDoc |INNER JOIN | $ДокументСтроки.РасходнаяНал as ДокС ON ДокС.IDDoc = Жур.IDDoc | AND $ДокС.Товар IN (SELECT Val FROM #ГруппаТ)"; Запрос.УложитьСписокОбъектов(СписокЭлементовВЗапрос, "#ГруппаТ","Товары"); // отбор по категории Если ВыбКатТов<>Перечисление.КатНом.Без_Отбора Тогда ТекстЗапроса = ТекстЗапроса + " |INNER JOIN | $Справочник.Товары as Товар ON $ДокС.Товар = Товар.ID AND $Товар.КатНом=:ВыбКатТов"; Запрос.УстановитьТекстовыйПараметр("ВыбКатТов", ВыбКатТов); КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |WHERE | Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IDDocDef = $ВидДокумента.РасходнаяНал | AND Жур.Closed & 1 = 1 |GROUP BY | Док.$ОбщийРеквизит.Автор, $ДокС.Товар, $Док.Вид, $Док.ДокОсн, | CASE LTRIM(CAST (Док.$ОбщийРеквизит.Основание AS Char(2))) | WHEN 'К(' THEN RTRIM(CAST (Док.$ОбщийРеквизит.Основание AS Char(100))) | WHEN 'к(' THEN RTRIM(CAST (Док.$ОбщийРеквизит.Основание AS Char(100))) | ELSE '' | END |ORDER BY | Док.$ОбщийРеквизит.Автор"; |
|||
5
monsterZE
04.10.12
✎
17:23
|
(3) Реквизит без отбора!
|
|||
6
Попытка1С
04.10.12
✎
17:31
|
Если у тебя галка отбор не стоит то реквизит в шапке дока находится..
Отбор то не поставить? |
|||
7
monsterZE
04.10.12
✎
17:34
|
(6) ну пока если без "поставить отбор"?
в документе реквизит типа Документ - это ссылка на документ? вот такое условие вобще верно? ON ДокСчет.IDDoc = $Док.ДокОсн |
|||
8
Mikeware
04.10.12
✎
17:35
|
Геморно без отбора.
|
|||
9
Mikeware
04.10.12
✎
17:36
|
(7) ДокОсн - Типа документ, ид 13значный
|
|||
10
Попытка1С
04.10.12
✎
17:36
|
(7) Да это ссылка.
|
|||
11
Попытка1С
04.10.12
✎
17:39
|
До 9 знаков обрезай.
|
|||
12
monsterZE
04.10.12
✎
17:46
|
(11)
|LEFT JOIN | $Документ.Счет as ДокСчет ON ДокСчет.IDDoc = LEFT($Док.ДокОсн,9) |
|||
13
monsterZE
04.10.12
✎
17:46
|
все равно пусто..
не туда нажал епрст. =) |
|||
14
monsterZE
04.10.12
✎
17:47
|
ладно, хрен с ним.. прост разобраться хотелось =)
|
|||
15
Mikeware
04.10.12
✎
17:48
|
(12) не лефт, а райт
|
|||
16
monsterZE
04.10.12
✎
17:55
|
(15) мля =)
|
|||
17
monsterZE
04.10.12
✎
17:56
|
пойду посплю.. =)
|
|||
18
monsterZE
04.10.12
✎
18:04
|
есть контакт =) вроде.. проверю завтра
|
|||
19
monsterZE
05.10.12
✎
16:22
|
все работает как должно.
еще пару вопросов: как правильно описать типизацию параметра CASE? т.е. например элемент справочника, как его привести к as $Справочник.ХХХ ? и еще, если в столбце типизированном под справочник CASE вернт 'ХХХ' на что-нить повлияет или, лучше в отдельный стлобец этот 'ХХХ' писать? |
|||
20
Mikeware
05.10.12
✎
16:22
|
(19) чиво?
|
|||
21
monsterZE
05.10.12
✎
16:24
|
Есть доки с пустым "Автором", надо их выделить.. а то влияют на сбор статистики в +
=) | ДокОснАвтор = CASE ДокСчет.$ОбщийРеквизит.Автор | WHEN $ПустойИД THEN 'Автозагрузка' | ELSE ДокСчет.$ОбщийРеквизит.Автор | END AS $Справочник.Сотрудники, |
|||
22
Mikeware
05.10.12
✎
16:30
|
(21) ты уж определись, либо у тебя агрегатный тип, либо строка...
Либо выводи наименование, либо заводи пользователя Автозагрузка. |
|||
23
monsterZE
05.10.12
✎
16:33
|
(22) ясно, вобщем отдельный столбик =)
|
|||
24
Mikeware
05.10.12
✎
16:37
|
(22) ну, тоже вариант...
|
|||
25
monsterZE
05.10.12
✎
16:42
|
(24) ну на пока..
можно было бы, конечно без этой @#$ обойтись, создав соответ. "сотрудника", поправив обработки и проставить его в уже загруженных документах.. быстрее пока так | Автозагрузка = CASE ДокСчет.$ОбщийРеквизит.Автор | WHEN $ПустойИД THEN 1 ELSE 0 END, |
|||
26
Mikeware
05.10.12
✎
16:45
|
(25)
| ДокОснАвтор = CASE ДокСчет.$ОбщийРеквизит.Автор | WHEN $ПустойИД THEN :ЮзверьАвтозагрузка | ELSE ДокСчет.$ОбщийРеквизит.Автор | END AS $Справочник.Сотрудники, Или лефитджойнь с спрПользователи, и isnull(спрПользователи.id, :ЮзверьАвтозагрузка) |
|||
27
monsterZE
05.10.12
✎
17:32
|
(26) Ага, спс!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |