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


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
запрос к справочнику
27. Февраля 2007 :: 13:19
Печать  
В элементе справочника есть ссылка на этот же справочник. Например У контрагента есть ссылка на торгового представителя, который является элементом этого же справочника.
Пишу запрос
ТекстЗапроса = "
|   SELECT   
|  Спр.Descr as Имя,
| $Спр.ТорговыйПредставитель  as  ТорговыйПредставитель
|FROM   
| $Справочник.Контрагенты as Спр
|WHERE
|left(Спр.CODE,2)='КЛ' 
|";
Естественно поле ТорговыйПредставитель представлено как ID элемента справочника, а как сделать, чтобы было имя?
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: запрос к справочнику
Ответ #1 - 27. Февраля 2007 :: 13:31
Печать  
Приджойнить еще раз этот же справочник, и получить значение Descr
  
Наверх
 
IP записан
 
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Re: запрос к справочнику
Ответ #2 - 27. Февраля 2007 :: 13:51
Печать  
Честно говоря не очень представляю как.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: запрос к справочнику
Ответ #3 - 27. Февраля 2007 :: 14:39
Печать  
попробуй так:
Код
Выбрать все
$Спр.ТорговыйПредставитель  as  [ТорговыйПредставитель $Справочник.Контрагенты] 

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



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: запрос к справочнику
Ответ #4 - 27. Февраля 2007 :: 15:32
Печать  
Код
Выбрать все
ТекстЗапроса = "
|   SELECT
|  Спр.Descr as Имя,
| Предст.Descr  as  ТорговыйПредставитель
|FROM
| $Справочник.Контрагенты as Спр (nolock)
|  inner join $Справочник.Контрагенты as Предст (nolock) on Предст.id = $Спр.ТорговыйПредставитель
|WHERE
|left(Спр.CODE,2)='КЛ'
|";
 

  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: запрос к справочнику
Ответ #5 - 28. Февраля 2007 :: 04:22
Печать  
Уместнее будет LEFT JOIN
  
Наверх
ICQ  
IP записан
 
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Re: запрос к справочнику
Ответ #6 - 28. Февраля 2007 :: 09:42
Печать  
Вариант JohnyDeath подошел.
|   SELECT  
|  Спр.Descr as Имя,
| $Спр.ТорговыйПредставитель  as  [ТорговыйПредставитель  $Справочник.Контрагенты]
|FROM  
| $Справочник.Контрагенты as Спр
|WHERE
|left(Спр.CODE,2)='КЛ'  
|";

Вариант с join не пробовал.
А еще такой вопрос
1. Как сделать отбор только по принадлежности к определенной группе.
2. И из этой группы выбрать только тех, у кого есть торговые представители, которые занесены предварительно в список значений? Т.е. отбор по списку значений.

Методом РС.УложитьСписокОбъектов(Список, "#Группа","Контрагенты"); получается, но это если в список включены элементы справочника того же, что и торговые представители, а если в список включить не элементы справочника, а просто текстовые наименования, как тогда быть. Нужно както вытащить наименования торговых представителей.
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: запрос к справочнику
Ответ #7 - 01. Марта 2007 :: 05:13
Печать  
если в списке значений - наименования, то:
1) необходимо определить максимальную длину наименований(длина наименования справочника я думаю) и укладывать временную таблицу методом ODBCRecordSet::ВыполнитьSQL_ИзТЗ
2) сравнивать поле Descr твоего справочника с полем таблицы, куда ты уложил свой список (методом, который тебе нужен: =, like, left(), right(), как угодно короче)
3) если в списке значений используются и элементы справочника и наименования, то разумнее разделить этот список на два, или извращаться с методой сравнения(тогда укладывать в таблицу нужно ID объектов, получить ID можно методом MetaDataWork::ЗначениеВСтрокуБД())
  
Наверх
 
IP записан
 
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Re: запрос к справочнику
Ответ #8 - 01. Марта 2007 :: 06:41
Печать  
1.А нельзя ли преобразовать каким то образом в строку $Спр.ТорговыйПредставитель  as  [ТорговыйПредставитель  $Справочник.Контрагенты] и далее уже сравнивать строки со списком значений, в котором содержатся строковые значения.
2. А вот эти методы ODBCRecordSet::ВыполнитьSQL_ИзТЗ и MetaDataWork::ЗначениеВСтрокуБД() где можно пример посмотреть?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать