|
Создание запроса | ☑ | ||
---|---|---|---|---|
0
fantomask
10.09.12
✎
07:30
|
Необходимо создать такой запрос, который бы возвращал список номенклатуры из таблицы Товары любого документа. В качестве параметра передается ссылка на документ. Подскажите пожалуйста как это реализовать.. Попробовала топорный вариант, но он не работает. Знаю что не правильно составлен запрос, но все же.
ВЫБРАТЬ Товары.Номенклатура ИЗ Товары КАК Товары ГДЕ Товары.Ссылка = &ДокументОснование Товары - это временная таблица с полями: Номенклатура - тип строка Ссылка - тип ЛюбаяСсылка |
|||
1
Amra
10.09.12
✎
07:32
|
"ПопробовалА" и "пол мужской" - проблема наверное в этом)
|
|||
2
Rie
10.09.12
✎
07:32
|
(0) А как создаётся временная таблица Товары?
Условие ГДЕ кажется не имеющим смысла - поскольку Товары, если я правильно понял, и так получены из некоторого документа. |
|||
3
Светлый Гений
10.09.12
✎
07:34
|
(0)надо для начала понять, как формируется эта временная таблица Товары
|
|||
4
Толич
10.09.12
✎
07:38
|
Не проще в текст запроса добавлять вид документа перед выполнением, а затем ссылку только в параметр загонять?
|
|||
5
fantomask
10.09.12
✎
07:39
|
просто в конструкторе запроса нажал на кнопку Создать временную таблицу и добавил необходимые на мой взгляд поля и все
|
|||
6
Светлый Гений
10.09.12
✎
07:40
|
(5)ты молодец!
|
|||
7
fantomask
10.09.12
✎
07:41
|
(6) да я только учусь я не знаю как правильно делать
|
|||
8
Светлый Гений
10.09.12
✎
07:43
|
(7)ну тогда ты может быть все-таки покажешь, как формируется временная таблица?
|
|||
9
skiller3000
10.09.12
✎
07:43
|
я бы делал так:
ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ Товары.Номенклатура ИЗ &Товары КАК Товары ГДЕ Товары.Ссылка = &Ссылка" МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(ДокументСсылка)); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Товары", МетаданныеДокумента.ПолноеИмя() + ".Товары"); Запрос.Установить("Ссылка", ДокументСсылка); Результат = Запрос.Выполнить().Выгрузить(); |
|||
10
Толич
10.09.12
✎
07:45
|
(9) + 1
|
|||
11
Юлия-ученик
10.09.12
✎
07:46
|
(9) спасибо сейчас попробую
|
|||
12
Rie
10.09.12
✎
07:46
|
(7) Скорее всего, не нужна тут временная таблица.
Можно сделать, например, так: Запрос = Новый Запрос( "ВЫБРАТЬ | ДокТовары.Номенклатура |ИЗ | Документ."+ДокОснование.Метаданные().Имя+".Товары КАК ДокТовары |ГДЕ | ДокТовары.Ссылка = &ДокументОснование"; Запрос.Установить("ДокументОснование",ДокОснование); |
|||
13
skiller3000
10.09.12
✎
07:48
|
(12) так тоже можно, но в моем случае, можно пользоваться конструктором запроса, что легче для новичка
|
|||
14
Rie
10.09.12
✎
07:52
|
(13) Согласен.
В (12) я не возражаю - просто когда писал, ещё не видел (9). |
|||
15
mih_io
10.09.12
✎
08:07
|
а это, если мы знаем ссылку на документ, всегда уверены что есть таблица Товары и Колонка номенклатура, может просто сделать
ДокОснование.Товары.ВыгрузитьКолонку("Номенклатура") |
|||
16
Defender aka LINN
10.09.12
✎
08:08
|
(9) Мамочки...
|
|||
17
Defender aka LINN
10.09.12
✎
08:12
|
(15) Молодец. Ничего, что это запрос, который тебе весь объект считает?
|
|||
18
Светлый Гений
10.09.12
✎
08:13
|
(15)+100500
|
|||
19
mih_io
10.09.12
✎
08:15
|
(17) нет, понятное дело, что если в документе очень уж много строк, думаю больше 500 и нужны будут какие-то реквизиты номенклатуры, то лучше их изначально в запросе доставать. Чем через точку в цикле при обходе. Но это же частые случаи.
|
|||
20
Defender aka LINN
10.09.12
✎
08:22
|
(19) А при чем тут реквизиты номенклатуры? Ты вот этим "Документ.Товары" уже считал ВЕСЬ объект из базы ради одной несчастной колонки.
|
|||
21
Восточный Парень
10.09.12
✎
08:32
|
"ВЫБРАТЬ
Товары.Номенклатура ИЗ " + ДокументОснование.Метаданные().Имя + ".Товары КАК Товары ГДЕ Товары.Ссылка = &ДокументОснование" |
|||
22
Восточный Парень
10.09.12
✎
08:33
|
Сори
|
|||
23
Восточный Парень
10.09.12
✎
08:33
|
"ВЫБРАТЬ
Товары.Номенклатура ИЗ Документ." + ДокументОснование.Метаданные().Имя + ".Товары КАК Товары ГДЕ Товары.Ссылка = &ДокументОснование" |
|||
24
mih_io
10.09.12
✎
08:46
|
(20) с точки зрения теории всегда считал, что при запросе надо еще позиционироваться на данный документ, нежели чем прямое чтение. Еще раз говорю, все зависит только в том, надо ли считать реквизиты номенклатуры.
Сделал тест того, про что вы говорите, в документе в этой таблице около 10 тысяч строк http://clip2net.com/s/2hJsT |
|||
25
hhhh
10.09.12
✎
08:55
|
(24) наверняка ведь сжульничали, документ перед этим открывали.
|
|||
26
mih_io
10.09.12
✎
08:58
|
(25) проверил еще раз, похоже открывал )
|
|||
27
mih_io
10.09.12
✎
08:58
|
||||
28
Defender aka LINN
10.09.12
✎
10:28
|
(24) Ну, я тебе с точки зрения практики скажу: любое обращение через точку - это запрос. Только которые все поля выбирает, а не только нужные.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |