|
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) а проиндексировать ВТ ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |