19.02.2008, 10:44 | #1 |
Участник
|
Всю голову уже сломал
В отчете в триггере 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 |
Участник
|
из-за приведенного кода не доложен виснуть
"Попробуйте перезгрузить комп" (с) Сис. Админ З.Ы. Красивее 4 первые строки заменить на: IF GET(271,EntryNo,DimensionCode) THEN BEGIN |
|
19.02.2008, 11:17 | #3 |
Участник
|
У вас после этого кода есть еще что-нибудь в триггере? Если нет, то скорее всего зависает не MODIFY, а переход к следующей строке отчета.
|
|
19.02.2008, 11:54 | #4 |
Участник
|
Цитата:
- это я для наглядности.... |
|
19.02.2008, 11:58 | #5 |
Участник
|
Цитата:
А MODIFY сообщениями обвесь до и после - самый простой сопоб определить оно или нет? P.S. И кстати, табличка эта не блокорована?? Какая версия NAV? |
|
19.02.2008, 12:11 | #6 |
Участник
|
|
|
19.02.2008, 14:20 | #7 |
Участник
|
Цитата:
Смоделировал не на тригерах отчета...: 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 |
Участник
|
Цитата:
Сообщение от 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; Если да, то переназовите переменную и добавте LedgerEntryDimension.RESET в начале |
|