Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема помогите найти ошибку в запросе (число прочтений - 1701 )
janibeg
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 13. Февраля 2008
помогите найти ошибку в запросе
19. Августа 2010 :: 13:55
Печать  
Начал изучать 1с++
Прочитал мануал, решил проверить один из примеров на практике Улыбка
Код
Выбрать все
ТекстЗапроса = "
|SELECT
|	Док.IDDoc as [Док $Документ.Реализация],
|	$Док.Контрагент as [Контрагент $Справочник]
|FROM
|	$Документ.Реализация as Док
|WHERE
|	$Док.Контрагент = :ВыбКонтрагент~";
 


Вот полный код моего отчета:
Код
Выбрать все
//*******************************************
Процедура Сформировать()    
ЗагрузитьВнешнююКомпоненту("1cpp.dll");
Запрос = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
|SELECT
|  Док.IDDoc as [Док $Документ.Реализация],
|  $Док.Контрагент as [Контрагентик $Справочник.Контрагенты],
|  $Док.Склад as [Покупатель $Справочник.Склады]
|FROM
|  $Документ.Реализация as Док
|WHERE
| $Док.Контрагент =:ВыбКонтрагент~";
//Запрос.УстановитьТекстовыйПараметр("ВыбКонтрагент","Справочник.Контрагенты");
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
ТЗ.Выгрузить(ТЗ2);
//ТЗ.ВыбратьСтроку();
КонецПроцедуры
 


Насколько я понял ВыбКонтрагент это переменная из Диалога, которую я выбрал как Справочник.Контрагенты
Выдает следующую ошибку
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
{D:\1CBASE\EXTFORMS\RESEARCHING\1C+\SQL_REQUEST.ERT(15)}: Meta name parser error: не указан параметр ":ВыбКонтрагент"
Помогите новичку, пожалуйста Подмигивание
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: помогите найти ошибку в запросе
Ответ #1 - 19. Августа 2010 :: 13:59
Печать  
Запрос.УстановитьТекстовыйПараметр("ВыбКонтрагент",ВыбКонрагент); //ВыбКонрагент - реквизит диалога на форме с типом Справочник.Контрагенты, например
  
Наверх
 
IP записан
 
janibeg
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 13. Февраля 2008
Re: помогите найти ошибку в запросе
Ответ #2 - 19. Августа 2010 :: 14:10
Печать  
[quote author=Eprst link=1282226127/0#1 ; //ВыбКонрагент - реквизит диалога на форме с типом Справочник.Контрагенты, например
[/quote]
Так и сделал, теперь выдает пустой результат, без WHERE
печатает огромнейшую таблицу Подмигивание
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: помогите найти ошибку в запросе
Ответ #3 - 19. Августа 2010 :: 14:20
Печать  
модификатор выкини :
$Док.Контрагент = :ВыбКонтрагент
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: помогите найти ошибку в запросе
Ответ #4 - 19. Августа 2010 :: 14:29
Печать  
Код
Выбрать все
Запрос = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
|SELECT
|  Док.IDDoc as [Док $Документ.Реализация],
|  $Док.Контрагент as [Контрагентик $Справочник.Контрагенты],
|  $Док.Склад as [Покупатель $Справочник.Склады]
|FROM
|  $Документ.Реализация as Док
|WHERE
| $Док.Контрагент =:ВыбКонтрагент";
Запрос.УстановитьТекстовыйПараметр("ВыбКонтрагент",КонктерЗначение);
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
ТЗ.ВыбратьСтроку();
 



1.как объявлен Контрагент в документе реализация ?

Загружать 1сpp надо один раз ПриНачалеРаботыСистемы.

  
Наверх
 
IP записан
 
janibeg
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 13. Февраля 2008
Re: помогите найти ошибку в запросе
Ответ #5 - 20. Августа 2010 :: 05:21
Печать  
Eprst писал(а) 19. Августа 2010 :: 14:20:
модификатор выкини :
$Док.Контрагент = :ВыбКонтрагент

Ага, помогло, спасибо!
Только странно, ведь в доках пример был с модификатором, в чем же косяк?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: помогите найти ошибку в запросе
Ответ #6 - 20. Августа 2010 :: 05:43
Печать  
    В том, что ты не внимательно читаешь документацию.
В том примере - реквизит неопределенного вида был в документе,
вот и приходилось втыкать модификатор в условие, чтоб реквизит достраивался до 13 символов (вид справочника "слева" добавляется к ид) - именно так хранится реквизит неопределенного вида в ИБ.
  
Наверх
 
IP записан
 
janibeg
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 13. Февраля 2008
Re: помогите найти ошибку в запросе
Ответ #7 - 20. Августа 2010 :: 05:54
Печать  
спасибо, уловил Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать