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


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Проблема с отбором по графе отбора
21. Декабря 2006 :: 12:20
Печать  
1 ая попытка:
Код
Выбрать все
ТекстЗапроса = "
	|SELECT *
	|FROM
	|  _1SCRDOC as Отбор
	|WHERE
	|   Отбор.MDID = $ГрафаОтбора.Грузополучатель AND
	|   Отбор.ParentVal IN (SELECT Val FROM #ГП)
	|";
Запрос.УложитьСписокОбъектов(СпсГП, "#ГП", "Контрагенты");
ТемпТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
 


Выбираю в некоем списке контрагентов в результате получаю пустую выборку Печаль

2 ая попытка
Код
Выбрать все
ТекстЗапроса = "
	|SELECT *
	|FROM
	|  _1SCRDOC as Отбор
	|WHERE
	|   Отбор.MDID = $ГрафаОтбора.Грузополучатель
	|";
ТемпТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); 


Получаю большую выборку.

Стал разбираться в чем дело и получилось:
В выборку в поле ParentVal попадает что-то вроде: "B1  1A   8PP      ", а метод
Запрос.УложитьСписокОбъектов(СпсГП, "#ГП", "Контрагенты");
создает временную таблицу, в которую пихает: "   8PP     "
(Сори если кол-во пробелов вписал неверное...)
Что делать? Как заставить делать корректный отбор по графе отбора?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с отбором по графе отбора
Ответ #1 - 21. Декабря 2006 :: 12:27
Печать  
Код
Выбрать все
ТекстЗапроса = "
|SELECT *
|FROM
|  _1SCRDOC as Отбор
|INNER JOIN
|  #ГП on 'B1'+#ГП.Val = Отбор.ParentVal
|WHERE
|   Отбор.MDID = $ГрафаОтбора.Грузополучатель
|";
Запрос.УложитьСписокОбъектов13(СпсГП, "#ГП");
ТемпТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); 


Изменено:
если в СпсГП не бывает групп
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с отбором по графе отбора
Ответ #2 - 21. Декабря 2006 :: 12:31
Печать  
или Изменено:
если бывают группы, но вид одни

Код
Выбрать все
ТекстЗапроса = "
|SELECT *
|FROM
|  _1SCRDOC as Отбор
|INNER JOIN
|  #ГП on 'B1'+$ВидСправочника36.Контрагенты+#ГП.Val = Отбор.ParentVal
|WHERE
|   Отбор.MDID = $ГрафаОтбора.Грузополучатель
|";
Запрос.УложитьСписокОбъектов(СпсГП, "#ГП","Контрагенты");
ТемпТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);  

  

1&&2&&3
Наверх
 
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Проблема с отбором по графе отбора
Ответ #3 - 21. Декабря 2006 :: 12:57
Печать  
Спасибо. Вроде заработало.
Попробую из списка вытаскивать польный ID и ручками пихать во временную таблицу.
  
Наверх
 
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Проблема с отбором по графе отбора
Ответ #4 - 21. Декабря 2006 :: 14:04
Печать  
Сделал так:
Код
Выбрать все
Запрос = СоздатьОбъект("ODBCRecordset");
	МД = СоздатьОбъект("MetaDataWork");
	ТекстВремТабл = "
	|if exists(select * from tempdb..sysobjects where id = object_id('tempdb..#ГП'))
	|  drop table #ГП
	|create table #ГП (Val char(23))
	|";
	//ЗапросДляВремТабл.Выполнить(ТекстВремТабл);
	Для Инд = 1 По СпсГП.РазмерСписка() Цикл
		ТекЗнач = СпсГП.ПолучитьЗначение(Инд);
		ТекстВремТабл = ТекстВремТабл + "
		|INSERT INTO #ГП (Val) VALUES ('" + МД.ЗначениеВСамуюДлиннуюСтрокуБД(ТекЗнач) + "')";
	КонецЦикла;
	Запрос.Выполнить(ТекстВремТабл);
	ТекстЗапроса = "
	|SELECT *
	|FROM
	|  _1SCRDOC as Отбор
	|WHERE
	|   Отбор.MDID = $ГрафаОтбора.Грузополучатель AND
	|   Отбор.ParentVal IN (SELECT Val FROM #ГП)
	|";
	ТемпТЗ = СоздатьОбъект("ТаблицаЗначений");
	ТемпТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); 

  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с отбором по графе отбора
Ответ #5 - 21. Декабря 2006 :: 14:11
Печать  
а чем Ответ #1 не подходит?
  

1&&2&&3
Наверх
 
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Проблема с отбором по графе отбора
Ответ #6 - 21. Декабря 2006 :: 14:18
Печать  
в виде тренировки я делаю обший журнал со множественным отбором. этот текст кусок с отработкой отбора по графам отбора. и такое заполнение временных таблиц мне показалось проще, нежели поиск способа найти первые два символа для полного ИД объекта, хотя м.б. я и не прав или чего-то не понимаю...
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с отбором по графе отбора
Ответ #7 - 21. Декабря 2006 :: 14:50
Печать  
первые два символа означают тип:
B1 - справочник
O1 - документ
...
  

1&&2&&3
Наверх
 
IP записан
 
Vitek77
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 44
Зарегистрирован: 22. Сентября 2006
Re: Проблема с отбором по графе отбора
Ответ #8 - 21. Декабря 2006 :: 14:55
Печать  
а где можно полный список первых двух символов получить?
хм... в моем случае я во временной таблице сразу получаю нужное мне значение, а так в запросе придется еще преобразование делать....
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с отбором по графе отбора
Ответ #9 - 21. Декабря 2006 :: 16:14
Печать  
  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать