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


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 27. Мая 2008
Проблема с условием в запросе к справочнику
27. Мая 2008 :: 08:11
Печать  
Привет всем.
Впервые начал пытаться оптимизировать выборки в 1С не совсем понятна работа с условиями.
Удаленнные=глПолучитьГруппуДЛ();  группа в которую складываю удаленные ДЛ включает так же подгруппы
поэтому условием типа //| Спр.IsFolder = 2 AND Спр.ParentID<>:Удаленнные нельзя обойтись
     Попытка
     RS = СоздатьОбъект("ODBCRecordset");
     RS.УстБД1С();
     ТекстЗапроса = "
     |SELECT
     | Спр.ParentID as [Родитель $Спр.ДоговорЛизинга],
     | Спр.ID as [ДоговорЛизинга $Спр.ДоговорЛизинга],
     | $Спр.ДатаПериодическихРеквизитов as ДатаДог
     | FROM $Справочник.ДоговорЛизинга AS Спр
     |WHERE
     //| Спр.IsFolder = 2 AND Спр.ParentID<>:Удаленнные
     | Спр.IsFolder = 2 AND Спр.ParentID NOT IN (SELECT Val FROM #Удаленнные)
     | AND $Спр.ДатаПериодическихРеквизитов<=:НачДата
     |";
     RS.УложитьСписокОбъектов(Удаленнные, "#Удаленнные", "ДоговорЛизинга");
     RS.УстановитьТекстовыйПараметр("НачДата", ДатаАктуальности);
     //RS.УстановитьТекстовыйПараметр("Удаленнные", Удаленнные);
     RS.Отладка(Отладчик);
     ТЗЗапроса = RS.ВыполнитьИнструкцию(ТекстЗапроса);
     ТЗ=ТЗЗапроса;
     Исключение
                    Сообщить(ОписаниеОшибки());
     КонецПопытки;
в данном запросе е отрабатывают 2 условия Спр.ParentID NOT IN (SELECT Val FROM #Удаленнные)
, а так же $Спр.ДатаПериодическихРеквизитов<=:НачДата. Немогу понять почему.
Отладчик выдает
SELECT
Спр.ParentID as [Родитель $Спр.ДоговорЛизинга],
Спр.ID as [ДоговорЛизинга $Спр.ДоговорЛизинга],
Спр.sp42647 as ДатаДог
FROM sc7179 AS Спр
WHERE
Спр.IsFolder = 2 AND Спр.ParentID NOT IN (SELECT Val FROM #Удаленнные)
AND Спр.sp42647<='20080527'

Объясните пожалуйста где я ошибся. Спасибо.
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с условием в запросе к справочнику
Ответ #1 - 27. Мая 2008 :: 08:14
Печать  
Нет ошибки, что написано в запросе и отдано парсеру то уходит и на SQL, что Вас не устраивает?
Пробуйте:
Код
Выбрать все
     RS.УложитьСписокОбъектов(Удаленнные, "#Удаленнные", "ДоговорЛизинга");
     RS.Отладка(Отладчик);
     ТЗЗапроса = RS.ВыполнитьИнструкцию("SELECT VAL FROM #Удаленнные");
     ТЗЗапроса.ВыбратьСтроку(); 


Покажет тот список что надо?
ЗЫ
"Удаленнные" - это списокЗначений или ГруппаСправочника?
  
Наверх
IP записан
 
Frog
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 27. Мая 2008
Re: Проблема с условием в запросе к справочнику
Ответ #2 - 27. Мая 2008 :: 08:17
Печать  
Условие с датой заработало осталось разобраться с группой.
  
Наверх
 
IP записан
 
Frog
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 27. Мая 2008
Re: Проблема с условием в запросе к справочнику
Ответ #3 - 27. Мая 2008 :: 08:18
Печать  
pvase писал(а) 27. Мая 2008 :: 08:14:
Нет ошибки, что написано в запросе и отдано парсеру то уходит и на SQL, что Вас не устраивает?


В выборку попадают все договра в том числе и принадлежащие группе удаленные, которую я пытаюсь исключить
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с условием в запросе к справочнику
Ответ #4 - 27. Мая 2008 :: 08:19
Печать  
А что в строке " AND Спр.sp42647<='20080527'" неправильного?
  
Наверх
IP записан
 
Frog
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 27. Мая 2008
Re: Проблема с условием в запросе к справочнику
Ответ #5 - 27. Мая 2008 :: 08:20
Печать  
pvase писал(а) 27. Мая 2008 :: 08:14:
ЗЫ
"Удаленнные" - это списокЗначений или ГруппаСправочника?

Группа справочника
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с условием в запросе к справочнику
Ответ #6 - 27. Мая 2008 :: 08:20
Печать  
Frog писал(а) 27. Мая 2008 :: 08:18:
pvase писал(а) 27. Мая 2008 :: 08:14:
Нет ошибки, что написано в запросе и отдано парсеру то уходит и на SQL, что Вас не устраивает?


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

Тогда:
вместо:
AND Спр.ParentID NOT IN (SELECT Val FROM #Удаленнные)
AND Спр.ID NOT IN (SELECT Val FROM #Удаленнные)
  
Наверх
IP записан
 
Frog
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 27. Мая 2008
Re: Проблема с условием в запросе к справочнику
Ответ #7 - 27. Мая 2008 :: 08:21
Печать  
pvase писал(а) 27. Мая 2008 :: 08:19:
А что в строке " AND Спр.sp42647<='20080527'" неправильного?

С этим разобрался условие отрабатывает. Выбираются все договора до указанной даты.
  
Наверх
 
IP записан
 
Frog
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 27. Мая 2008
Re: Проблема с условием в запросе к справочнику
Ответ #8 - 27. Мая 2008 :: 08:22
Печать  
pvase писал(а) 27. Мая 2008 :: 08:20:
Frog писал(а) 27. Мая 2008 :: 08:18:
pvase писал(а) 27. Мая 2008 :: 08:14:
Нет ошибки, что написано в запросе и отдано парсеру то уходит и на SQL, что Вас не устраивает?


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

Тогда:
вместо:
AND Спр.ParentID NOT IN (SELECT Val FROM #Удаленнные)
AND Спр.ID NOT IN (SELECT Val FROM #Удаленнные)


Все СУПЕР. Спасибо огромное. Я почему то уперся, что нужно ID группы брать, но яже каждый элемент должен проверять. Еще раз спасибо
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать