Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) В выборку не попадают элементы с пустым реквизитом (число прочтений - 4150 )
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: В выборку не попадают элементы с пустым реквизитом
Ответ #15 - 30. Сентября 2010 :: 06:28
Печать  
попробовал в прототипе моего запроса задать покажи мне только обороты по контрагентам  у которых реквизит область пустая

перед формированием передаю в список областей только
СписокОбластей.ДобавитьЗначение(ПолучитьПустоеЗначение("Справочник.Область"));


тоже ничего не дает - пустой результат, а если без фильтра по областям, то показывает все , в том числе и с пустой областью


Код
Выбрать все
	|SELECT
	| t.ПозицияДокумента as ПозицияДокумента,
	| t.Область [Область $Справочник.Область],
	| t.Док as [Док $Документ],
	| t.Док_вид as Док_вид,
  |	t.ДатаДок as ДатаДок,
	| t.КодТ as КодТ,
  | t.Номенклатура as [Номенклатура $Справочник.Номенклатура],
	| t.ПолнНаименованиеТ as ПолнНаименованиеТ,
	| t.ЕдИзм as [ЕдИзм $Справочник.Единицы],
	| t.Контраген as [Контраген $Справочник.Контрагенты],
	| t.КодК  as КодК,
	| t.Адрес as Адрес,
	| t.Количество  as Количество,
	| t.Сумма as Сумма,
	|	t.Менеджер as [Менеджер $Справочник.Пользователи],
  | $ПоследнееЗначение.Номенклатура.Цена(t.Номенклатура, t.ДатаДок) Цена,
	| t.ПолнНаименованиеК as ПолнНаименованиеК
	|FROM (
	|SELECT
	| Рег.ПозицияДокумента,
	| Журн.IDDOC Док,
	| Журн.IDDocDef as Док_вид,
  |	CAST(LEFT(Журн.Date_Time_IDDoc, 8) as DateTime) as ДатаДок,
	| $Спр.Артикул as КодТ,
  | Рег.Номенклатура as Номенклатура,
	| $Спр.ПолнНаименование  as ПолнНаименованиеТ,
	| Рег.ЕдИзм as ЕдИзм,
	| Рег.Покупатель as Контраген,
	| Спр1.Code  as КодК,
	| $Спр1.ФактАдрес  as Адрес,
	| Рег.КоличествоОборот  as Количество,
	| $Спр2.Область Область,
	| Рег.СуммаОборот  as Сумма,
	|	COALESCE($Док.Менеджер, $Док1.Менеджер,$Док2.Менеджер) as Менеджер,
	| Спр1.Descr  as ПолнНаименованиеК
	|FROM
	| $РегистрОбороты.Расход(:НачДата,:КонДата~,Документ,
	|					  INNER JOIN $Справочник.Номенклатура Спр(nolock) on Спр.[id] = Номенклатура
	|					  INNER JOIN $Справочник.ГруппыНоменклатуры Спр2(nolock) on Спр2.[id] = $Спр.Группа
	|					  ,
	|					  $Спр.Группа IN (SELECT Val FROM #ГруппаН) and
	|					  КодОперации =:КодОпер,
	|					 (Номенклатура,ЕдИзм,Покупатель), (Количество,Сумма)) as Рег
	| INNER JOIN $Справочник.Номенклатура Спр(nolock) on Спр.[id] = Рег.Номенклатура
	| INNER JOIN $Справочник.Контрагенты Спр1(nolock) on Спр1.[id] = Рег.Покупатель
	| LEFT JOIN $Справочник.Районы Спр2(nolock) on Спр2.[id] = $Спр1.Район
	| INNER JOIN _1SJourn  Журн(nolock) on Журн.[IDDOC] = right(Рег.ПозицияДокумента, 9)
	| LEFT JOIN $Документ.РасходнаяНакладная as Док(nolock) ON Док.IDDoc = Журн.[IDDOC]
	| LEFT JOIN $Документ.РасходнаяНакладнаяДляРозницы as Док2(nolock) ON Док2.IDDoc = Журн.[IDDOC]
	| LEFT JOIN $Документ.ТовЧек_Накладная as Док1(nolock) ON Док1.IDDoc = Журн.[IDDOC]
	| WHERE  Not (Журн.IDDocDef = 2344) and Not (Журн.IDDocDef = 2335) and Not (Журн.IDDocDef = 3670)
	|";
	Если СписокОбластей.РазмерСписка()>0 Тогда
		ТекстЗапроса=ТекстЗапроса+
		"
	  |and $Спр2.Область IN (SELECT Val FROM #ГруппаО)
	  |";
	КонецЕсли	;
		ТекстЗапроса=ТекстЗапроса+
		"
	|) as t
	|";
	Если ПоВсем=0 Тогда
		ТекстЗапроса=ТекстЗапроса+
		"
		| WHERE t.менеджер IN (SELECT Val FROM #Группа)
	  |";
	КонецЕсли	;
		ТекстЗапроса=ТекстЗапроса+
		"
		| Order By t.ПозицияДокумента,t.ПолнНаименованиеК,t.ПолнНаименованиеТ
	  |";

 

  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: В выборку не попадают элементы с пустым реквизитом
Ответ #16 - 30. Сентября 2010 :: 06:45
Печать  
Ё... да не лефт джоин а иннер - ты же условие потом накладываешь.
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: В выборку не попадают элементы с пустым реквизитом
Ответ #17 - 30. Сентября 2010 :: 06:56
Печать  
Че-то ты намудрил с условиями .......

Выкинь все условия из ВТ на группу - там вообще одно лишнее, и
засунь туда условие по областям.

Убери вообще все внешние условия, и добавляй по одному - поймаешь где косяк.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: В выборку не попадают элементы с пустым реквизитом
Ответ #18 - 30. Сентября 2010 :: 06:57
Печать  
вот так что кажет ?
Код
Выбрать все
	|SELECT
	|	CAST(LEFT(Рег.ПозицияДокумента, 8) as DateTime) as ДатаДок,
	|   $СпрНом.Артикул as КодТ,
    |   Рег.Номенклатура as Номенклатура,
	|   $СпрНом.ПолнНаименование  as ПолнНаименованиеТ,
	|   Рег.ЕдИзм as ЕдИзм,
	|   Рег.Покупатель as Контраген,
	|   Спр1.Code  as КодК,
	|   $Спр1.ФактАдрес  as Адрес,
	|   Рег.КоличествоОборот  as Количество,
	|   $Спр2.Область Область,
	|   Рег.СуммаОборот  as Сумма,
	|   Спр1.Descr  as ПолнНаименованиеК,
	|   COALESCE($Док.Менеджер, $Док1.Менеджер,$Док2.Менеджер) as Менеджер,
	|FROM
	| $РегистрОбороты.Расход(:НачДата,:КонДата~,Документ,
	|					  INNER JOIN $Справочник.Номенклатура Спр(nolock) on Спр.id = Номенклатура
	|					  INNER JOIN $Справочник.ГруппыНоменклатуры Спр2(nolock) on Спр2.id = $Спр.Группа
	|					  ,
	|					  $Спр.Группа IN (SELECT Val FROM #ГруппаН) and
	|					  КодОперации =:КодОпер,
	|					 (Номенклатура,ЕдИзм,Покупатель), (Количество,Сумма)) as Рег
	| INNER JOIN $Справочник.Номенклатура СпрНом(nolock) on СпрНом.id = Рег.Номенклатура
	| INNER JOIN $Справочник.Контрагенты Спр1(nolock) on Спр1.id = Рег.Покупатель
	| INNER JOIN $Справочник.Районы Спр2(nolock) on Спр2.id = $Спр1.Район";
	Если СписокОбластей.РазмерСписка()>0 Тогда
		ТекстЗапроса=ТекстЗапроса+"
	  |and NOT EXISTS( select *  from  #ГруппаО as O where O.VAl =$Спр2.Область)
	  |";
	КонецЕсли	;

	ТекстЗапроса=ТекстЗапроса+";
	|  
	| LEFT JOIN $Документ.РасходнаяНакладная as Док(nolock) ON Док.IDDoc = right(Рег.ПозицияДокумента, 9)
	| LEFT JOIN $Документ.РасходнаяНакладнаяДляРозницы as Док2(nolock) ON Док2.IDDoc = right(Рег.ПозицияДокумента, 9)
	| LEFT JOIN $Документ.ТовЧек_Накладная as Док1(nolock) ON Док1.IDDoc = right(Рег.ПозицияДокумента, 9)
	| WHERE  Рег.ВидДокумента  <> 2344 and  Рег.ВидДокумента <> 2335 and  Рег.ВидДокумента  <> 3670
	| -- лучше писать  Рег.ВидДокумента = $ВидДокумента.Реализация
	|"; 


     
ЗЫ: да и из ВТ бы тоже выкинуть чего-нить необходимо..
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: В выборку не попадают элементы с пустым реквизитом
Ответ #19 - 30. Сентября 2010 :: 07:00
Печать  
Я неправильно отписал в топике

у справочника контрагенты есть реквизит - Район (справочник.Районы), а у него реквизит Область (справочник.Области)

В выборку не попадают обороты у которых реквизит Район пустой, следовательно и область получить не возможно
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: В выборку не попадают элементы с пустым реквизитом
Ответ #20 - 30. Сентября 2010 :: 07:02
Печать  
блин забыл детали, и просто стал тупо править запрос прототип(который давно делал)
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: В выборку не попадают элементы с пустым реквизитом
Ответ #21 - 30. Сентября 2010 :: 07:16
Печать  
тогда в условии ставлю
| and (($Спр2.Область Not IN (SELECT Val FROM #ГруппаО)) or ($Спр1.Район = $ПустойИД))

и все должно прокатить
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: В выборку не попадают элементы с пустым реквизитом
Ответ #22 - 30. Сентября 2010 :: 07:17
Печать  
dimm73 писал(а) 30. Сентября 2010 :: 07:00:
Я неправильно отписал в топике

у справочника контрагенты есть реквизит - Район (справочник.Районы), а у него реквизит Область (справочник.Области)

В выборку не попадают обороты у которых реквизит Район пустой, следовательно и область получить не возможно

я же писал выше. Еще раз напишу более подробно
1.УложитьСписокОбъектов
2 добавь во временуютаблицу '     0   ' с помощью insert т.е.
insert into #ТвоеИмя( '     0   ',1)

Если просто поместить пустоезначение в Список то УложитьСписокОбъектов его просто проигнорирует.


  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: В выборку не попадают элементы с пустым реквизитом
Ответ #23 - 30. Сентября 2010 :: 07:33
Печать  
Спасибо всем, все получилось
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать