Переключение на Главную Страницу Страницы: 1 ... 15 16 [17] 18 19 ... 60 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" (число прочтений - 304967 )
Uncle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #240 - 30. Сентября 2009 :: 09:26
Печать  
Нашел косяк:

Код
Выбрать все
ВЫБРАТЬ
Товар,
ОстатокТовараОстаток КАК Остаток
ИЗ $РегистрОстатки.ОстаткиТоваров(,,(Товар),(ОстатокТовара)) 



на DBF выполняется, на SQL ругается

ПрямойЗапрос::Выполнить(Строка ТипОбъекта=ИндексированнаяТаблица, Строка ТекстВыполнения=, Число БезПодготовки=0) : State 42000, native 170, message [Microsoft][ODBC SQL Server Driver][SQL Server]Line 24: Incorrect syntax near ')'.
ЗапросODBC.ВыполнитьИнструкцию(ТекстЗапроса,ПолучательЗапроса,1);
{ПрямойЗапрос@MD(10425) }
  
Наверх
 
IP записан
 
Uncle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #241 - 30. Сентября 2009 :: 09:38
Печать  
Похоже что для SQL надо в обязательном порядке давать имя вложенному запросу. У меня этот запрос распаковался в такой вид

SELECT
Товар,
ОстатокТовараОстаток AS Остаток

FROM (
     SELECT
           Товар
           ,SUM(ОстатокТовараОстаток) AS ОстатокТовараОстаток
           
     FROM
           (SELECT
                 rg_123.sp125 AS Товар
                 ,rg_123.sp127 AS ОстатокТовараОстаток
                 
           FROM
                 RG123 AS rg_123 (nolock)
           WHERE
                 rg_123.PERIOD = '20090901'
           ) AS vt_ra_123
     GROUP BY
           Товар
) AS ЧтоТо
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #242 - 30. Сентября 2009 :: 09:51
Печать  
Вообще то да, для SQL обязательно задавать представление для вложенного запроса. SQLite в этом плане более "демократичен". поскольку многие из SQL-ных конструкций он съест и не поперхнется, правда ничего не выдаст при этом Улыбка (это так, риторика).
А вообще то я лично имею дурную привычку переименовывать все поля и таблицы, и вам тоже советую. Например: запрос
Код
Выбрать все
ВЫБРАТЬ Контрагент, Договор
ИЗ (ВЫБРАТЬ $Спр.Контрагент, $Спр.Договор
	ИЗ Справочник.Соответствие КАК Спр $nolock) КАК СписокКонтрДог 


для SQL например не выполнится поскольку после подготовки будет иметь вид
Код
Выбрать все
SELECT Контрагент,Договор
FROM (SELECT Спр.spXXX, Спр.spXXX
	    FROM scXXX AS Спр (nolock)) AS СписокКонтрДог 


Соответственно вложенный запрос выдаст колонки не Контрагент и Договор, как этого ожидает вышестоящий запрос, а колонки spXXX.
Вот такие вот "особенности использования прямых запросов в 7.7".  Подмигивание

Пы.сы надеюсь я Америку никому не открыл  Подмигивание
  

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


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #243 - 30. Сентября 2009 :: 10:09
Печать  
Согласен с приведенным примером, но в моем случае указывать имя таблице считаю излишним, поскольку оно больше в контексте этого запроса нигде не применится. Конечно не мне решать, но я бы добавил проверку для таких случаев. Хотя бы для того чтобы поддержать идеологию платформонезависимости  Подмигивание
  
Наверх
 
IP записан
 
Uncle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #244 - 30. Сентября 2009 :: 10:22
Печать  
О, еще один таракан:
слегда модифицированный тот же запрос
Код
Выбрать все
ВЫБРАТЬ
Товар,
ОстатокТовараОстаток КАК Остаток
ИЗ $РегистрОстатки.ОстаткиТоваров(:КонДата,,(Товар),(ОстатокТовара)) КАК Остатки 



распаковывается в

Код
Выбрать все
SELECT
Товар,
ОстатокТовараОстаток AS Остаток
FROM (
	SELECT
		Товар
		,SUM(ОстатокТовараОстаток) AS ОстатокТовараОстаток

	FROM
		(SELECT
			rg_123.sp125 AS Товар
			,rg_123.sp127 AS ОстатокТовараОстаток

		FROM
			RG123 AS rg_123 (nolock)
		WHERE
			rg_123.PERIOD = '20090901'

		UNION ALL

		SELECT
			ra_123.sp125
			,CASE WHEN ra_123.debkred = 0 THEN -ra_123.sp127 ELSE ra_123.sp127 END

		FROM
			Журнал AS docjourn (nolock)
		LEFT JOIN RA123 AS ra_123 (nolock)
		ON ra_123.IDDOC = docjourn.IDDOC
		WHERE (docjourn.DATE_TIME_IDDOC >= '20090916     0     0   ')
		AND (docjourn.DATE_TIME_IDDOC < '20090916     0     0   ')
		) AS vt_ra_123
	GROUP BY
		Товар
	HAVING (SUM(ОстатокТовараОстаток) <> 0)

) AS Остатки 



и вываливает ошибку

ПрямойЗапрос::Выполнить(Строка ТипОбъекта=ИндексированнаяТаблица, Строка ТекстВыполнения=, Число БезПодготовки=0) : State 42S02, native 208, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Журнал'.
ЗапросODBC.ВыполнитьИнструкцию(ТекстЗапроса,ПолучательЗапроса,1);
{ПрямойЗапрос@MD(10425) }

Смущённый
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #245 - 30. Сентября 2009 :: 11:02
Печать  
Через секунду бери новую версию. Там большое количество изменений, в том числе и то что указано выше.
Давно что-то не мог выложить, времени никак не хватало.

НОВУЮ ВЕРСИЮ БРАТЬ ОБЯЗАТЕЛЬНО ВСЕМ.
  

1Cv7_query.rar ( 179 KB | Загрузки )

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #246 - 30. Сентября 2009 :: 11:23
Печать  
Вышеприведенная ошибка (с неправильным именем таблицы _1SJOURN - Журнал) возникала только в релизе 1.04.002 и 1.04.003. Причем ранее все было правильно, пока я своими "кучеряжками" туда не влез.  Смущённый
  

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


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #247 - 30. Сентября 2009 :: 11:42
Печать  
Вот спасибо, оперативность, как всегда, на высоте!   Класс
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #248 - 30. Сентября 2009 :: 11:47
Печать  
Uncle писал(а) 30. Сентября 2009 :: 11:42:
Вот спасибо, оперативность, как всегда, на высоте!   Класс


Слушай в твоем запросе есть одна "нестыковочка". Дело не в самом запросе, а как работает построитель. Дело в том что он ("построитель") посчитал что надо кроме таб. итогов еще и таб. движений задействовать. При этом границы рассчитывает явно с ошибкой или просто зря задействует таблицы. В общем мне надо от тебя:
1. Значение параметра окончания запроса
2. Дата точки актуальности (ДатаТА)
Скажи плиз.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #249 - 30. Сентября 2009 :: 12:05
Печать  
Ну все... я все понял. Исправлю сегодня-завтра
  

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


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #250 - 30. Сентября 2009 :: 12:06
Печать  
vandalsvq писал(а) 30. Сентября 2009 :: 11:47:
Uncle писал(а) 30. Сентября 2009 :: 11:42:
Вот спасибо, оперативность, как всегда, на высоте!   Класс


Слушай в твоем запросе есть одна "нестыковочка". Дело не в самом запросе, а как работает построитель. Дело в том что он ("построитель") посчитал что надо кроме таб. итогов еще и таб. движений задействовать. При этом границы рассчитывает явно с ошибкой или просто зря задействует таблицы. В общем мне надо от тебя:
1. Значение параметра окончания запроса
2. Дата точки актуальности (ДатаТА)
Скажи плиз.


Вернемся к старому разговору  Улыбка
Соответственно параметр задается так:
Код
Выбрать все
гЗапрос.УстановитьТекстовыйПараметр("КонДата",ПолучитьДатуТА()+1); 

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #251 - 30. Сентября 2009 :: 12:13
Печать  
Старый старым, но то что ты устанавливаешь можно вообще не указывать, тогда собственно рассчитается как надо. На ТА.

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

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


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #252 - 30. Сентября 2009 :: 12:21
Печать  
vandalsvq писал(а) 30. Сентября 2009 :: 12:13:
Старый старым, но то что ты устанавливаешь можно вообще не указывать, тогда собственно рассчитается как надо. На ТА.

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


У меня это щаз вроде заглушки до лучших времен (когда будет реакция на документ)  Подмигивание
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #253 - 30. Сентября 2009 :: 12:26
Печать  
Слушай, а зачем тебе остатки на конец документа? Это мне интересно просто Улыбка
  

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


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #254 - 30. Сентября 2009 :: 12:40
Печать  
vandalsvq писал(а) 30. Сентября 2009 :: 12:26:
Слушай, а зачем тебе остатки на конец документа? Это мне интересно просто Улыбка

Конкретно я это использую в кассовых ордерах и банковской выписке, бухи привыкли видеть прямо в форме документа остаток денег на р/с с учетом текущего дока
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 15 16 [17] 18 19 ... 60
ОтправитьПечать