Имя: Пароль:
1C
1С v8
Как внутри запроса выбрать номенклатуру из ТЧ документа и передать вирт.таблице?
0 pavname
 
19.05.13
12:20
Ребят, а как внутри запроса выбрать номенклатуру из ТЧ документа и передать виртуальной таблице в качестве параметра или условия.
Почему-то не получается. Прилагаю пример запроса:

   |ВЫБРАТЬ
   |    ЗаказПоставщикуАвтозапчастиТовар.Номенклатура
   |ИЗ
   |    Документ.ЗаказПоставщикуАвтозапчасти.Товар КАК ЗаказПоставщикуАвтозапчастиТовар
   |
   |СГРУППИРОВАТЬ ПО
   |    ЗаказПоставщикуАвтозапчастиТовар.Номенклатура
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ТоварыНаСкладахОстатки.Номенклатура,
   |    ТоварыНаСкладахОстатки.КоличествоОстаток
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки";



СПАСИБО за Ваш любой ответ.
1 shuhard
 
19.05.13
12:21
(0) попробуй внятно сформулировать, что должен сделать запрос
2 pavname
 
19.05.13
12:22
Запрос должен выдать остатки по номенклатуре которая присутствует в табличной части документа.
3 Фокусник
 
19.05.13
12:24
(0) левое соединение
4 pavname
 
19.05.13
12:27
(3) Точно. Спасибо за подсказку.
А все-же, если Поместить во временную таблицу данные первого запроса можно ли будет использовать ее в качестве параметра вирт. таблицы ?
5 HEKPOH
 
19.05.13
12:28
можно
6 Mitriy
 
19.05.13
12:28
|ВЫБРАТЬ
   |    ЗаказПоставщикуАвтозапчастиТовар.Номенклатура
   |ПОМЕСТИТЬ ВТ_Номенклатура
   |ИЗ
   |    Документ.ЗаказПоставщикуАвтозапчасти.Товар КАК ЗаказПоставщикуАвтозапчастиТовар
   |
   |СГРУППИРОВАТЬ ПО
   |    ЗаказПоставщикуАвтозапчастиТовар.Номенклатура
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////

   |ВЫБРАТЬ
   |    ТоварыНаСкладахОстатки.Номенклатура,
   |    ТоварыНаСкладахОстатки.КоличествоОстаток
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах.Остатки(
   |            ,
   |            Номенклатура В
   |                (ВЫБРАТЬ РАЗЛИЧНЫЕ
   |                    ВТ_Номенклатура.Номенклатура
   |                ИЗ
   |                    ВТ_Номенклатура КАК ВТ_Номенклатура)) КАК ТоварыНаСкладахОстатки";
7 pavname
 
19.05.13
12:35
Mitriy Спасибо за науку.
Вопрос исчерпан.
8 pavname
 
19.05.13
12:49
Похоже еще вопрос не исчерпан...
Пробую способ - левое соединение.
Дело в том что ТЧ документа должна быть предварительно свернута по номенклатуре. Не подскажете - значит способ левое соединение мне не подойдет ? Или есть способ ?
9 pavname
 
19.05.13
12:51
Забыл добавить способ с передачей параметра получился, но кажется несколько громоздким.
10 shuhard
 
19.05.13
12:52
(8)[Дело в том что ТЧ документа должна быть предварительно свернута по номенклатуре. Не подскажете - значит способ левое соединение мне не подойдет ? Или есть способ ?]
кто на ком стоял ?
11 Mitriy
 
19.05.13
12:52
(8) соединение - не оптимальный способ, потому что сначала получаются все значения, а потом только отрабатывает соединение. Чем тебе способ в (6) не нравится? Там можешь сначала во временной таблице отобрать-свернуть, что надо...
12 pavname
 
19.05.13
12:56
(11)Это понятно. Все работает без вопросов. Я просто хочу разобрать наиболее ОПТИМАЛЬНЫЙ и КРАСИВЫЙ способ, хотя понимаю что как правило это взаимоисключающие понятия.
13 pavname
 
19.05.13
13:00
Просто хотел понять можно ли при левом соединении предварительно в этом-же подзапросе свернуть по номенклатуре, например с помощью функции ВЫБРАТЬ РАЗЛИЧНЫЕ (или другой). Но похоже что это нельзя. ТАК ?
14 Mitriy
 
19.05.13
13:00
О вкусах не спорят, но если запрос не оптимален, он мне не покажется красивым...
15 Mitriy
 
19.05.13
13:02
(13) все можно сделать без временных таблиц, во вложенных запросах, но, опять же, это будет не оптимально, а в каких-то случаях даже валить базу...
16 pavname
 
19.05.13
13:05
Спасибо Mitriy. Вы Хороший человек. Вопрос закрыт.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший