Переключение на Главную Страницу Страницы: 1 ... 45 46 [47] 48 49 ... 60 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" (число прочтений - 303189 )
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #690 - 26. Мая 2010 :: 03:10
Печать  
Чем алиас в верхнем регистре отличается от нижнего? Улыбка Наверное ничем. Собственно наврядли они стали чувствительны.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПрямойЗапрос"
Ответ #691 - 26. Мая 2010 :: 05:01
Печать  
всетаки меня не приглючило

ПрямойЗапрос::Выполнить(Строка ТипОбъекта=ИндексированнаяТаблица, Строка ТекстВыполнения=
ВЫБРАТЬ $КОНТРАГЕНТ.Наименование
ИЗ Справочник.Контрагенты КАК Контрагент
, Число БезПодготовки=0) : Meta name parser error: неизвестное метаимя или алиас "$КОНТРАГЕНТ"
ЗапросODBC.ВыполнитьИнструкцию(ТекстЗапроса,ПолучательЗапроса,1);
  
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #692 - 26. Мая 2010 :: 08:51
Печать  
Уууу... как не хорошо то получается. Причем я так понимаю проблема только в DBF должна быть
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПрямойЗапрос"
Ответ #693 - 26. Мая 2010 :: 08:58
Печать  
Проблема скорей всего заключается в парсере класса.

если что, то запрос проверял на SQL базе  Круглые глаза
  
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #694 - 26. Мая 2010 :: 09:03
Печать  
Проверь на чистом ODBC он сожрет это или нет?
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПрямойЗапрос"
Ответ #695 - 26. Мая 2010 :: 09:26
Печать  
vandalsvq писал(а) 26. Мая 2010 :: 09:03:
Проверь на чистом ODBC он сожрет это или нет?


Так работает

Код
Выбрать все
ТекстЗапроса = "
|select КОНТРАГЕНТ.descr
|from $Справочник.Контрагенты AS Контрагент
|";

ПрямойЗапрос = СоздатьОбъект("ODBCRecordset");
ПрямойЗапрос.УстБД1С();

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



а если обратиться к другому реквизиту например

Код
Выбрать все
|select $КОНТРАГЕНТ.Идентификатор
|from $Справочник.Контрагенты AS Контрагент 


то ошибка

Код
Выбрать все
Meta name parser error: неизвестное метаимя или алиас "$КОНТРАГЕНТ" 




а если

Код
Выбрать все
|select $Контрагент.Идентификатор
|from $Справочник.Контрагенты AS Контрагент
 



то нормально.

1с++?  Ужас
  
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #696 - 26. Мая 2010 :: 11:37
Печать  
Ошибка получается в ODBC даже. В принципе решить можно, например я могу преобразовывать все имена таблиц в НРег() и не париться. Выглядеть будет не красиво, но какая разница если это уходит уже на выполнение Подмигивание.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #697 - 26. Мая 2010 :: 11:54
Печать  
Простите за вмешательство, а скорость от добавления НРЕГ() не изменится?
  
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #698 - 26. Мая 2010 :: 12:18
Печать  
Если ошибка в ODBC, то её явно надо зарегистрировать, чтобы кто-нибудь мого посмотреть и исправить. Странно, что до этого никто на это не натыкался. Проверить сам не могу, нету скуля (
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПрямойЗапрос"
Ответ #699 - 26. Мая 2010 :: 12:27
Печать  
ну так ни кто больше не может проверить у себя?

зы 1с++ v:3.0.1.28
  
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #700 - 26. Мая 2010 :: 15:28
Печать  
Счас проверил, да есть такая "бяка" в ODBC. Только вот в последней версии класса при парсинге обработка должна проходить нормально. У меня на тесте все выполнилось.
Anatol версию озвучь...
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #701 - 26. Мая 2010 :: 15:40
Печать  
У меня все работает ( без класса только 1cpp )
1сpp 3.0.1.28   sql2000
Код
Выбрать все
//*******************************************
Процедура Сформировать()
	Запрос = СоздатьОбъект("ODBCRecordSet");
	сообщить("Работает модуль = Сформировать()");
	ТекстЗапроса = "
	|select  $Товар.ВесГост from $Справочник.Товары as Товар
	|";
	ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
	ТЗ.ВыбратьСтроку();
КонецПроцедуры


Процедура Сформировать1()
	сообщить("Работает модуль = Сформировать1()");
	Запрос = СоздатьОбъект("ODBCRecordSet");
	ТекстЗапроса = "
	|select  $ТОВАР.ВесГост from $Справочник.Товары as ТОВАР
	|";
	ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
	ТЗ.ВыбратьСтроку();
КонецПроцедуры
 



обработку тоже прилагаю хотя у Вас нет такого справочника
  

test_54_____________________________.ert ( 29 KB | Загрузки )
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #702 - 26. Мая 2010 :: 15:42
Печать  
Неееее... у тебя работает потому как регистры представления таблицы совпадают. А вот ты напиши
Код
Выбрать все
select  $ТОВАР.ВесГост from $Справочник.Товары as Товар 


Я проверял на чистом ODBC так что наличие или отсутствие класса - фиолетово. А вот через КОП прогнанный запрос сработал.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #703 - 26. Мая 2010 :: 15:55
Печать  
vandalsvq писал(а) 26. Мая 2010 :: 15:42:
Неееее... у тебя работает потому как регистры представления таблицы совпадают. А вот ты напиши
Код
Выбрать все
select  $ТОВАР.ВесГост from $Справочник.Товары as Товар 


Я проверял на чистом ODBC так что наличие или отсутствие класса - фиолетово. А вот через КОП прогнанный запрос сработал.


Так при чем тут  ODBC ?
Такую конструкцию не может разобрать метапарсер преобразования в t-sql

вот две процедуры
Код
Выбрать все
Процедура Сформировать2()
	сообщить("Работает модуль = Сформировать2()");
	Запрос = СоздатьОбъект("ODBCRecordSet");
	ТекстЗапроса = "
	|select  $ТОВАР.ВесГост from $Справочник.Товары as Товар
	|";
	ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
	ТЗ.ВыбратьСтроку();
КонецПроцедуры

Процедура Сформировать21()
	meta1 = СоздатьОбъект("MetaDataWork");
	сообщить("Работает модуль = Сформировать21()");
	Запрос = СоздатьОбъект("ODBCRecordSet");
	ТекстЗапроса = "
	|select  $ТОВАР.ВесГост from $Справочник.Товары as Товар
	|";
	Стр1 = meta1.ОбрМетаСКЛ(ТекстЗапроса);
	Сообщить("Стр1 = " + Стр1);
	КонецПроцедуры

 



Вот результат работы

Цитата:
Работает модуль = Сформировать2()
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
{D:\1CPP_TEST\TEST_54_ПРОВЕРКА_ВЕРХНИЖНРЕГИСТРБУКВ.ERT(34)}: Meta name parser error: неизвестное метаимя или алиас "$ТОВАР"
Работает модуль = Сформировать21()
Стр1 = meta1.ОбрМетаСКЛ(ТекстЗапроса);
{D:\1CPP_TEST\TEST_54_ПРОВЕРКА_ВЕРХНИЖНРЕГИСТРБУКВ.ERT(45)}: Meta name parser error: неизвестное метаимя или алиас "$ТОВАР"

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


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #704 - 26. Мая 2010 :: 16:06
Печать  
Ну собственно не ODBC, а метапарсер - согласен. Факт в том что если писать через ODBCRecordset то не пройдет. Ошибка не класса, ко мне никаких вопросов Подмигивание.

Пы.сы. крайне странно что ранее не обнаруживалась, хотя я имею "дурную" привычку не особо играть регистром написания.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 45 46 [47] 48 49 ... 60
ОтправитьПечать