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

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

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

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

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

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

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

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

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

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

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

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

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