Имя: Пароль:
1C
1С v8
Объединение одинаковых запросов с разными параметрами в один
0 s-n-a-y
 
06.03.14
14:39
У меня есть два одинаковых запроса. В них передаются разные параметры. Есть ли способ их объединить в один?

Например, есть запрос

ВЫБРАТЬ ПЕРВЫЕ 1
    КонтактнаяИнформация.Представление
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Объект = &Объект
    И КонтактнаяИнформация.Вид = &Вид

Я вызываю его два раза с разными параметрами. А можно ли получить данные за один раз?
1 vicof
 
06.03.14
14:41
Объединить все
2 salvator
 
06.03.14
14:41
(0) ОБЪЕДИНИТЬ, не?
3 vicof
 
06.03.14
14:42
Объект В (&Объект)
4 Случайный прохожий
 
06.03.14
14:42
Создай еще 2 параметра Объект2 и Вид2 и перепиши условие запроса

ГДЕ
    (КонтактнаяИнформация.Объект = &Объект
    И КонтактнаяИнформация.Вид = &Вид)
ИЛИ ( КонтактнаяИнформация.Объект = &Объект2
    И КонтактнаяИнформация.Вид = &Вид2)

Передавай в запрос сразу 4 параметра
5 s-n-a-y
 
06.03.14
14:45
4, а так скорость выполнения запроса выше, чем если выполнять запрос два раза?
6 Ненавижу 1С
 
гуру
06.03.14
14:46
(5) нет
7 vicof
 
06.03.14
14:46
(5) Замерь
8 s-n-a-y
 
06.03.14
15:00
(4) мне надо, чтобы данные выбирались как отдельные поля, т.е. не смешивались.
9 salvator
 
06.03.14
15:01
(8) Поподробнее, пожалуйста.
10 DS
 
06.03.14
15:04
(8) Это уже соединение.
11 s-n-a-y
 
06.03.14
15:05
если делать как описал (4), то при извлечении результата из запроса нельзя понять какая строка каким параметрам соответствует.
12 s-n-a-y
 
06.03.14
15:08
(3), можно подробнее?
13 DS
 
06.03.14
15:09
(11) Добавляй еще одно поле "НазваниеПараметра"
14 DS
 
06.03.14
15:11
ВЫБРАТЬ
    КонтактнаяИнформация.Вид
    КонтактнаяИнформация.Представление
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Объект = &Объект
    И КонтактнаяИнформация.Вид В (&Виды)
15 s-n-a-y
 
06.03.14
15:19
В общем, я хотел сделать что-то вроде этого

ВЫБРАТЬ ПЕРВЫЕ 1
    КонтактнаяИнформация.Представление,
    КонтактнаяИнформация1.Представление КАК Представление1
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация,
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация1
ГДЕ
    КонтактнаяИнформация.Объект = &Объект
    И КонтактнаяИнформация.Вид = &Вид
    И КонтактнаяИнформация1.Объект = &Объект2
    И КонтактнаяИнформация1.Вид = &Вид2
16 Зойч
 
06.03.14
15:20
дважды соеинение с основной таблицей объектов
17 s-n-a-y
 
06.03.14
15:21
(16), подробнее пожалуйста
18 kosts
 
06.03.14
15:24
(15)

ВЫБРАТЬ ПЕРВЫЕ 1
    КонтактнаяИнформация.Представление
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    1 как номер,
    КонтактнаяИнформация.Объект = &Объект
    И КонтактнаяИнформация.Вид = &Вид
объединить все
ВЫБРАТЬ ПЕРВЫЕ 1
    2,
    КонтактнаяИнформация.Представление
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Объект = &Объект2
    И КонтактнаяИнформация.Вид = &Вид2
19 kosts
 
06.03.14
15:25
так лучше

ВЫБРАТЬ ПЕРВЫЕ 1
    1 как номер,
    КонтактнаяИнформация.Представление
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Объект = &Объект
    И КонтактнаяИнформация.Вид = &Вид
объединить все
ВЫБРАТЬ ПЕРВЫЕ 1
    2,
    КонтактнаяИнформация.Представление
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Объект = &Объект2
    И КонтактнаяИнформация.Вид = &Вид2
20 timurhv
 
06.03.14
15:28
(17) Полное соединение по истина в этом случае происходит, т.е. строки множатся.
21 s-n-a-y
 
06.03.14
15:28
(19), спасибо
22 s-n-a-y
 
06.03.14
15:40
(19), все же так данные выводятся в двух разных строках. А мне надо, чтобы в одной, но как разные поля, см. (15)
23 kosts
 
06.03.14
20:42
(22) Ну можно так попробовать (не уверен, что Максимум сработает как хочется, ни разу не пробовал такой вариант...)

ВЫБРАТЬ
Максимум(Представление1) как Представление1,
Максимум(Представление2) как Представление2
из (
ВЫБРАТЬ ПЕРВЫЕ 1
    КонтактнаяИнформация.Представление как Представление1,
    null как Представление2
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Объект = &Объект
    И КонтактнаяИнформация.Вид = &Вид
объединить все
ВЫБРАТЬ ПЕРВЫЕ 1
    null,
    КонтактнаяИнформация.Представление
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Объект = &Объект2
    И КонтактнаяИнформация.Вид = &Вид2) как Таблица
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn