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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.02.2008, 10:44   #1  
unalexia is offline
unalexia
Участник
 
79 / 10 (1) +
Регистрация: 28.12.2005
Всю голову уже сломал

В отчете в триггере OnAfterGetRecord()
.....
LedgerEntryDimMod.SETRANGE("Table ID",271);
LedgerEntryDimMod.SETRANGE("Entry No.",EntryNo);
LedgerEntryDimMod.SETRANGE("Dimension Code",DimensionCode);
IF LedgerEntryDimMod.FIND('-') THEN BEGIN
LedgerEntryDimMod.VALIDATE("Dimension Value Code",NewDimensionValueCode);
LedgerEntryDimMod.MODIFY; - > Зависает
END;
....

Плиз Хелп!
Старый 19.02.2008, 11:11   #2  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
из-за приведенного кода не доложен виснуть
"Попробуйте перезгрузить комп" (с) Сис. Админ

З.Ы. Красивее 4 первые строки заменить на:
IF GET(271,EntryNo,DimensionCode) THEN BEGIN
Старый 19.02.2008, 11:17   #3  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
У вас после этого кода есть еще что-нибудь в триггере? Если нет, то скорее всего зависает не MODIFY, а переход к следующей строке отчета.
Старый 19.02.2008, 11:54   #4  
unalexia is offline
unalexia
Участник
 
79 / 10 (1) +
Регистрация: 28.12.2005
Цитата:
Сообщение от Milk Посмотреть сообщение
У вас после этого кода есть еще что-нибудь в триггере? Если нет, то скорее всего зависает не MODIFY, а переход к следующей строке отчета.
Без Modify все работает. А в Debuger-е на этой строке!

Цитата:
Сообщение от Fordewind Посмотреть сообщение
из-за приведенного кода не доложен виснуть
"Попробуйте перезгрузить комп" (с) Сис. Админ

З.Ы. Красивее 4 первые строки заменить на:
IF GET(271,EntryNo,DimensionCode) THEN BEGIN
- это я для наглядности....
Старый 19.02.2008, 11:58   #5  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Fordewind Посмотреть сообщение
З.Ы. Красивее 4 первые строки заменить на:
IF GET(271,EntryNo,DimensionCode) THEN BEGIN
Тогда уж лучше использовать RecordID.TABLENO, чтобы на хадкодить ;-)
А MODIFY сообщениями обвесь до и после - самый простой сопоб определить оно или нет?

P.S. И кстати, табличка эта не блокорована?? Какая версия NAV?
Старый 19.02.2008, 12:11   #6  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от unalexia Посмотреть сообщение
Без Modify все работает. А в Debuger-е на этой строке!
А без дебагера тоже виснет?
Старый 19.02.2008, 14:20   #7  
unalexia is offline
unalexia
Участник
 
79 / 10 (1) +
Регистрация: 28.12.2005
Цитата:
Сообщение от RedFox Посмотреть сообщение
Тогда уж лучше использовать RecordID.TABLENO, чтобы на хадкодить ;-)
А MODIFY сообщениями обвесь до и после - самый простой сопоб определить оно или нет?

P.S. И кстати, табличка эта не блокорована?? Какая версия NAV?
Немоного продвинулся дальше.... Вроде как проблема в том, что указанный код на происваивание нового значения и Modify находится в триггере такой же таблицы... Как бы в этом случае и происходит зацикливание....

Смоделировал не на тригерах отчета...:


LedgerEntryDimension.SETRANGE("Table ID",271);
LedgerEntryDimension.SETRANGE("Entry No.",9578993);
IF LedgerEntryDimension.FIND('-') THEN BEGIN
IF LedgerEntryDimension."Dimension Code" = 'СТАТЬИ ДДС' THEN BEGIN
LedgerEntryDimension."Dimension Value Code" := 'Р3110';
LedgerEntryDimension.MODIFY; все ОК!!
END;

Но если (по аналогии с тригерром OnAfterGetRecord())

LedgerEntryDimension.SETRANGE("Table ID",271);
LedgerEntryDimension.SETRANGE("Entry No.",9578993);
IF LedgerEntryDimension.FIND('-') THEN REPEAT
IF LedgerEntryDimension."Dimension Code" = 'СТАТЬИ ДДС' THEN BEGIN
LedgerEntryDimension."Dimension Value Code" := 'Р3110';
LedgerEntryDimension.MODIFY; ЗАВИСАНИЕ!!!! ЗАЦИКЛИВАНИЕ!!!!
UNTIL LedgerEntryDimension.NEXT=0;
Старый 19.02.2008, 16:18   #8  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от unalexia Посмотреть сообщение
Немоного продвинулся дальше.... Вроде как проблема в том, что указанный код на происваивание нового значения и Modify находится в триггере такой же таблицы... Как бы в этом случае и происходит зацикливание....

LedgerEntryDimension.SETRANGE("Table ID",271);
LedgerEntryDimension.SETRANGE("Entry No.",9578993);
IF LedgerEntryDimension.FIND('-') THEN REPEAT
IF LedgerEntryDimension."Dimension Code" = 'СТАТЬИ ДДС' THEN BEGIN
LedgerEntryDimension."Dimension Value Code" := 'Р3110';
LedgerEntryDimension.MODIFY; ЗАВИСАНИЕ!!!! ЗАЦИКЛИВАНИЕ!!!!
UNTIL LedgerEntryDimension.NEXT=0;
У Вас DataItem для этой линии = LedgerEntryDimension?
Если да, то переназовите переменную и добавте LedgerEntryDimension.RESET в начале
 


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

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

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