Имя: Пароль:
1C
1С v8
Соединение таблиц в запросе
0 prishliemail
 
07.11.13
14:05
Добрый день! :)
Подскажите пожалуйста по запросам.

У нас есть 2 таблицы, - Таблица1 и Таблица2. Если значение Таблица1.Реквизит1 = Истина, тогда Соединить Таблицу1 и Таблицу2 по Таблица1.Ссылка= Таблица2.Поле1.
Если же зщначение Таблица1.Реквизит1 = Ложь, то Соединить Таблицу1 и Таблицу2 по Таблица1.Ссылка= Таблица2.Поле2.

Подскажите, как написать условие для выбора связи?

Заранее спасибо :)
1 MSII
 
07.11.13
14:08
(Таблица1.Реквизит1 И НужноеУсловиеСоединения1) ИЛИ (НЕ Таблица1.Реквизит1 И НужноеУсловиеСоединения2)
2 catena
 
07.11.13
14:09
соединение...
по
(Таблица1.Реквизит1 = Истина и Таблица1.Ссылка= Таблица2.Поле1)
или
(Таблица1.Реквизит1 = Ложь и Таблица1.Ссылка= Таблица2.Поле2)
3 tan76
 
07.11.13
14:12
ВЫБРАТЬ
    Таблица1.Реквизит1,
    Таблица1.Ссылка,
    Таблица2.Поле1,
    Таблица2.Поле2
ИЗ
    Таблица1 КАК Таблица1
        ЛЕВОЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2
        ПО (ВЫБОР
                КОГДА Таблица1.Реквизит1
                    ТОГДА Таблица1.Ссылка = Таблица2.Поле1
                ИНАЧЕ Таблица1.Ссылка = Таблица2.Поле2
            КОНЕЦ)
4 GANR
 
07.11.13
14:18
(0) А чтобы соединение использовало индексы (если таковые имеются) 1С рекомендует делать не через ИЛИ, а вот так:

ВЫБРАТЬ
    Таблица1.Поле1,
    Таблица1.Поле5,
    Таблица2.Поле6
ИЗ
    Таблица1 КАК Таблица1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2
        ПО Таблица1.Поле2 = Таблица2.Поле2
ГДЕ
    Таблица1.Поле1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Таблица1.Поле1,
    Таблица1.Поле5,
    Таблица2.Поле6
ИЗ
    Таблица1 КАК Таблица1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2
        ПО Таблица1.Поле3 = Таблица2.Поле3
ГДЕ
    НЕ Таблица1.Поле1
5 prishliemail
 
07.11.13
17:52
Всем большое спасибо!

(3) сделала как Вы посоветовали
Основная теорема систематики: Новые системы плодят новые проблемы.