Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Ошибка: "Недопустимое значение индекса параметра". (число прочтений - 12865 )
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Ошибка: "Недопустимое значение индекса параметра".
19. Июля 2006 :: 05:27
Печать  
В форме списка справочника получаю остаток с помощью парам. запроса и иногда почемуто возникает:

Код
Выбрать все
SQLSes.УстПараметр(1, ВибТов); : {Справочник.ТМЦ.ФормаСписка.ДляПодбора.Модуль(50)}: Недопустимое значение индекса параметра 



Подскажите почему.
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #1 - 19. Июля 2006 :: 06:00
Печать  
Возможно параметр не добавлен или удален.
  

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


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #2 - 19. Июля 2006 :: 06:17
Печать  
trad писал(а) 19. Июля 2006 :: 06:00:
Возможно параметр не добавлен или удален.


Да нет вроде все ок.
Я пробую посмотреть как работает - так все на "ура". А вот если посмотреть журнал 1С, там такие ошибки за день проскакивают раза три четыре и то сериями (для определенного юзвера).
И вот что интересно, та к то что ошибка эта у пользователя, одного и тоже возникает до 30-50 раз за одну секунду (тоисть в журнале куча таких ошибок с одним и тем же временем, до секунд).
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #3 - 19. Июля 2006 :: 07:09
Печать  
chicago писал(а) 19. Июля 2006 :: 06:17:
Да нет вроде все ок.

Раз рекордсет говорит что параметра нет - значит его действительно нет.
Я же не говорю что ты его явно удалил.
Например параметры неявно удаляются при закрытии рекордсета, при переподготовке при условии что выборка открыта... может быть что то еще...
Может быть ты на этом рекордсете еще какие-нибудь инструкции выполняешь...
Не зная алгоритма можно только гадать.
« Последняя редакция: 24. Июля 2006 :: 08:10 - trad »  

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


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #4 - 24. Июля 2006 :: 07:32
Печать  
А как можно предотвратить это "Недопустимое значение индекса параметра"?
Что сделать перед:
Код
Выбрать все
SQLSes.УстПараметр(1, ВибТов); 


что бы удостоверится, что НЕ "Недопустимое значение индекса параметра"?
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


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

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #5 - 24. Июля 2006 :: 07:37
Печать  
лучше всегда добавлять параметры явно, т.е. не методом "ПостроитьПараметры()", а ДобПараметр(<?>)
  
Наверх
 
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #6 - 24. Июля 2006 :: 07:46
Печать  
DrACe писал(а) 24. Июля 2006 :: 07:37:
лучше всегда добавлять параметры явно, т.е. не методом "ПостроитьПараметры()", а ДобПараметр(<?>)


Не понял Озадачен...
Уточняю используеться конструкция:
1.
Код
Выбрать все
	SQLSes.ДобПараметр(1, 14, 9, 0);
	SQLSes.ДобПараметр(1, 14, 9, 0);

	SQLSes.Подготовить(ТекстЗапроса);
 


2.
Код
Выбрать все
	SQLSes.УстПараметр(1, ВибТов);
	SQLSes.УстПараметр(2, ВибСкл);

	Возврат SQLSes.ВыполнитьСкалярный();
 


Нет у меня "ПостроитьПараметры()" вообще то.
  
Наверх
ICQ  
IP записан
 
U_zer
Экс-Участник


Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #7 - 24. Июля 2006 :: 07:50
Печать  
Скорее всего, запрос где-то закрывается.
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


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

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #8 - 24. Июля 2006 :: 07:54
Печать  
Цитата:
Скорее всего, запрос где-то закрывается.

+1

если это не так, то покажи текст запроса
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


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

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #9 - 24. Июля 2006 :: 07:56
Печать  
кстати, я делаю не так:
Код
Выбрать все
SQLSes.ДобПараметр(1, 14, 9, 0);
SQLSes.ДобПараметр(1, 14, 9, 0);

SQLSes.Подготовить(ТекстЗапроса); 


а так:
Код
Выбрать все
SQLSes.Подготовить(ТекстЗапроса);
SQLSes.ДобПараметр(1, 14, 9, 0);
SQLSes.ДобПараметр(1, 14, 9, 0); 


и у меня всегда все ОК
  
Наверх
 
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #10 - 24. Июля 2006 :: 08:03
Печать  
Цитата:
Скорее всего, запрос где-то закрывается.


Тогда вносим еще больше ясности:
1. В низу модуля формы устанавливаем
Код
Выбрать все
SQLSes = СоздатьОбъект("ODBCRecordSet");
 


2. Переменная SQLSes обявлена в модуле формы отчета (локальная).
3. При закрытии формы есть
Код
Выбрать все
Процедура ПриЗакрытии()
	SQLSes.Закрыть();
КонецПроцедуры
 


4. Переменная с идентификатором SQLSes может локально использоватся у в других формах отчетов справочников и тд.
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


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

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #11 - 24. Июля 2006 :: 08:07
Печать  
chicago писал(а) 24. Июля 2006 :: 08:03:
Цитата:
Скорее всего, запрос где-то закрывается.


Тогда вносим еще больше ясности:
1. В низу модуля формы устанавливаем
Код
Выбрать все
SQLSes = СоздатьОбъект("ODBCRecordSet");
 


2. Переменная SQLSes обявлена в модуле формы отчета (локальная).
3. При закрытии формы есть
Код
Выбрать все
Процедура ПриЗакрытии()
	SQLSes.Закрыть();
КонецПроцедуры
 


4. Переменная с идентификатором SQLSes может локально использоватся у в других формах отчетов справочников и тд.

1) может ты передаешь эту переменную куда-то в качестве параметра?
2) может у тебя все же иногда отрабатывает код
Код
Выбрать все
Процедура ПриЗакрытии()
	SQLSes.Закрыть();
КонецПроцедуры
 


с последующим СтатусВозврата(0)
???
  
Наверх
 
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #12 - 24. Июля 2006 :: 08:18
Печать  
DrACe писал(а) 24. Июля 2006 :: 07:56:
кстати, я делаю не так:
Код
Выбрать все
SQLSes.ДобПараметр(1, 14, 9, 0);
SQLSes.ДобПараметр(1, 14, 9, 0);

SQLSes.Подготовить(ТекстЗапроса); 


а так:
Код
Выбрать все
SQLSes.Подготовить(ТекстЗапроса);
SQLSes.ДобПараметр(1, 14, 9, 0);
SQLSes.ДобПараметр(1, 14, 9, 0); 


и у меня всегда все ОК


Улыбка Спасибо, если не секрет, а в чем разница?
  
Наверх
ICQ  
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #13 - 24. Июля 2006 :: 08:40
Печать  
DrACe писал(а) 24. Июля 2006 :: 08:07:
chicago писал(а) 24. Июля 2006 :: 08:03:
[quote author=U_zer link=1153286865/0#7 date=1153727436]Скорее всего, запрос где-то закрывается.


1) может ты передаешь эту переменную куда-то в качестве параметра?
2) может у тебя все же иногда отрабатывает код
Код
Выбрать все
Процедура ПриЗакрытии()
	SQLSes.Закрыть();
КонецПроцедуры
 


с последующим СтатусВозврата(0)
???


1. SQLSes в качестве параметра не предается, явно.
2. Он отрабатывает если юзер "коля" закрыл форму. Но в то же время юзер "вася" использует SQLSes но уже "свою".
3. СтатусВозврата(0) нет.
4. SQLSes.Закрыть(); можно вообще убрать?
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


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

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ошибка: "Недопустимое значение индекса парамет
Ответ #14 - 24. Июля 2006 :: 08:45
Печать  
chicago писал(а) 24. Июля 2006 :: 08:40:
4. SQLSes.Закрыть(); можно вообще убрать?

я так не делаю, с уничтожением формы локальная переменная уничтожается сама
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать