Имя: Пароль:
1C
1C 7.7
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) От кого?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший