Вход | Регистрация
 

Оператор "ССЫЛКА" в запросе

Оператор
Я
   Night_Wolf
 
05.02.10 - 09:47
Как наложить такое условие в запросе: Документ НЕ ССЫЛКА Документ.ТипДокумента?
(То есть чтобы выбрать все документы с типом, не равным заданному).
   5 Элемент
 
1 - 05.02.10 - 09:51
НЕ Документ ССЫЛКА Документ.ТипДокумент разве не подходит?
   Armando
 
2 - 05.02.10 - 09:51
НЕ КакаяТоСсылка ССЫЛКА Документ.ТипДокумента

как-то так
   Night_Wolf
 
3 - 05.02.10 - 10:04
(1),(2) - почему-то у меня тогда обрезаются документы.

Обрисую ситуацию - есть документы отгрузки товара - надо выбрать документы оплаты товара, Левое соединение получается от документов отгрузки к документам оплаты. Я выбираю все документы оплаты с одним определенным типом , а потом нужно выбрать документы со всеми остальными типами. Так вот если документов оплаты нет - тогда и документы отгрузки пропадают, хотя соединение - Левое и по идее быть такого не должно.

Вот пример кода:

ВЫБРАТЬ
    ВЛЗ.ДокОтгрузки,
    СУММА(ВЛЗ.СуммаОплаты) КАК СуммаОплаты,
    ВЛЗ.ДокОтгрузки.СуммаДокумента КАК СуммаОтгрузки,
    СУММА(ВЫБОР
            КОГДА ВзаиморасчетыСКонтрагентами.Сумма <> 0
                ТОГДА ВЛЗ.СуммаОплаты / ВЛЗ.ДокОтгрузки.СуммаДокумента * 100
            ИНАЧЕ 0
        КОНЕЦ) КАК ПроцентОплаты
ПОМЕСТИТЬ ТЗ
ИЗ
    (ВЫБРАТЬ
        ВзаиморасчетыСКонтрагентами.Регистратор КАК Регистратор,
        ВЫБОР
            КОГДА ВзаиморасчетыСКонтрагентами.ВидДвижения = &Приход
                ТОГДА ВзаиморасчетыСКонтрагентами.Регистратор
            ИНАЧЕ ВзаиморасчетыСКонтрагентами.Документ
        КОНЕЦ КАК ДокОтгрузки,
        СУММА(ВЫБОР
                КОГДА (НЕ ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.РеализацияБух)
                    ТОГДА ВзаиморасчетыСКонтрагентами.Сумма
                ИНАЧЕ 0
            КОНЕЦ) КАК СуммаОплаты
    ИЗ
        РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами
    ГДЕ
        ВзаиморасчетыСКонтрагентами.Период МЕЖДУ &НачДата И &КонДата
        И (ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.РеализацияБух
                ИЛИ ВзаиморасчетыСКонтрагентами.Документ ССЫЛКА Документ.РеализацияБух)
        И ВзаиморасчетыСКонтрагентами.Регистратор <> ВзаиморасчетыСКонтрагентами.Документ
    
    СГРУППИРОВАТЬ ПО
        ВзаиморасчетыСКонтрагентами.Регистратор,
        ВЫБОР
            КОГДА ВзаиморасчетыСКонтрагентами.ВидДвижения = &Приход
                ТОГДА ВзаиморасчетыСКонтрагентами.Регистратор
            ИНАЧЕ ВзаиморасчетыСКонтрагентами.Документ
        КОНЕЦ) КАК ВЛЗ
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами
        ПО ВЛЗ.ДокОтгрузки = ВзаиморасчетыСКонтрагентами.Регистратор

СГРУППИРОВАТЬ ПО
    ВЛЗ.ДокОтгрузки,
    ВЛЗ.ДокОтгрузки.СуммаДокумента
;

 ////////////////////////////////////////////////////////////////////////////////
 
ВЫБРАТЬ
    ПродажиОбороты.Отдел,
    ТЗ.ДокОтгрузки,
   ПродажиОбороты.ДокументУбытия,
    ПродажиОбороты.Номенклатура,
    СУММА(ТЗ.СуммаОплаты) КАК СуммаОплаты,
    ТЗ.СуммаОтгрузки,
    СУММА(ПродажиОбороты.СуммаПродажиОборот) КАК СуммаПродажи,
    СУММА(ПродажиОбороты.СтоимостьТовараПартОборот + ПродажиОбороты.СтоимостьСущУслугПартОборот + ПродажиОбороты.СтоимостьНесущУслугОборот) КАК СебестоимостьПартионная,
    СУММА(ПродажиОбороты.СтоимостьТовараСредОборот + ПродажиОбороты.СтоимостьСущУслугСредОборот + ПродажиОбороты.СтоимостьНесущУслугОборот) КАК СебестоимостьСредняя,
    СУММА(ТЗ.ПроцентОплаты) КАК ПроцентОплаты
ИЗ
    ТЗ КАК ТЗ
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты
        ПО ТЗ.ДокОтгрузки = ПродажиОбороты.ДокументУбытия.ДокументОснование
ГДЕ
    ПродажиОбороты.ДокументУбытия ССЫЛКА Документ.РеализацияТоваровУслуг

СГРУППИРОВАТЬ ПО
    ТЗ.ДокОтгрузки,
    ПродажиОбороты.ДокументУбытия,
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Отдел,
    ТЗ.СуммаОтгрузки

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

ВЫБРАТЬ
    ПродажиОбороты.Отдел,
    ТЗ.ДокОтгрузки,
    ПродажиОбороты.ДокументУбытия,
    ПродажиОбороты.Номенклатура,
    СУММА(ТЗ.СуммаОплаты),
    ТЗ.СуммаОтгрузки,
    СУММА(ПродажиОбороты.СуммаПродажиОборот),
    СУММА(ПродажиОбороты.СтоимостьТовараПартОборот + ПродажиОбороты.СтоимостьСущУслугПартОборот + ПродажиОбороты.СтоимостьНесущУслугОборот),
    СУММА(ПродажиОбороты.СтоимостьТовараСредОборот + ПродажиОбороты.СтоимостьСущУслугСредОборот + ПродажиОбороты.СтоимостьНесущУслугОборот),
    СУММА(100)
ИЗ
    ТЗ КАК ТЗ
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&НачДата, &КонДата, Авто, ) КАК ПродажиОбороты
        ПО ТЗ.ДокОтгрузки = ПродажиОбороты.ДокументУбытия.ДокументОснование
ГДЕ
    (НЕ ПродажиОбороты.ДокументУбытия ССЫЛКА Документ.РеализацияТоваровУслуг)

СГРУППИРОВАТЬ ПО
    ТЗ.ДокОтгрузки,
    ПродажиОбороты.ДокументУбытия,
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Отдел,
   ТЗ.СуммаОтгрузки
   73
 
4 - 05.02.10 - 10:07
(3)
<ГДЕ

   (НЕ ПродажиОбороты.ДокументУбытия ССЫЛКА Документ.РеализацияТоваровУслуг) 
>

Ты накладываешь условия на правую таблицу. Для отсутствующих записей там NULL-ы. Условие для них верет Ложь.
   73
 
5 - 05.02.10 - 10:08
(4)*вернет
   Night_Wolf
 
6 - 05.02.10 - 10:10
хм, если просто накладывать условие на регистр - "НЕ док ССЫЛКА тип", то действительно выбирает. Наверное обрезает при левом соединении, если документ, который проверяется на тип - пустой. Спасибо за помощь!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.