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


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Поиск элемента справочника по ID
16. Июня 2009 :: 12:45
Печать  
В 1С++ я - новичок. Нужно выполнить поиск элемента справочника по ID, так чтобы в результате запроса мы получили именно элемент справочника, с которым можно будет работать как после Спр.НайтиЭлемент(), т.е. Можно будет обрататься к реквизитам, редактировать их и записать элемент.

RS = СоздатьОбъект("ODBCRecordset");
RS.УстБД1С();
ТекстЗапроса = "
|SELECT
|    Спр.ID as [Элемент $Справочник.КлиентыФиз],
|FROM
|    $Справочник.КлиентыФиз as Спр
|WHERE
|    $Спр.ID = ГУИД";

ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);


Что делаю не так не пойму, но рукается на "Meta name parser error: поле таблицы не найдено "$Спр.ID""
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поиск элемента справочника по ID
Ответ #1 - 16. Июня 2009 :: 12:47
Печать  
$ при обращении к служебным полям не нужен.
  

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


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Re: Поиск элемента справочника по ID
Ответ #2 - 16. Июня 2009 :: 12:49
Печать  
В смысле так?

|    $Спр.ID = ГУИД";

или вообще нигде не нужен?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поиск элемента справочника по ID
Ответ #3 - 16. Июня 2009 :: 12:53
Печать  
В смысле так:

|    Спр.ID = ГУИД";

Вопрос ещё, что такое ГУИД?
  

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


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Re: Поиск элемента справочника по ID
Ответ #4 - 16. Июня 2009 :: 12:53
Печать  
Теперь "Неправильный синтаксис около ключевого слова "FROM"."

Печаль
  
Наверх
 
IP записан
 
marina
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Re: Поиск элемента справочника по ID
Ответ #5 - 16. Июня 2009 :: 12:54
Печать  
berezdetsky писал(а) 16. Июня 2009 :: 12:53:
В смысле так:

|    Спр.ID = ГУИД";

Вопрос ещё, что такое ГУИД?



ГУИД - это реквизит диалога
  
Наверх
 
IP записан
 
marina
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Re: Поиск элемента справочника по ID
Ответ #6 - 16. Июня 2009 :: 12:58
Печать  
Задача состоит в синхронизации с внешней системой. Синхронизация происходит по ID для справчоников и IDDoc для документов. Пока я пробую сделать внешнюю обработку, в которую руками вписываю ID, взятый из SQL. На деле будет приходить ИД от внешней системы и искать надо по нему
  
Наверх
 
IP записан
 
marina
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Re: Поиск элемента справочника по ID
Ответ #7 - 16. Июня 2009 :: 13:21
Печать  
В общем с ГУИД я разобралась, получилось:

RS = СоздатьОбъект("ODBCRecordset");
RS.УстБД1С();
ТекстЗапроса = "
|SELECT
|    Спр.ID as [$Элемент Справочник.КлиентыФиз],
|FROM
|    $Справочник.КлиентыФиз as Спр
|WHERE
|    Спр.ID = :ГУИД";
RS.УстановитьТекстовыйПараметр("ГУИД", ГУИД);

RS.Отладка(1);

ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);

В отладке получаем:
SELECT
    Спр.ID as [$Элемент Справочник.КлиентыФиз],
FROM
    sc74 as Спр
WHERE
    Спр.ID = '  11ID   '


Но все равно выскакивает "Неправильный синтаксис около ключевого слова "FROM""
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поиск элемента справочника по ID
Ответ #8 - 16. Июня 2009 :: 13:22
Печать  
marina писал(а) 16. Июня 2009 :: 12:53:
Теперь "Неправильный синтаксис около ключевого слова "FROM"."

Печаль

Запятая лишняя:
Код
Выбрать все
|SELECT
|    Спр.ID as [Элемент $Справочник.КлиентыФиз],
|FROM
 

  

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


1C++ rocks!

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

А как получить элемент после выполнения запроса?
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Поиск элемента справочника по ID
Ответ #10 - 16. Июня 2009 :: 14:20
Печать  
marina писал(а) 16. Июня 2009 :: 13:28:
Спасибо! Работает!

А как получить элемент после выполнения запроса?

ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()...
Спр = ТЗ.Элемент;
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Поиск элемента справочника по ID
Ответ #11 - 16. Июня 2009 :: 14:22
Печать  
marina писал(а) 16. Июня 2009 :: 13:28:
Спасибо! Работает!



А как получить элемент после выполнения запроса?

ТЗ.ВыбратьСтроку(); или любым методом работы с таблицейзначений


RS.УстБД1С(); не нужен

Код
Выбрать все
RS = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
|SELECT
|    Спр.ID as [$Элемент Справочник.КлиентыФиз],
|FROM
|    $Справочник.КлиентыФиз as Спр
|WHERE
|    Спр.ID = :ГУИД";
RS.УстановитьТекстовыйПараметр("ГУИД", ГУИД);



ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
ТЗ.ВыбратьСтроку();
 


также читай учебник
http://www.kb.mista.ru/article.php?id=86
  
Наверх
 
IP записан
 
marina
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 37
Зарегистрирован: 14. Июня 2009
Re: Поиск элемента справочника по ID
Ответ #12 - 16. Июня 2009 :: 20:48
Печать  
Дело в том, что выбратьСтроку() предоставляет пользователю возможность выбрать. А как сделать так, чтобы выбрать элемент автоматически и сразу его обработать? Через ВыбратьСтроки(), а потом цикл?
Эту статью я читала, спасибо

Столкнулась с еще одной проблемой. ID скопировала из базы и ищу по нему, но при ВыбратьСтроку() получаю таблицу с одним полем  '  .  .  ', хотя запрос в SQL находит этот элемент
Если я беру
|      Спр.ID as [$Элемент Справочник.КлиентыФиз]

то как мне потом обращаться к данным?
если
|      Спр.ID as Код

то получаю только код, а в первом случае как? почему отобращается '  .  .  '?
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

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

ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
Элемент = ТЗ.ПолучитьЗначение(1,"Элемент");
Код = ТЗ.ПолучитьЗначение(1,"Код"); 



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



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

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


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