Имя: Пароль:
1C
1С v8
8.1. СКД. Оптимизация запроса.
,
0 Быдлокодер 80 lvl
 
01.12.11
17:28
Здравствуйте!
Есть 2 набора данных. Во втором наборе получаются данных из таблицы остатков регистра накопления. Как можно указать второму набору, что таблицу остатков надо формировать только по номенклатуре, которая получена первым набором, а не по всей?
1 Ненавижу 1С
 
гуру
01.12.11
17:32
Номенклатура В (Выбрать Номенклатура из Т)
2 Быдлокодер 80 lvl
 
01.12.11
17:34
(1) Я правильно понимаю, что система поймет меня, если я пропишу в условиях виртуальной таблицы второго набора выборку номенклатуры из первого набора?
3 Быдлокодер 80 lvl
 
01.12.11
17:36
И еще такой вопрос - выбираемые данные наборы получают последовательно? Т.е. Сначала выполняется первый набор, потом второй, а затем идет левое соединение?
4 Быдлокодер 80 lvl
 
01.12.11
17:45
=UP=
5 Fr1eNd
 
01.12.11
17:47
лучше сделай это прям в запросе
6 rs_trade
 
01.12.11
17:49
(3)а кто знает что там у тебя получается и идет? чего то понаписал в своей консольке, а здесь спрашиваешь как оно у меня будет работать.
7 IronDemon
 
01.12.11
17:49
(0) Пакетный запрос
8 Быдлокодер 80 lvl
 
01.12.11
17:50
(6) Я спрашиваю вообще принцип работы СКД, а не что там у меня работает или нет.
В одном запросе не получится, нужны именно 2 набора данных (из-за расчета итогов).
9 IronDemon
 
01.12.11
17:51
ВЫБРАТЬ
   Номенклатура.Ссылка КАК НужнаяНомеклатура
ПОМЕСТИТЬ ВТ
ИЗ
   Справочник.Номенклатура КАК Номенклатура
{ГДЕ
   Номенклатура.Ссылка.* КАК НужнаяНомеклатура}
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладахОстатки.Номенклатура,
   ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки(
           ,
           Номенклатура В
               (ВЫБРАТЬ
                   ВТ.НужнаяНомеклатура
               ИЗ
                   ВТ КАК ВТ)) КАК ТоварыНаСкладахОстатки
10 Fr1eNd
 
01.12.11
17:52
(9) Вот примерно так и надо
11 Быдлокодер 80 lvl
 
01.12.11
17:53
Таблица, получаемая после выполнения первого набора данных:

Номенклатура       Дата отгрузки    Отгрузить    Количество на складах

Пряник             30.11.2011         5                  100
Печенье            05.12.2011         4                  200
Пряник             10.12.2011         8                  100

Если правую колонку получать в пакетном запросе, то в итогах будет 400. Если двумя наборами - то 300, как и нужно.
12 Быдлокодер 80 lvl
 
01.12.11
17:53
+ (11) тоесть отдельным набором.
13 hhhh
 
01.12.11
18:01
(12) двумя тоже 400.
14 Быдлокодер 80 lvl
 
01.12.11
18:03
(13) Двумя наборами как раз 300 считает, вчера делал. Мне здесь же подсказали, сам я не знал. И оно действительно так. До этого был пакетный запрос и считало 400.
15 hhhh
 
01.12.11
18:05
тогда (6)
16 Быдлокодер 80 lvl
 
01.12.11
18:07
Конкретизирую вопрос.

ВЫБРАТЬ
   ТоварыНаСкладахОстатки.Номенклатура КАК НоменклатураИзНабораОстатковТоваров,
   ВЫРАЗИТЬ(ТоварыНаСкладахОстатки.КоличествоОстаток КАК ЧИСЛО(20, 3)) КАК НаСкладах
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОкончанияГраница, {(Склад = &Склад)}) КАК ТоварыНаСкладахОстатки

Как передать в этот запрос в условие виртуальной таблицы нечто вроде "Номенклатура В (Выбрать Номенклатура Из НаборДанных1)"?
17 Armando
 
01.12.11
20:58
(16) в условии виртуальной таблице пиши "Номенклатура В (&Номенклатура)"
соединяешь два набора по номенклатуре. в поле параметр выбираешь Номенклатура и ставь галку "Список параметров"
18 Armando
 
01.12.11
21:01
+(17) в связях наборов источник связи должен быть твой НаборДанных1
19 Быдлокодер 80 lvl
 
02.12.11
04:34
(17) Спасибо, это именно то, что нужно было. Все работает.
20 golden-pack
 
02.12.11
05:39
(9) а проиндексировать ВТ ?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn