Имя: Пароль:
1C
1С v8
Соединение в запросе по условию NULL
,
0 marinell
 
19.04.13
16:35
Помогите, пожалуйста, туплю.
Есть запрос на 2 таблицы (обе по проводкам БУ), их нужно соединить так, чтобы слева было все, а справа только NULL.
Суть: если в одном документе только проводка по Дт 91.02, то выводить, а если проводка Дт91.02 сочетается с проводкой Кт91.01, то в лес.

Вот запрос упрощенно:

|    ВЫБРАТЬ
   |        ОборотыРасход.СубконтоДт1,
   |        ОборотыРасход.СуммаОборот
   |    ИЗ
   |        РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
   |                &ДатаНачало,
   |                &ДатаКонец,
   |                Регистратор,
   |                СчетДт В ИЕРАРХИИ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПрочиеРасходы)),
   |                &МассивВС) КАК ОборотыРасход

   |            Левое СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
   |                    &ДатаНачало,
   |                    &ДатаКонец,
   |                    Регистратор,
   |                    ,
   |                    ,
   |                    СчетКт В ИЕРАРХИИ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПрочиеДоходы)),
   |                    &МассивВС) КАК ОборотыДоход
   |            ПО ОборотыРасход.Регистратор = ОборотыДоход.Регистратор
   |                И ОборотыРасход.СубконтоДт1 = ОборотыДоход.СубконтоКт1    И ОборотыРасход.СубконтоДт2 = ОборотыДоход.СубконтоКт2


Пробовала варианты:
ЕСТЬNULL(ОборотыДоход.СуммаОборот, 0) = 0 //условие вообще игнорируется
ОборотыДоход.СуммаОборот = 0 и ОборотыДоход.СуммаОборот = NULL //в этот кусок запроса вообще не заходит. Соединение по условию? В общем, гугление тоже ничего не дало интересного, надеюсь на последнее мистопристанище....
Спасибо!
1 Wobland
 
19.04.13
16:37
говори ГДЕ есть нулл. всё не читал
2 Wobland
 
19.04.13
16:38
гугление, кстати, довольно быстро и внятно говорит, что любая операция с нуллом даёт ложь/хрень
3 wowik
 
19.04.13
16:39
ОборотыДоход.СуммаОборот ЕСТЬ NULL  - так работает?
4 fisher
 
19.04.13
16:42
Можно еще помедитировать для лучшего понимания на
ВЫБРАТЬ
   ВЫБОР
       КОГДА NULL = NULL
           ТОГДА ИСТИНА
       ИНАЧЕ ЛОЖЬ
   КОНЕЦ
5 marinell
 
19.04.13
16:44
(3) работает так же, как и ЕСТЬNULL(ОборотыДоход.СуммаОборот, 0) = 0. То есть, пофиг ему на условие - выводит все подряд
6 Wobland
 
19.04.13
16:45
(5) сравнение с нуллом делается спецоператором(!) ЕСТЬ
7 jsmith82
 
19.04.13
16:46
дело вообще не в нулл
8 jsmith82
 
19.04.13
16:47
не проще из одной таблицы тянуть?
9 Wobland
 
19.04.13
16:47
кстати, да. где СчётДт=нужный И СчётКт=нужный2
10 marinell
 
19.04.13
16:51
Нет, нельзя тянуть из одной таблицы.

Проще говоря, есть 2 документа. Проводки в 1:

ДтХХ - Кт91.01
Дт91.02 - Кт68.02

Проводки во 2:
Дт91.02 - Кт68.02

Если я буду тянуть из одной таблицы, я получу проводки:
1:Дт91.02 - Кт68.02
2:Дт91.02 - Кт68.02

А мне надо только ту, которая идет из документа "самостоятельно":


2:Дт91.02 - Кт68.02
11 marinell
 
19.04.13
16:52
(+10) Поэтому и обороты по регистратору
12 jsmith82
 
19.04.13
16:56
а если поставить так
выбрать *
13 marinell
 
19.04.13
17:01
Вообще все выбирать, что ли? А зачем? Мне нужна выборка по определенному условию, все-то у меня и так выбирается...
14 Aprobator
 
19.04.13
17:12
(0) ответ в (1).
15 Alex Cheerful
 
19.04.13
17:24
Добавь условие ГДЕ ЕСТЬ NULL и будет тебе счастье...
16 sapphire
 
19.04.13
17:35
(0)
ВЫБРАТЬ
    ОборотыРасход.СубконтоДт1
   ,ОборотыРасход.СуммаОборот

ИЗ
  РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
                   &ДатаНачало,
                   &ДатаКонец,
                   Регистратор,
                   СчетДт В ИЕРАРХИИ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПрочиеРасходы)),
                   &МассивВС) КАК ОборотыРасход
WHERE
   (ОборотыРасход.СубконтоДт1,ОборотыРасход.СубконтоДт2) NOT IN
   (
       SELECT
            ОборотыДоход.СубконтоКт1
           ,ОборотыДоход.СубконтоКт2
       FROM    
                РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
                       &ДатаНачало,
                       &ДатаКонец,
                       Регистратор,
                       ,
                       ,
                       СчетКт В ИЕРАРХИИ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПрочиеДоходы)),
                       &МассивВС) КАК ОборотыДоход
           )
17 Classic
 
19.04.13
17:53
Что тебе именно получать надо?
18 marinell
 
22.04.13
09:46
(16) Чудесно, сработало, спасибо!!!

Спасибо всем огромное!
19 marinell
 
22.04.13
10:26
(15)
ГДЕ ЕСТЬ NULL тоже дает нужный результат, непонятно, почему он не давал его в пятницу... наверное, на то она и пятница )))
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn