|
v7: Кто еще в теме про прямые запросы ? | ☑ | ||
---|---|---|---|---|
0
Sereja
12.09.11
✎
17:45
|
День добрый. Есть запрос
ТекстЗапроса = "SELECT $НакладнаяСтроки.Товар [Товар $Справочник.Номенклатура] |, Sum($НакладнаяСтроки.СуммаСНДС) СуммаСуммаСНДС |, Sum($НакладнаяСтроки.Количество) СуммаКоличество |FROM $ДокументСтроки.Накладная AS НакладнаяСтроки With (NOLOCK) |INNER JOIN _1SJOURN AS Журнал With (NOLOCK) ON НакладнаяСтроки.IDDOC = Журнал.IDDOC |WHERE (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= :ДатаНачала) |AND (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) <= :ДатаКонца) |AND ($НакладнаяСтроки.Товар IN (SELECT val FROM #Группа)) |GROUP BY $НакладнаяСтроки.Товар"; ИмяТаблицы="#Группа"; ЗапросSQL.УложитьСписокОбъектов(сзПапок, ИмяТаблицы, "Номенклатура"); Когда тип в табличной части у товара "Справочник.Номенклатура", запрос выбирает данные. Если тип у реквизита ТЧ просто "Справочник", то в запрос пападает 0 строк. Подскажите, как можно типизировать все это дело ? |
|||
1
Sereja
12.09.11
✎
17:47
|
ап
|
|||
2
mikecool
12.09.11
✎
17:49
|
не типизируй SELECT $НакладнаяСтроки.Товар [Товар $Справочник.Номенклатура]
|
|||
3
Evgenchik
12.09.11
✎
17:49
|
+видсправочника36.номенклатура
|
|||
4
Sereja
12.09.11
✎
17:49
|
(2) А что тогда писать в
ЗапросSQL.УложитьСписокОбъектов(сзПапок, ИмяТаблицы, "Номенклатура"); ? |
|||
5
Sereja
12.09.11
✎
17:50
|
(3) А это куда ?
|
|||
6
Sereja
12.09.11
✎
17:52
|
SELECT $НакладнаяСтроки.Товар [Товар $Справочник] Выдает 0 строк из-за накладываемого условия
|
|||
7
mikecool
12.09.11
✎
17:56
|
(4) есть же вроде УложитьСписокОбъектов36?
|
|||
8
Evgenchik
12.09.11
✎
17:58
|
(7) у него ограничения есть
перед группой плюсуй |
|||
9
Sereja
12.09.11
✎
18:02
|
(8) А где про эти 36 есть ? НЕ понятно что с чем плюсовать
http://www.1cpp.ru/docum/html/oledb.html здесь описание не нашел |
|||
10
mehfk
12.09.11
✎
18:03
|
|AND ($НакладнаяСтроки.Товар IN (SELECT val FROM #Группа))
--> |AND ((SUBSTRING($НакладнаяСтроки.Товар,5,9) IN (SELECT val FROM #Группа)) AND (SUBSTRING($НакладнаяСтроки.Товар,1,4) = $ВидСправочника36.Номенклатура)) |
|||
11
Варвар
12.09.11
✎
18:04
|
извращенцы семёрашные.
|
|||
12
Evgenchik
12.09.11
✎
18:04
|
уложить по моему не работает с группами справочника
|
|||
13
mehfk
12.09.11
✎
18:04
|
(11) Снегофилы набежали?
|
|||
14
Evgenchik
12.09.11
✎
18:05
|
(10) изврат
|
|||
15
mehfk
12.09.11
✎
18:06
|
(14) Обоснуй
|
|||
16
Evgenchik
12.09.11
✎
18:08
|
select val from $видсправочника36.номенклатура+#группа
|
|||
17
Sereja
12.09.11
✎
18:08
|
(12) Группы укладываются как список элементов
|
|||
18
trad
12.09.11
✎
18:09
|
офф/2
(Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= :ДатаНачала) - вижу это уже в стопервый раз. И откуда вы этот бред берете ?.. |
|||
19
acsent
12.09.11
✎
18:12
|
(18) Но там же нет просто поля с датой
|
|||
20
mehfk
12.09.11
✎
18:12
|
(0)
|WHERE (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= :ДатаНачала) |AND (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) <= :ДатаКонца) --> |Журнал.Date_Time_IDDoc BETWEEN :ДатаНачала AND :ДатаКонца~ |
|||
21
Sereja
12.09.11
✎
18:12
|
(18) Конструктором строиться (qryMakerom)
|
|||
22
Evgenchik
12.09.11
✎
18:12
|
(17) если типизированы
|
|||
23
mehfk
12.09.11
✎
18:15
|
(16) Проверю.
|
|||
24
Sereja
12.09.11
✎
18:15
|
(16)
|AND ($НакладнаяСтроки.Товар IN (SELECT val from $ВидСправочника36.Номенклатура+#Группа)) State 42000, native 170, message [Microsoft][ODBC SQL Server Driver][SQL Server]Line 8: Incorrect syntax near ' I8'. |
|||
25
mehfk
12.09.11
✎
18:16
|
(24) Напиши как в (10)
|
|||
26
Sereja
12.09.11
✎
18:18
|
(25) Написал. Без ошибок выполняется, возвращает 0 строк
|
|||
27
Evgenchik
12.09.11
✎
18:26
|
посмотри на форуме 1срр правильный синтаксис видсправочника
|
|||
28
Нуф-Нуф
12.09.11
✎
18:29
|
как это было давно...
|
|||
29
mehfk
12.09.11
✎
18:31
|
Какой тип задан в конфигураторе у поля "Товар" табличной части документа "Накладная"?
|
|||
30
Sereja
12.09.11
✎
18:33
|
(29) Справочник
|
|||
31
Ёпрст
12.09.11
✎
18:33
|
(0)
прибавить вид справочника в тексте запроса и типизировать как [$Справочник] |
|||
32
acsent
12.09.11
✎
18:33
|
$НакладнаяСтроки.Товар IN (SELECT $ВидСправочника36.Номенклатура+val from #Группа)
|
|||
33
Sereja
12.09.11
✎
18:37
|
(31,32) финальный вариант
SELECT Номенклатура.ID [НоменклатураСсылка $Справочник] |, Sum($НакладнаяСтроки.Количество) СуммаКоличество |, Sum($НакладнаяСтроки.СуммаСНДС) СуммаСуммаСНДС |FROM _1SJOURN AS Журнал With (NOLOCK) |INNER JOIN $ДокументСтроки.Накладная AS НакладнаяСтроки With (NOLOCK) ON Журнал.IDDOC = НакладнаяСтроки.IDDOC |INNER JOIN $Справочник.Номенклатура AS Номенклатура With (NOLOCK) ON $НакладнаяСтроки.Товар = Номенклатура.ID |WHERE (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= :ДатаНачала) |AND (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) <= :ДатаКонца) |AND (Номенклатура.ID IN (SELECT $ВидСправочника36.Номенклатура+val from #Группа)) |GROUP BY Номенклатура.ID 0 строк. Но выполняется |
|||
34
Boroda
12.09.11
✎
18:39
|
Попробуй так:
|AND (Right(НакладнаяСтроки.Товар,9)IN (SELECT val FROM #Группа)) |
|||
35
Evgenchik
12.09.11
✎
18:39
|
как группу укладываешь?
|
|||
36
Sereja
12.09.11
✎
18:40
|
(35)
ЗапросSQL.УложитьСписокОбъектов(сзПапок, ИмяТаблицы, "Номенклатура"); |
|||
37
mehfk
12.09.11
✎
18:40
|
INNER JOIN $Справочник.Номенклатура AS Номенклатура With (NOLOCK) ON $НакладнаяСтроки.Товар = Номенклатура.ID
... AND (Номенклатура.ID IN (SELECT $ВидСправочника36.Номенклатура+val from #Группа)) В корне неверно! |
|||
38
Sereja
12.09.11
✎
18:41
|
(37) Это я пытался по другому идти просто.
Вот финальный SELECT $НакладнаяСтроки.Товар [Товар $Справочник] |, Sum($НакладнаяСтроки.СуммаСНДС) СуммаСуммаСНДС |, Sum($НакладнаяСтроки.Количество) СуммаКоличество |FROM $ДокументСтроки.Накладная AS НакладнаяСтроки With (NOLOCK) |INNER JOIN _1SJOURN AS Журнал With (NOLOCK) ON НакладнаяСтроки.IDDOC = Журнал.IDDOC |WHERE (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= :ДатаНачала) |AND (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) <= :ДатаКонца) |AND ($НакладнаяСтроки.Товар IN (SELECT $ВидСправочника36.Номенклатура+val from #Группа)) |GROUP BY $НакладнаяСтроки.Товар |
|||
39
Sereja
12.09.11
✎
18:41
|
(35)
ИмяТаблицы="#Группа"; ЗапросSQL.УложитьСписокОбъектов(сзПапок, ИмяТаблицы, "Номенклатура"); |
|||
40
mehfk
12.09.11
✎
18:41
|
(36) Проверь
Select Val From #Группа Что покажет? |
|||
41
Sereja
12.09.11
✎
18:47
|
(40) Таблицу ссылок каких-то вернул.
|
|||
42
Sereja
12.09.11
✎
18:47
|
+(40) тех, что в папке нужной лежат
|
|||
43
mehfk
12.09.11
✎
18:51
|
в (38) а)проверь даты ДатаНачала и ДатаКонца и б)попробуй убрать
|, Sum($НакладнаяСтроки.СуммаСНДС) СуммаСуммаСНДС |, Sum($НакладнаяСтроки.Количество) СуммаКоличество и GROUP BY $НакладнаяСтроки.Товар |
|||
44
МастерВопросов
12.09.11
✎
18:52
|
автор, в (34) тебе все написали
|
|||
45
Sereja
12.09.11
✎
18:57
|
(44) Только хотел отписать
Строки в тз есть, но "ОБъектНеНайден" пишет. Во всех строках где ссылка на справочник должны быть |
|||
46
Ёпрст
12.09.11
✎
18:57
|
|$НакладнаяСтроки.Товар [Товар $Справочник]
|, Sum($НакладнаяСтроки.Количество) СуммаКоличество |, Sum($НакладнаяСтроки.СуммаСНДС) СуммаСуммаСНДС |from $ДокументСтроки.Накладная AS НакладнаяСтроки (NOLOCK) |inner join _1SJOURN AS Журнал (NOLOCK) ON Журнал.IDDOC = НакладнаяСтроки.IDDOC |and Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |Where ($НакладнаяСтроки.Товар IN (SELECT $ВидСправочника36.Номенклатура+val from #Группа)) |GROUP $НакладнаяСтроки.Товар |
|||
47
Ёпрст
12.09.11
✎
18:58
|
+46 group by
|
|||
48
Sereja
12.09.11
✎
19:07
|
(46) 0 строк.
|
|||
49
Ёпрст
12.09.11
✎
19:09
|
(48) без фильтра по номенклатуре, что кажет ?
Товар в табличной части, какого типа ? Тип <Справочник> без вида, или <Неопределенный> ? |
|||
50
Sereja
12.09.11
✎
19:10
|
(49) Епрст, ты круче всех, я это знал
Все робит. Огромнейшее спасибо |
|||
51
Sereja
12.09.11
✎
19:10
|
(49) Товар в ТЧ справочник
|
|||
52
Sereja
12.09.11
✎
19:11
|
Вот финальный работающи
|
|||
53
Sereja
12.09.11
✎
19:11
|
SELECT $НакладнаяСтроки.Товар [Товар $Справочник]
|, Sum($НакладнаяСтроки.Количество) СуммаКоличество |, Sum($НакладнаяСтроки.СуммаСНДС) СуммаСуммаСНДС |from $ДокументСтроки.Накладная AS НакладнаяСтроки (NOLOCK) |inner join _1SJOURN AS Журнал (NOLOCK) ON Журнал.IDDOC = НакладнаяСтроки.IDDOC |WHERE (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= :ДатаНачала) |AND (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) <= :ДатаКонца) |AND ($НакладнаяСтроки.Товар IN (SELECT $ВидСправочника36.Номенклатура+val from #Группа)) |GROUP BY $НакладнаяСтроки.Товар |
|||
54
МастерВопросов
12.09.11
✎
19:13
|
(48) запрос (46) будет работать если у тебя в табличной части поле неопределенного вида "Справочник". Это раз.
А два, ты уверен что в строках твоего документа именно ссылки на справочник Номенклатура в поле "номенклатура" лежат? |
|||
55
Ёпрст
12.09.11
✎
19:13
|
(53) всё же касты и обрезания, можно смело выкинуть, достаточно модификатора и привет, как в (46)
|
|||
56
Ёпрст
12.09.11
✎
19:14
|
(54) он фильтрует же запрос списком только из номенклатуры.
Если в списке будет что-то еще, придётся переписывать. |
|||
57
Ёпрст
12.09.11
✎
19:15
|
+56 да и .., без фильтра тоже будет работать.
|
|||
58
Humandra
12.09.11
✎
19:19
|
(55) Не просто можно, а нужно. Иначе это такой тормоз будет на хоть сколько приличном объеме данных, ибо индекс не будет использоваться.
|
|||
59
mehfk
12.09.11
✎
19:20
|
Т.е (38) не работает, а (53) работает?
|
|||
60
МастерВопросов
12.09.11
✎
19:25
|
(56) кстати если уж зашел разговор про поля неопределенного вида. Как организуется запрос к таблице такого вида: один столбец- вид метаданных, а второй- собственно сама ссылка на объект. Нужно запросом получить типизированные ссылки. Причем какой вид метаданных заранее совершенно неизвестно.
|
|||
61
МастерВопросов
12.09.11
✎
19:38
|
(60) например таблица _1SBKTTL
и поля "SC0"= Субконто1, "VSC0"= ВидСубконто1. В качестве вида субконто может быть перечисление, Справочник, Документ. |
|||
62
Ёпрст
12.09.11
✎
19:44
|
(60) типизация Cубконто
|
|||
63
Ёпрст
12.09.11
✎
19:45
|
||||
64
МастерВопросов
13.09.11
✎
05:13
|
(62) "ИтогиОстаткиБух.SC0 [Субконто1 $Субконто]"
Для типизации поля "Субконто1", не найдено дополнительное типизирующее поле. Что в общем то и логично, т.к. типизируещее поле лежит в "VSC0" |
|||
65
mehfk
13.09.11
✎
05:27
|
(64)
ИтогиОстаткиБух.VSC0 [Субконто1_Вид] |
|||
66
МастерВопросов
13.09.11
✎
06:04
|
(65) объясни поподробнее пожалуйста
|
|||
67
МастерВопросов
13.09.11
✎
06:20
|
(65) ничего кроме названия поля в результатах запроса не изменилось
|
|||
68
МастерВопросов
13.09.11
✎
06:21
|
(62) если я делаю так:
"ИтогиОстаткиБух.SC0 [Субконто1 $Справочник.Контрагенты]," то ссылки вполне себе преобразуются в Контрагентов. Но я хочу не только Контрагентов получать. |
|||
69
Mikeware
13.09.11
✎
07:45
|
(68) Ты (63) прочитал?
|
|||
70
МастерВопросов
13.09.11
✎
12:52
|
(65) спасибо!
Так заработало: |ИтогиОстаткиБух.SC0 [Субконто1 $Субконто], |ИтогиОстаткиБух.VSC0 Субконто1_вид, |
|||
71
Злопчинский
14.09.11
✎
02:31
|
в принципе, на данный момент можно считать что 7.7 - умерла.. наконец-то.. остались одни некрофилы...
|
|||
72
NS
14.09.11
✎
02:41
|
7.7 умерла в мелких конторах, и в крупных "свежих"
Конторы у которых очень много и хорошо было написано в семерке - как правило на восьмерку не переходят, нет смысла. Я про опер. учет. То есть реально остались те, кто поддерживает хорошо автоматизированный на семерке крупный бизнес, естественно не на тиражных решениях. |
|||
73
шайтан
14.09.11
✎
02:54
|
(72) Да, нет смысла, пока не встанет вопрос хорошо защитить данные
|
|||
74
NS
14.09.11
✎
10:17
|
(73) От кого?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |