AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.02.2007, 12:32   #1  
ruselhope is offline
ruselhope
Участник
 
71 / 10 (1) +
Регистрация: 26.10.2006
Здравствуйте, уважаемые!

Хотелось бы узнать, есть ли в Навижн аналог Break для цикла Repeat..Until или While..Do.
Т.е. вопрос: как принудительно выйти из цикла?

Спасибо.
Старый 05.02.2007, 12:43   #2  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Выполнить условие окончания цикла?
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 05.02.2007, 13:08   #3  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
если код выполняется в триггере отчета OnAfterGetRecord, то можно использовать CurrDataItem.BREAK;

в остальных случаях можно использовать что-то типа этого:

Код:
IF lr_Customer.FIND('-') THEN REPEAT
  //что-то делаем и анализируем критерии для прерывания цикла
  lb_Break := (.......);
UNTIL (lr_Customer.NEXT = 0) OR lb_Break;
Старый 05.02.2007, 14:34   #4  
ruselhope is offline
ruselhope
Участник
 
71 / 10 (1) +
Регистрация: 26.10.2006
Ситуация-перебор записей в дата айтеме, и currreport.break как раз нельзя использовать

Видимо, придется делать так, как посоветовал OntheJump, -заводить lb_Break.

Спасибо за ответы.
Старый 05.02.2007, 16:07   #5  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
почему currreport.Break нельзя использовать?

вот это вполне рабочий код:

Код:
DataItem - OnAfterGetRecord:
lr_Integer.SETRANGE(Number, 0, 100);

IF lr_Integer.FIND('-') THEN REPEAT
  IF lr_Integer.Number = 5
	THEN CurrReport.BREAK;

  MESSAGE(FORMAT(lr_Integer.Number));
UNTIL lr_Integer.NEXT = 0;
последняя мессага будет '4';
Старый 05.02.2007, 16:26   #6  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Кажется оно брейкнет не только текущий датаитем, а весь репорт
Старый 05.02.2007, 16:31   #7  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от grif Посмотреть сообщение
Кажется оно брейкнет не только текущий датаитем, а весь репорт
Ребят, вы чего?
OntheJump прав.

читайте хэлп:
"
BREAK (Dataport, Report, XMLport)
When used inside a loop - such as a WHILE..DO or REPEAT..UNTIL construction - BREAK causes the execution of the loop to end, and control will return to the statement that immediately follows the loop.

When used outside a loop, BREAK causes the execution of the current trigger to end."
Старый 05.02.2007, 17:24   #8  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Это мелочи
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:18.