Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) PLAESE HELP - Вылетает база при запросе (число прочтений - 6688 )
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
PLAESE HELP - Вылетает база при запросе
29. Августа 2006 :: 02:21
Печать  
В конфигурации пытаюсь использовать прямой запрос для получения цены товара в форме списка справочника:
Краткая пердистория:
-Есть спр. "Цены", подчиненный спр. "Номенклатура", который имеет реквизиты "ТипЦен" и "Цена"-периодический;
-Есть спр. "Прайс", в котором есть реквизит "Товар" - ссылка на эл. спр. "Номенклатура"
-В форме спр. "Прайс" необходимо выводить значение цены ук-го типа на тек. дату.
Т.к. получение стандартными средствами знач. цены ощутимо "тормозит" прокрутку справочника, было принято решение исп-ть прямой запрос:

Код
Выбрать все
Перем ЗапросЦ;

//_____________________________________________________________________________            
Процедура ПриОткрытии()

	Перем ТекстЗапросаЦ;

...........

	Если (глЭтоSQLБаза = 1) Тогда

		ЗапросЦ = СоздатьОбъект("ODBCRecordset");

		ТекстЗапросаЦ = "
		|SELECT
		|    $ПоследнееЗначение.Цены.Цена(СпрЦены.ID, ?)
		|FROM
		|    $Справочник.Цены as СпрЦены WITH (NOLOCK)
		|WHERE
		|    СпрЦены.ParentExt = ? AND $СпрЦены.ТипЦен = ? AND СпрЦены.IsMark = 0";

		ЗапросЦ.Подготовить(ТекстЗапросаЦ);
		ЗапросЦ.ДобПараметр(1,10,8,0);
		ЗапросЦ.ДобПараметр(1,14,9,0);
		ЗапросЦ.ДобПараметр(1,14,9,0);
		ЗапросЦ.УстПараметр(1, ПолучитьДатуТА());
		ЗапросЦ.УстПараметр(3, тип_цен);
	КонецЕсли;

КонецПроцедуры //ПриОткрытии

//_____________________________________________________________________________            
Функция ВернутьЦену()
    Перем цена;

	Если (ТекущийЭлемент().ЭтоГруппа() = 1) Тогда
	    Возврат "";
	КонецЕсли;

	Если (глЭтоSQLБаза = 1) Тогда
		Если (тип_цен.СпособФормированияЦен = Перечисление.СпособыФормированияЦен.ХранитсяВИБ) Тогда
			ЗапросЦ.УстПараметр(2, ТекущийЭлемент().Товар);
			цена = ЗапросЦ.ВыполнитьСкалярный();
	    	Возврат Формат(цена,"Ч0.2");
		КонецЕсли;
	КонецЕсли;

	Если (глВернутьЦену(ТекущийЭлемент().Товар, тип_цен, ТекущаяДата(), цена) = 1) Тогда
	    Возврат Формат(цена,"Ч0.2");
	КонецЕсли;

	Возврат "";
КонецФункции //ВернутьЦену

//_____________________________________________________________________________            
 



Функция "ВернутьЦену" используется в формуле, в колонке табл. части типа "Текст"

Запрос отлично выполняется 5 раз (форма спр. "свернута", видно малое кол-во строк), а затем база выпадает с ошибкой (см. вложение)

В чем может быть дело? Please HELP...

PS:"Вылет" происходит при выполнении кода:

Код
Выбрать все
Товар = ТекущийЭлемент().Товар;
 



25-я платформа, релиз 1С++ 2.0.2.2
« Последняя редакция: 29. Августа 2006 :: 06:45 - slider26 »  

1122_001.jpg ( 40 KB | Загрузки )
1122_001.jpg
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: PLAESE HELP - Вылетает база при запросе
Ответ #1 - 29. Августа 2006 :: 04:42
Печать  
Замени ВыполнитьСкалярный на ВыполнитьИнструцию,
похоже, он как-то криво работает с парам. запросами ..
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: PLAESE HELP - Вылетает база при запросе
Ответ #2 - 29. Августа 2006 :: 04:50
Печать  
Цитата:
Замени ВыполнитьСкалярный на ВыполнитьИнструцию,
похоже, он как-то криво работает с парам. запросами ..

нет, не похоже
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: PLAESE HELP - Вылетает база при запросе
Ответ #3 - 29. Августа 2006 :: 04:53
Печать  
to 0
ты уверен что запрос всегда возвращает в выборке не более одной строки?
я бы поставил top 1
  

1&&2&&3
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: PLAESE HELP - Вылетает база при запросе
Ответ #4 - 29. Августа 2006 :: 05:40
Печать  
При попытке вернуть структуру в ВыполнитьСкалярный вылетает такая бодяга.
При попытке вернуть одно значение, та же фигня.
Если заменить на ВыполнитьИнструкцию - все работает, по крайней мере на
v. 2.0.3.0 NB от 17.06.2006
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: PLAESE HELP - Вылетает база при запросе
Ответ #5 - 29. Августа 2006 :: 05:51
Печать  
slider26 писал(а) 29. Августа 2006 :: 02:21:
PS:"Вылет" происходит при выполнении кода:

Код
Выбрать все
Товар = ТекущийЭлемент().Товар;
 



25-я платформа, релиз 1С++ 2.0.2.2


я что-то не вижу этого "падучего" кода у тебя
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: PLAESE HELP - Вылетает база при запросе
Ответ #6 - 29. Августа 2006 :: 06:31
Печать  
Цитата:
При попытке вернуть структуру в ВыполнитьСкалярный вылетает такая бодяга.
При попытке вернуть одно значение, та же фигня.
Если заменить на ВыполнитьИнструкцию - все работает, по крайней мере на
v. 2.0.3.0 NB от 17.06.2006

пример пожалуйста
  

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


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: PLAESE HELP - Вылетает база при запросе
Ответ #7 - 29. Августа 2006 :: 06:36
Печать  
DrACe писал(а) 29. Августа 2006 :: 05:51:
slider26 писал(а) 29. Августа 2006 :: 02:21:
PS:"Вылет" происходит при выполнении кода:

Код
Выбрать все
Товар = ТекущийЭлемент().Товар;
 



25-я платформа, релиз 1С++ 2.0.2.2


я что-то не вижу этого "падучего" кода у тебя


"Падучий" код - отследился отладчиком - Первая строка функции, возвращающей остатки по складу, т.к. вылет происходит сразу, после выполнения данной строки, а также в том случае, когда просто под отладчиком пытаемся вычислить "ТекущийЭлемент().Товар" то текст функции не приведен в коде как не имеющий отношения к проблеме
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: PLAESE HELP - Вылетает база при запросе
Ответ #8 - 29. Августа 2006 :: 06:44
Печать  
trad писал(а) 29. Августа 2006 :: 04:53:
to 0
ты уверен что запрос всегда возвращает в выборке не более одной строки?
я бы поставил top 1


Огромное спасибо Улыбка top 1 спас ситуацию.
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: PLAESE HELP - Вылетает база при запросе
Ответ #9 - 29. Августа 2006 :: 06:51
Печать  
Цитата:
пример пожалуйста


Беру свои слова обратно ..
top 1 - рулит!  Класс
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: PLAESE HELP - Вылетает база при запросе
Ответ #10 - 29. Августа 2006 :: 06:52
Печать  
slider26 писал(а) 29. Августа 2006 :: 06:44:
Огромное спасибо Улыбка top 1 спас ситуацию.

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

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: PLAESE HELP - Вылетает база при запросе
Ответ #11 - 29. Августа 2006 :: 06:57
Печать  
Цитата:
slider26 писал(а) 29. Августа 2006 :: 06:44:
Огромное спасибо Улыбка top 1 спас ситуацию.

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

Я где-то говорил, что уже использовал ранее TOP 1? Озадачен
Сылку в студию, PLS
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: PLAESE HELP - Вылетает база при запросе
Ответ #12 - 29. Августа 2006 :: 07:00
Печать  
slider26 писал(а) 29. Августа 2006 :: 06:57:
Я где-то говорил, что уже использовал ранее TOP 1? Озадачен
Сылку в студию, PLS

навреное не проснулся еще, это U_zer утверждал что это не помогло...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
U_zer
Экс-Участник


Re: PLAESE HELP - Вылетает база при запросе
Ответ #13 - 29. Августа 2006 :: 07:12
Печать  
Цитата:
навреное не проснулся еще, это U_zer утверждал что это не помогло...


Хмм, а где я утверждал, что это не помогло?
Грабли были там же, где и у slider26
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: PLAESE HELP - Вылетает база при запросе
Ответ #14 - 29. Августа 2006 :: 07:21
Печать  
Цитата:
Хмм, а где я утверждал, что это не помогло?
Грабли были там же, где и у slider26

ну почитай вот это:
http://www.1cpp.ru/forum/YaBB.pl?num=1156818080/4#4

это же не мое сообщение то...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать