Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Поиск элемента справочника по ID (число прочтений - 10751 )
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Поиск элемента справочника по ID
Ответ #15 - 17. Июня 2009 :: 07:32
Печать  
pavel_tr писал(а) 17. Июня 2009 :: 05:10:
Код
Выбрать все
RS = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
|SELECT
|  Спр.ID as [Элемент $Справочник.КлиентыФиз]
|FROM
|  $Справочник.КлиентыФиз as Спр
|WHERE
|  Спр.ID = :ГУИД";
RS.УстановитьТекстовыйПараметр("ГУИД", ГУИД);

Элемент = RS.ВыполнитьСкалярный(ТекстЗапроса); 


Так вернёт сразу элемент


и совсем уж по науке - сделать запрос параметрическим
  
Наверх
ICQ  
IP записан
 
marina
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Re: Поиск элемента справочника по ID
Ответ #16 - 19. Июня 2009 :: 10:00
Печать  
Спасибо всем,

а как выбрать элемент справочников по ИД, если мы заранее не знаем какой это справочник, а знаем, что этот элемент лежит или Спрвочник.Сотрудники или в Справочник.Операторы?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Поиск элемента справочника по ID
Ответ #17 - 19. Июня 2009 :: 10:05
Печать  
Цитата:
а как выбрать элемент справочников по ИД, если мы заранее не знаем какой это справочник, а знаем, что этот элемент лежит или Спрвочник.Сотрудники или в Справочник.Операторы?

заджойнить оба этих справочника по ID...
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Поиск элемента справочника по ID
Ответ #18 - 19. Июня 2009 :: 10:39
Печать  
marina писал(а) 19. Июня 2009 :: 10:00:
а как выбрать элемент справочников по ИД, если мы заранее не знаем какой это справочник, а знаем, что этот элемент лежит или Спрвочник.Сотрудники или в Справочник.Операторы?

никак, вам нужно получать тогда из вашего внешнего приложения, typeid и id, или id длиной 13 символов. Потом определять таблицу(справочник), в которой нужно искать этот id.
  
Наверх
 
IP записан
 
marina
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Re: Поиск элемента справочника по ID
Ответ #19 - 19. Июня 2009 :: 10:45
Печать  
     RS = СоздатьОбъект("ODBCRecordset");
     ТекстЗапроса = "
     |SELECT
     |  Спр1.ID as [Элемент $Справочник.Сотрудники],
     |  Спр2.ID as [Элемент $Справочник.Операторы]
     |FROM
     |  $Справочник.Сотрудники as Спр1 join $Справочник.Операторы as Спр2 on Спр1.ID = Спр2.ID
     |WHERE
     |  Спр1.ID = :ГУИД,";
     RS.УстановитьТекстовыйПараметр("ГУИД", ГУИД);
     
     Спр = RS.ВыполнитьСкалярный(ТекстЗапроса);


Где-то так?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Поиск элемента справочника по ID
Ответ #20 - 19. Июня 2009 :: 11:20
Печать  
Тип того не покатит?

Код
Выбрать все
|SELECT
|   COALESCE(Спр1.ID,Спр1.ID) as [Элемент $Справочник]
|FROM
|  $Справочник.Сотрудники as Спр1
|LEFT JOIN  $Справочник.Операторы as Спр2 on Спр2.ID = :ГУИД
|WHERE
|  Спр1.ID = :ГУИД 



каюсь .. протупил
« Последняя редакция: 19. Июня 2009 :: 12:22 - Eprst »  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поиск элемента справочника по ID
Ответ #21 - 19. Июня 2009 :: 11:47
Печать  
Eprst писал(а) 19. Июня 2009 :: 11:20:
Тип того не покатит?

Ты чего?..  Ужас
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
marina
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Re: Поиск элемента справочника по ID
Ответ #22 - 19. Июня 2009 :: 11:53
Печать  
в этом случае мне только одно поле нужно было Наименование, так что я написала немного по-другому

     RS = СоздатьОбъект("ODBCRecordset");
     ТекстЗапроса = "
     |SELECT
     |  ID, Descr
     |FROM
     |  $Справочник.Сотрудники
     
     |WHERE
     |  ID = :ГУИД
     |union
     |SELECT
     |  ID, Descr
     |FROM
     |  $Справочник.Операторы
     |WHERE
     |  ID = :ГУИД";
     RS.УстановитьТекстовыйПараметр("ГУИД", ГУИД);
     
     Спр = RS.ВыполнитьИнструкцию(ТекстЗапроса);
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Поиск элемента справочника по ID
Ответ #23 - 19. Июня 2009 :: 11:59
Печать  
id уникален только в пределах одной таблицы, это не ГУИД. Т.е. таким запросом вы можете получить две записи, и это будут разные сотрудники
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Поиск элемента справочника по ID
Ответ #24 - 23. Июня 2009 :: 10:54
Печать  
Вы бы хоть предупредили девушку, что
Цитата:
так чтобы в результате запроса мы получили именно элемент справочника, с которым можно будет работать как после Спр.НайтиЭлемент(), т.е. Можно будет обрататься к реквизитам, редактировать их и записать элемент.

запросом не получится.
  
Наверх
 
IP записан
 
marina
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Re: Поиск элемента справочника по ID
Ответ #25 - 25. Июня 2009 :: 19:46
Печать  
Со справочниками все получилось - сейчас разбираюсь с документами - у меня там запрос 1С на 6 документов и 11 полей из этих документов Печаль. Пытаюсь переписать на прямой.
Со справочниками возникла следующая проблема: в документе есть поле Клиент типа Справочник.КлиентыФиз, пытаюсь получить ID этого клиента через функцию_IdToStr(Числовой_ИД).  Числовой_ИД получаю из ЗначениеВСтрокуВнутр(Объект), но почему-то IdToStr мне возвращает вместо "  1GLLПО1" - "1GLL".
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Поиск элемента справочника по ID
Ответ #26 - 27. Июня 2009 :: 17:04
Печать  
Правильно, Марина
Код базы (три последних символа) никакого отношения не имеют к преобразованию из 36 в 10 систему
Их надо тупо добавить
У меня такой даже вопрос был для кандидата на соискание должности, никто правда на него не ответил Печаль
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
VoditelKobyly
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 22
Зарегистрирован: 13. Февраля 2009
Пол: Мужской
Re: Поиск элемента справочника по ID
Ответ #27 - 07. Июля 2009 :: 08:21
Печать  
А вы уверены, что ИД от внешеней системы будет совпадать с ID, который присваивает 1С в справочниках? Или у вас сначала рождаются элементы справочников в 1С, затем передаются во внешнюю систему, а потом обратно, какая-то информация приходит?
  
Наверх
 
IP записан
 
marina
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Re: Поиск элемента справочника по ID
Ответ #28 - 07. Июля 2009 :: 13:51
Печать  
Все Ид рождаются в 1С, а потом передаются во внешнюю систему.

Столкнулась с такой проблемой. Выбираю элемент справочника по ИД, нахожу его, меняю в нем данные, а когда пытаюсь записать, то пишет - не выбран элемент, хотя СпрТМЦ.Выбран() = 1

     RS = СоздатьОбъект("ODBCRecordset");
     ТекстЗапроса = "
     |SELECT
     |  Спр.ID as [Элемент $Справочник.ТМЦ]
     |FROM
     |  $Справочник.ТМЦ as Спр
     |WHERE
     |  Спр.ID = :ГУИД";
     RS.УстановитьТекстовыйПараметр("ГУИД", ГУИД);
     
     СпрТМЦ = RS.ВыполнитьСкалярный(ТекстЗапроса);
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поиск элемента справочника по ID
Ответ #29 - 07. Июля 2009 :: 14:05
Печать  
СпрТМЦ = СоздатьОбъект("Справочник.ТМЦ");
Если СпрТМЦ.НайтиЭлемент(RS.ВыполнитьСкалярный(ТекстЗапроса)) = 1 Тогда
     ...
     СпрТМЦ.Записать();
КонецЕсли;
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать