Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Запрос к периодическим реквизитам (число прочтений - 4086 )
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Запрос к периодическим реквизитам
30. Ноября 2011 :: 07:50
Печать  
Добрый день.
Есть запрос на получение периодического значения.

Код
Выбрать все
	ТекстЗапроса = "
	|set nocount on
	|SELECT $ПоследнееЗначение.Поставщики.ТранспортнаяСоставляющая(Поставщики.ID, :ВыбДата) ТранспортнаяСоставляющая
	|FROM $Справочник.Поставщики AS Поставщики With (NOLOCK)
	|WHERE (Поставщики.PARENTEXT = :Номенклатура)
	|	AND ($Поставщики.Поставщик = :Поставщик)
	|	AND (Поставщики.ISMARK = 0)
	|GROUP BY Поставщики.ID
	|"; 


в разделенном и монопольном режиме работает корректно.
Но когда происходит восстановление последовательности, то вылетает с ошибкой.
Код
Выбрать все
НужноВернуть = глРС.ВыполнитьСкалярный(ТекстЗапроса); : {Глобальный модуль(6377)}: State 42000, native 102, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'ID'. 



в связи с этим разнес на 2 запроса
Код
Выбрать все
		ТекстЗапроса = "
		|set nocount on
		|SELECT
		|	top 1
		|	Поставщики.ID
		|FROM $Справочник.Поставщики AS Поставщики With (NOLOCK)
		|WHERE Поставщики.ParentExt = :Номенклатура
		|	AND ($Поставщики.Поставщик = :Поставщик)
		|	AND (Поставщики.ISMARK = 0)
		|";

		глРС.УстановитьТекстовыйПараметр("Номенклатура", Номенклатура);
		глРС.УстановитьТекстовыйПараметр("Поставщик", Поставщик);
		ПоставщикИД = глРС.ВыполнитьСкалярный(ТекстЗапроса);

		ТекстЗапроса = "
		|set nocount on
		|SELECT
		|	$ПоследнееЗначение.Поставщики.ТранспортнаяСоставляющая(:ПоставщикИД, :ВыбДата) ТранспортнаяСоставляющая
		|";
		глРС.УстановитьТекстовыйПараметр("ВыбДата", ДатаДок);
		глРС.УстановитьТекстовыйПараметр("ПоставщикИД",ПоставщикИД); 


тогда работает и в восстановлении последовательности
Вопрос, почему может не работать получение значения одним запросом?
  
Наверх
www  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #1 - 30. Ноября 2011 :: 08:28
Печать  
скорее всего потому что там нет (nolock)
  
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #2 - 30. Ноября 2011 :: 08:31
Печать  
Z1 писал(а) 30. Ноября 2011 :: 08:28:
скорее всего потому что там нет (nolock)

где нет?
  
Наверх
www  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #3 - 30. Ноября 2011 :: 08:34
Печать  
MaxPiter писал(а) 30. Ноября 2011 :: 08:31:
Z1 писал(а) 30. Ноября 2011 :: 08:28:
скорее всего потому что там нет (nolock)

где нет?

в
$ПоследнееЗначение.Поставщики.ТранспортнаяСоставляющая(Поставщики.ID, :ВыбДата)
это ведь отдельный sql запрос
  
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #4 - 30. Ноября 2011 :: 10:10
Печать  
Дошло.
...
Так там же метапарсер разбирает, может можно туда как-то добавить nolock ?
  
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Запрос к периодическим реквизитам
Ответ #5 - 30. Ноября 2011 :: 10:13
Печать  
можешь и "руками" этот запрос написать, делов то..
ЗЫ: в профайлере готовый код валяется, да и в FAQ есть примеры.
  
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #6 - 30. Ноября 2011 :: 10:43
Печать  
Eprst писал(а) 30. Ноября 2011 :: 10:13:
можешь и "руками" этот запрос написать, делов то..
ЗЫ: в профайлере готовый код валяется, да и в FAQ есть примеры.

так вот по FAQ и делаю и руками дописать конечно можно.
в профайлере этот запрос не смотрел, но там запрос без nolock? может в метапарсере есть возможность это добавить? или есть какие-то свои сложности?
  
Наверх
www  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #7 - 30. Ноября 2011 :: 10:57
Печать  
MaxPiter писал(а) 30. Ноября 2011 :: 10:43:
Eprst писал(а) 30. Ноября 2011 :: 10:13:
можешь и "руками" этот запрос написать, делов то..
ЗЫ: в профайлере готовый код валяется, да и в FAQ есть примеры.

так вот по FAQ и делаю и руками дописать конечно можно.
в профайлере этот запрос не смотрел, но там запрос без nolock? может в метапарсере есть возможность это добавить? или есть какие-то свои сложности?

это неправильно чтобы метапарсер автоматически добавлял nolock
дело даже не в сложности включения этого а в том что наличие
nolock  многое меняет фактически для sql сервера это совершенно другой запрос.
  
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #8 - 30. Ноября 2011 :: 11:01
Печать  
Z1 писал(а) 30. Ноября 2011 :: 10:57:
MaxPiter писал(а) 30. Ноября 2011 :: 10:43:
Eprst писал(а) 30. Ноября 2011 :: 10:13:
можешь и "руками" этот запрос написать, делов то..
ЗЫ: в профайлере готовый код валяется, да и в FAQ есть примеры.

так вот по FAQ и делаю и руками дописать конечно можно.
в профайлере этот запрос не смотрел, но там запрос без nolock? может в метапарсере есть возможность это добавить? или есть какие-то свои сложности?

это неправильно чтобы метапарсер автоматически добавлял nolock
дело даже не в сложности включения этого а в том что наличие
nolock  многое меняет фактически для sql сервера это совершенно другой запрос.

так может в строку
Код
Выбрать все
$ПоследнееЗначение.Поставщики.ТранспортнаяСоставляющая(Поставщики.ID, :ВыбДата) ТранспортнаяСоставляющая 


добавить еще один параметр?
Код
Выбрать все
$ПоследнееЗначение.Поставщики.ТранспортнаяСоставляющая(Поставщики.ID, :ВыбДата, nolock) ТранспортнаяСоставляющая 



или я много хочу? Улыбка
  
Наверх
www  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #9 - 30. Ноября 2011 :: 11:04
Печать  
в (5) же ответили что надо сделать.
там писать для твоего случая гораздо меньше
чем что-то переделывать причем твое предложение (ИХМО)
противоречит логике работы sql.
  
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #10 - 30. Ноября 2011 :: 11:05
Печать  
Z1 писал(а) 30. Ноября 2011 :: 11:04:
в (5) же ответили что надо сделать.
там писать для твоего случая гораздо меньше
чем что-то переделывать причем твое предложение (ИХМО)
противоречит логике работы sql.

Улыбка
спасибо, пошел пилить
  
Наверх
www  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #11 - 30. Ноября 2011 :: 11:35
Печать  
друзья, посмотрите же наконец в профайлер.
там вы увидите что $ПоследнееЗначение выполняется с nolock
  

1&&2&&3
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #12 - 30. Ноября 2011 :: 12:15
Печать  
trad писал(а) 30. Ноября 2011 :: 11:35:
друзья, посмотрите же наконец в профайлер.
там вы увидите что $ПоследнееЗначение выполняется с nolock

вот так вот Улыбка
а нафлудили то Улыбка
возвращаюсь к первому посту и вопросу Улыбка
В чем же тогда байда?
  
Наверх
www  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #13 - 30. Ноября 2011 :: 12:21
Печать  
может быть имеет смысл попробовать написать
With (NOLOCK) без With
  

1&&2&&3
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: Запрос к периодическим реквизитам
Ответ #14 - 30. Ноября 2011 :: 19:48
Печать  
trad писал(а) 30. Ноября 2011 :: 12:21:
может быть имеет смысл попробовать написать
With (NOLOCK) без With

помогло!!!
а в чем же великий смысл?
добавлю для разделенного режима с nolock а для монопольного без.
Спасибо за помощь. Улыбка
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать