Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как поймать элемент справочника без родителя? (число прочтений - 3306 )
Marten
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 44
Зарегистрирован: 02. Июля 2012
Как поймать элемент справочника без родителя?
01. Ноября 2012 :: 15:28
Печать  
Следующий запрос возвращет все элементы справочника контрагенты
кроме элементов находящихся в группе с кодом '    1' и елементов у которых нет родителя (элементы без родителя нужны).

Код
Выбрать все
SELECT
	СпрК.id as [Контрагент $Справочник.Контрагенты],
	Родители.Код as КодРодителяКонтрагента,
	Родители.Наименование as НаименованиеРодителяКонтрагента
FROM
	$Справочник.Контрагенты AS СпрК
LEFT JOIN (
	SELECT
		Спр.id as id,
		ICASE(ISNULL(Спр.Code,0,IIF(Спр.Code='    1',1,0)) as Код
		Спр.Descr as Наименование
	FROM
		$Справочник.Контрагенты AS Спр
	WHERE
		Спр.IsFolder = 1
	) as Родители ON Родители.id = СпрК.ParentID
WHERE
	СпрК.IsFolder = 2 AND
	Родители.Код = 0
 

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


1C++ rocks!

Сообщений: 44
Зарегистрирован: 02. Июля 2012
Как поймать элемент справочника без родителя?
Ответ #1 - 01. Ноября 2012 :: 15:56
Печать  
исправлюсь

|            ICASE(ISNULL(Спр.Code),0,IIF(Спр.Code='    1',1,0)) as Код,
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как поймать элемент справочника без родителя?
Ответ #2 - 02. Ноября 2012 :: 05:09
Печать  
А вопрос то в чем ?
почему иснулл не работает у тебя. или что ?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как поймать элемент справочника без родителя?
Ответ #3 - 02. Ноября 2012 :: 05:50
Печать  
Если нужно вот это:
Цитата:
Как поймать элемент справочника без родителя?


То так, например:

Код
Выбрать все
SELECT
	Спр.id as [Контрагент $Справочник.Контрагенты]
FROM
	$Справочник.Контрагенты AS Спр
WHERE
	Спр.IsFolder = 2
	 and Спр.ParentID = $ПустойИД
 

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


1C++ rocks!

Сообщений: 44
Зарегистрирован: 02. Июля 2012
Re: Как поймать элемент справочника без родителя?
Ответ #4 - 02. Ноября 2012 :: 07:03
Печать  
Спасибо большое.

Выложу полный запрос для тех у кого возникнет такой же вопрос

Код
Выбрать все
|SELECT
|	СпрК.id as [Контрагент $Справочник.Контрагенты],
|	Родители.Код as КодРодителяКонтрагента,
|	Родители.Наименование as НаименованиеРодителяКонтрагента
|FROM
|	$Справочник.Контрагенты AS СпрК
|LEFT JOIN (
|	SELECT
|		Спр.id as id,
|		ICASE(ISNULL(Спр.Code),0,IIF(Спр.Code='    1',1,0)) as Код,
|		Спр.Descr as Наименование
|	FROM
|		$Справочник.Контрагенты AS Спр
|	WHERE
|		Спр.IsFolder = 1
|	) as Родители ON Родители.id = СпрК.ParentID
|WHERE
|	СпрК.IsFolder = 2
|	AND (Родители.Код = 0 OR СпрК.ParentID = $ПустойИД)

 

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как поймать элемент справочника без родителя?
Ответ #5 - 02. Ноября 2012 :: 07:10
Печать  
Что это ?!
  
Наверх
 
IP записан
 
antoneus
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 16. Марта 2009
Пол: Мужской
Re: Как поймать элемент справочника без родителя?
Ответ #6 - 02. Ноября 2012 :: 07:12
Печать  
Eprst писал(а) 02. Ноября 2012 :: 07:10:
Что это ?!


Человек знаниями делится.
  
Наверх
 
IP записан
 
sava
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 56
Зарегистрирован: 18. Февраля 2010
Пол: Мужской
Re: Как поймать элемент справочника без родителя?
Ответ #7 - 02. Ноября 2012 :: 10:17
Печать  
А вопрос то какой был?
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Как поймать элемент справочника без родителя?
Ответ #8 - 06. Ноября 2012 :: 06:14
Печать  
Marten писал(а) 02. Ноября 2012 :: 07:03:
Выложу полный запрос для тех у кого возникнет такой же вопрос
Не надо джойнить подзапросы, и ISNULL в твоей ситуации никогда не отработает, ибо 1С!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать