Имя: Пароль:
1C
1С v8
Как передать табличную часть документа в параметр
,
0 Vendetta
 
04.12.13
13:00
Добрый день,очень нужна помощь.
Нужно изменить запрос так чтобы данные брались не из таблицы документа а  из параметров, т.е мне нужно передать табличную часть в параметры,как это сделать? Вот пример кода:
Запрос = Новый Запрос;
      Запрос.Текст =  "ВЫБРАТЬ РАЗЛИЧНЫЕ
                      |    ЗаказПокупателяТовары.Номенклатура КАК Номенклатура,
                      |    ЗаказПокупателяТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
                      |ПОМЕСТИТЬ ТоварыИзДокумента
                      |ИЗ
                      |    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
                      |ГДЕ
                      |    ЗаказПокупателяТовары.Ссылка = &Ссылка
                      |
                      |ИНДЕКСИРОВАТЬ ПО
                      |    Номенклатура,
                      |    ХарактеристикаНоменклатуры
                      |;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ
                      |    ЦеныНоменклатурыСрезПоследних.Номенклатура,
                      |    ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры,
                      |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
                      |ИЗ
                      |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                      |            &МоментВремени,
                      |            Номенклатура В
                      |                    (ВЫБРАТЬ
                      |                        ТоварыИзДокумента.Номенклатура
                      |                    ИЗ
                      |                        ТоварыИзДокумента)
                      |                И ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.Инвойс)
                      |                И (ХарактеристикаНоменклатуры В
                      |                        (ВЫБРАТЬ
                      |                            ТоварыИзДокумента.ХарактеристикаНоменклатуры
                      |                        ИЗ
                      |                            ТоварыИзДокумента)
                      |                    ИЛИ ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))) КАК ЦеныНоменклатурыСрезПоследних";
                      
                      
    Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
    Запрос.УстановитьПараметр("Ссылка", Ссылка)
1 Wobland
 
04.12.13
13:02
а сразу выбрать из неё?
2 Vendetta
 
04.12.13
13:04
ну да,нужно сразу выбирать
3 Wobland
 
04.12.13
13:04
(2) без всяких параметров
4 chelentano
 
04.12.13
13:05
кто-нибудь что-нибудь понял?
5 Wobland
 
04.12.13
13:07
(4) я понял. автор думает, что у него какая-то проблема, а её нет
6 Vendetta
 
04.12.13
13:08
у меня сейчас данные берутся из Документ.ЗаказПокупателя.Товары,а документ то еще не записан,поэтому нужно передавать эту табличную часть в параметр и оттуда брать данные
7 Рэйв
 
04.12.13
13:08
(0)
спТовары=Док.Товары.ВыгрузитьКолонку("Номенклатура");
Запрос.УстановитьПараметр("Ном",спТовары);

и в запросе
Номенклатура В (&спТовары)


Кажется автор силится оптимизировать запрос:-)
8 Vendetta
 
04.12.13
13:09
спасибо большое!)
9 Рэйв
 
04.12.13
13:09
*Номенклатура В (&Ном)
10 chelentano
 
04.12.13
13:10
(8) или выгружай ТЧ в ТЗ и в запросе выбирай данные из ТЗ
11 Лефмихалыч
 
04.12.13
13:11
Запрос = Новый Запрос;
      Запрос.Текст =  "ВЫБРАТЬ РАЗЛИЧНЫЕ
                      |    ЗаказПокупателяТовары.Номенклатура КАК Номенклатура,
                      |    ЗаказПокупателяТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
                      |ПОМЕСТИТЬ ТоварыИзДокумента
                      |ИЗ
                      |    &ТЧ КАК ЗаказПокупателяТовары
"

Запрос.УстановитьПараметр("ТЧ", Товары);
12 Torquader
 
04.12.13
13:16
Если документ не записан, то зачем вообще делать запрос, который работает по базе данных.
Если есть табличная часть в памяти (объект Документ), то выборка из неё не потребует обращение к базе данных (точнее, обращение будет только для "разыменовывания" ссылок).
13 Vendetta
 
04.12.13
14:29
работает)спасибо ребята!
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn