Имя: Пароль:
1C
 
в языке запросов нет аналога EXISTS в SQL?!
0 spenov
 
22.01.09
18:17
каким образом выкручиваться без такой конструкции?

например запрос
ВЫБРАТЬ *
ИЗ Справочник.Договоры как Договоры
ГДЕ СУЩЕСТВУЕТ(ВЫБРАТЬ * ИЗ...ГДЕ Контрагент=Договоры.Владелец И Договор=Договоры.Ссылка)
1 wPa
 
22.01.09
18:18
НЕ ЕСТЬNULL ?
2 toypaul
 
гуру
22.01.09
18:18
через соединение
3 rs_trade
 
22.01.09
18:18
ГДЕ (ВЫБРАТЬ COUNT(*) ИЗ...ГДЕ Контрагент=Договоры.Владелец И Договор=Договоры.Ссылка)<>0

Может так?
4 spenov
 
22.01.09
18:19
это все не годится.
через соединение строки размножатся...
проверка на нул вообще не пойму куда здесь прикрутить :)
5 rs_trade
 
22.01.09
18:19
(3) за синтаксис не ручаюсь...)))
6 wPa
 
22.01.09
18:21
(4) соединением с таким же запросом
7 spenov
 
22.01.09
18:23
(3) - не компиляет...ругается...сильно :)
(6) не понял.можно подробнее идею?
8 IronDemon
 
22.01.09
18:24
ГДЕ Ссылка НЕ(ВЫБРАТЬ Ссылка ИЗ...ГДЕ Контрагент=Договоры.Владелец И Договор=Договоры.Ссылка)
9 IronDemon
 
22.01.09
18:26
Или без НЕ
10 spenov
 
22.01.09
18:29
(8) в конкретно этом случае так можно выкрутиться. попробовал - получилось.
но в общем случае не получиться, если например будет объединение таблиц по которым необходимо проверить вложенное условие :(

запрос в итоге у меня получился такой:

ТекстЗапроса="ВЫБРАТЬ ПЕРВЫЕ 1
                |    ДоговорыКонтрагентов.Ссылка как Договор,
                |    ДоговорыКонтрагентов.Владелец как Контрагент
                |ИЗ
                |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
                |ГДЕ
                |    ДоговорыКонтрагентов.Владелец В ИЕРАРХИИ(&Контрагент)
                |  И ДоговорыКонтрагентов.Организация=&Организация
                |    "+?(ВидВзаиморасчетовПоДоговору=Справочники.ВидыВзаиморасчетов.ПустаяСсылка(),"","И ДоговорыКонтрагентов.ВидВзаиморасчетов = &ВидВзаиморасчетов")+"
                |  И ДоговорыКонтрагентов.Ссылка В (ВЫБРАТЬ
                |                                       ХозрасчетныйОстаткиИОбороты.Субконто2
                |                                   ИЗ
                |                                       РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаС, &ДатаПо, , , , , ) КАК ХозрасчетныйОстаткиИОбороты
                |                                   ГДЕ
                |                                       ХозрасчетныйОстаткиИОбороты.Организация = &Организация
                |                                       И ХозрасчетныйОстаткиИОбороты.Субконто1 = ДоговорыКонтрагентов.Владелец
                |                                       И ХозрасчетныйОстаткиИОбороты.Субконто2 = ДоговорыКонтрагентов.Ссылка)";



надо достать все договоры, по которым есть сальдо или оборот за заданный период
11 toypaul
 
гуру
22.01.09
18:32
(10) почему это по объединению не проверить? объединение в подзапросе? легко!
12 toypaul
 
гуру
22.01.09
18:33
а вообще изврат какой-то - зачем тут справочник договов? почему не сделать основную выборку по таблице остатков и оборотов?
13 spenov
 
22.01.09
18:37
(10) например такой вариант очень условный но всеже...

ВЫБРАТЬ

ИЗ Справочник.Контрагенты ОБЪЕДИНИТЬ Справочник.Договоры ПО Контрагенты.Ссылка=Договоры.Владелец
ГДЕ
СУЩЕСТВУЕТ(ВЫБРАТЬ * ИЗ .. ГДЕ Контаргент=Контрагенты.Ссылка И Договор=Договоры.Ссылка)

как такой вариант реализовать?

изврата нет. в остатках и оборотах не обязательно субконтами будут договоры, а вбырать надо именно договоры. поэтому мой вариант думаю быстрее отработает с учотом проверки доп условий в договорах
14 spenov
 
22.01.09
18:38
и кстати условий может быть больше :)
15 KAO111
 
22.01.09
18:52
В этой ситуации можно не надо, но для примера... у 1С есть групповое сравнение

ВЫБРАТЬ Т1.Контрагент, Т2.Договор
ИЗ Справочник.Контрагенты как Т1 ОБЪЕДИНИТЬ Справочник.Договоры как Т2 ПО Контрагенты.Ссылка=Договоры.Владелец
ГДЕ (Т1.Контрагент, Т2.Договор) в
(ВЫБРАТЬ * ИЗ .. ГДЕ Контаргент=Т1.Контрагент И Договор=Т2.Договор)
16 spenov
 
22.01.09
19:07
(15) МОЩНО! несколько неожиданно, но работает. с этим уже можно жить :) спасибо
17 megalodon
 
22.01.09
21:40
ВЫБРАТЬ *
ИЗ Справочник.Договоры как Договоры

ГДЕ 1 В(ВЫБРАТЬ 1 ИЗ...ГДЕ Контрагент=Договоры.Владелец И Договор=Договоры.Ссылка)
18 Ненавижу 1С
 
гуру
22.01.09
21:48
(0) гению скажи в список недостатков включить
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.