Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ИТЗ: ВыбратьСтроки( "инд" ) и ПолучитьСтроку( БезИндекса ) (число прочтений - 3156 )
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
ИТЗ: ВыбратьСтроки( "инд" ) и ПолучитьСтроку( БезИндекса )
18. Ноября 2008 :: 08:18
Печать  
Слушайте, а если я допустил такую ошибку :
Код
Выбрать все
итзЦены1.ВыбратьСтроки("индПартии");
пока итзЦены1.ПолучитьСтроку( )=1 цикл // <<<-- ошибка
 


то есть открыл выборку по индексу, но перебираю её без индекса (получая, естественно, совершенно неожидаемый результат), не надо было бы тут выбросить исключение?
Или такой вариант кому-нибудь нужен?
Доооолго искал ошибочку Улыбка
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ: ВыбратьСтроки( "инд" ) и ПолучитьСтроку( БезИндекса )
Ответ #1 - 18. Ноября 2008 :: 10:39
Печать  
Да, в общем случае этот код может не быть ошибкой, т.к. в ИТЗ возможны выборки по нескольким индексам.
А в данном случае ошибкой является Получить() без предварительного Выбрать() по этому индексу.
Пиши в багзиллу.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ИТЗ: ВыбратьСтроки( "инд" ) и ПолучитьСтроку( БезИндекса )
Ответ #2 - 18. Ноября 2008 :: 15:42
Печать  
Хм. Вскрылись подробности. Реально есть два факта, которые сначала показались чем-то третьим :

1. На счет неоткрытой выборки -- сравнил с ТЗ, там поведение такое же.
То есть без тз.ВыбратьСтроки() вызов тз.ПолучитьСтроку() сразу вернет ноль, будто-бы в выборке пусто, хотя она просто не открыта. Не знаю, стоит ли менять это поведение ИТЗ, хоть и кривое по логике, но совпадающее с поведением ТЗ.

2. Для ИТЗ выборка по основному индексу, при прохождении одного цикла, не заканчивается полностью, а лишь делает паузу на один вызов ПолучитьСтроку().
То есть, если у меня где-либо выше уже был ИТЗ.ВыбратьСтроки() (без параметра), то теперь я могу выполнить неограниченное количество отдельных циклов по основному индексу. То есть работает такой код
Код
Выбрать все
ИТЗ.ВыбратьСтроки(); // без параметра
Пока ( итз.ПолучитьСтроку() = 1 ) Цикл
	// трам-пам-пам 1
КонецЦикла;
Пока ( итз.ПолучитьСтроку() = 1 ) Цикл
	// трам-пам-пам 2
КонецЦикла;
Пока ( итз.ПолучитьСтроку() = 1 ) Цикл
	// трам-пам-пам 3 ...
КонецЦикла;
 



Второй случай - зарегал в багзилле
http://www.1cpp.ru/bugs/show_bug.cgi?id=4240

Так что выше в топике ситуация получилась такая - где-то раньше по алгоритму случился цикл по основному индексу, который отработал. Потом я открыл выборку по созданному индексу, но этой выборкой не воспользовался (по ошибке), и получил снова выборку по основному, чего ни как не ожидал...
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИТЗ: ВыбратьСтроки( "инд" ) и ПолучитьСтроку( БезИндекса )
Ответ #3 - 19. Ноября 2008 :: 04:37
Печать  
dnp писал(а) 18. Ноября 2008 :: 15:42:
1. На счет неоткрытой выборки -- сравнил с ТЗ, там поведение такое же.
То есть без тз.ВыбратьСтроки() вызов тз.ПолучитьСтроку() сразу вернет ноль, будто-бы в выборке пусто, хотя она просто не открыта. Не знаю, стоит ли менять это поведение ИТЗ, хоть и кривое по логике, но совпадающее с поведением ТЗ.

Нормальное решение - раз выборка не открыта, значит, из нее ничего нельзя получить, значит, вернем 0 на попытку получения.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ИТЗ: ВыбратьСтроки( "инд" ) и ПолучитьСтроку( БезИндекса )
Ответ #4 - 19. Ноября 2008 :: 05:55
Печать  
Ну, в общем да, нормальное.
Хотя некоторые выборки в 1С ведут себя иначе Улыбка
Код
Выбрать все
док = СоздатьОбъект( "Документ" );
док.ПолучитьДокумент();
{C:\......ERT(3)}: Не выбран документ! 



ЗЫ: Это я не в порядке спора! Просто заметка на полях.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать