|
15.02.2005, 12:47 | #1 |
Участник
|
В таблице 36 Sales Header есть поле Applies-to Doc. No. - на событие onLookup этого поля мне надо сделать обработку которая будет зависеть от xRec.Applies-to Doc. No. и от Rec.Applies-to Doc. No.. Проблема такая
Итак - поле пустое я выбираю через лукап форму ему значение - в итоге посел кода IF ApplyCustEntries.RUNMODAL = ACTION::LookupOK THEN BEGIN состояние таково xRec = '' Rec = Value1 - далее я тут же вызываю опять лукап форму выбираю другое значение и ситуация такова xRec = '' Rec = Value2 - вопрос почему не обновляется xRec???? |
|
15.02.2005, 13:05 | #2 |
NavAx
|
Цитата:
Сообщение от Greggy
В таблице 36 Sales Header есть поле Applies-to Doc. No. - на событие onLookup этого поля мне надо сделать обработку которая будет зависеть от xRec.Applies-to Doc. No. и от Rec.Applies-to Doc. No.. Проблема такая
Итак - поле пустое я выбираю через лукап форму ему значение - в итоге посел кода IF ApplyCustEntries.RUNMODAL = ACTION::LookupOK THEN BEGIN состояние таково xRec = '' Rec = Value1 - далее я тут же вызываю опять лукап форму выбираю другое значение и ситуация такова xRec = '' Rec = Value2 - вопрос почему не обновляется xRec????
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
15.02.2005, 13:07 | #3 |
Участник
|
Делаю и MODIFY и MODIFY вместе с COMMIT один результат - вернее его отсутствие
|
|
15.02.2005, 13:08 | #4 |
Участник
|
IF ApplyCustEntries.RUNMODAL = ACTION::LookupOK THEN BEGIN
ApplyCustEntries.GetCustLedgEntry(CustLedgEntry); GenJnlApply.CheckAgainstApplnCurrency( "Currency Code",CustLedgEntry."Currency Code",GenJnILine."Account Type"::Customer,TRUE); "Applies-to Doc. Type" := CustLedgEntry."Document Type"; "Applies-to Doc. No." := CustLedgEntry."Document No."; MODIFY; <------------------------------- ПОСЛЕ ЭТОГО XRec не изменяется |
|
15.02.2005, 15:55 | #5 |
Участник
|
Цитата:
Сообщение от Greggy
MODIFY; <------------------------------- ПОСЛЕ ЭТОГО XRec не изменяется
Я могу ошибаться - но xRec - это образ записи до изменений - не так ли? Если вы в поле что-то прописали, то в Rec значение этого поля изменится, а в xRec - ессно. нет. Далее, вы опять вызвали обработку, опять поменяли значение поля, и хотите чтобы xRec содержал первое обновленное значение НО: из формы не вышли? нет, процесс не закончен? нет поэтому xRec никогда не примет этого значения. |
|
15.02.2005, 17:02 | #6 |
Участник
|
Если по другому ни как нельзя (хотя я думаю можно найти альтернативное решение ) то выход может быть если в самой же форме сделать переменную того же типа что и Rec и там менять значение нужного поля потому , что
внутри самой таблицы при смене значения с помощью кода самой же таблицы переменная xRec остается без изменений. VALIDATE trigger called by internal C/AL code that calls the VALIDATE function unchanged |
|
16.02.2005, 07:40 | #7 |
Участник
|
Этот код он не в форме а в таблице ан onLookup
|
|
16.02.2005, 07:43 | #8 |
Участник
|
Цитата:
Сообщение от rov
Цитата:
Сообщение от Greggy
MODIFY; <------------------------------- ПОСЛЕ ЭТОГО XRec не изменяется
Я могу ошибаться - но xRec - это образ записи до изменений - не так ли? Если вы в поле что-то прописали, то в Rec значение этого поля изменится, а в xRec - ессно. нет. Далее, вы опять вызвали обработку, опять поменяли значение поля, и хотите чтобы xRec содержал первое обновленное значение НО: из формы не вышли? |
|
16.02.2005, 11:25 | #9 |
Участник
|
Извините Greggy, насчет формы это я опечатался. А вообще если просто присваивать значение какому-то полю то xRec конечно не будет менятся. Нужно вызывать VALIDATE() поля, но и в этом случае как написано в описании , если VALIDATE() вызывается внутри той таблицы в каторой находиться ето поле, то xRec тоже не будет меняться, нужно вызывать из какого нибудь другого обьекта.
C/SIDE help -> Information -> xRec regards, |
|
24.10.2013, 09:31 | #10 |
Участник
|
Я прочитал справку по xRec, но так и не понял, в каком случае он должен измениться и сохранить в себе предыдущее значение поля...
Собственно пробовал его использовать таким образом: в кодюните Код: UTRHeader."Upr. Type" := UTRHeader."Upr. Type" + 1; UTRHeader.MODIFY(TRUE); Код: IF ("Upr. Type"<>xRec."Upr. Type") THEN ERROR('1') ELSE ERROR('2'); |
|
24.10.2013, 10:41 | #11 |
Участник
|
Greggy, попробуйте на onLookup не MODIFY делать, а VALIDATE нужных полей, а уже на onValidate этих полей у вас будет и xRec заполнен.
|
|
24.10.2013, 10:53 | #12 |
Участник
|
|
|
24.10.2013, 11:09 | #13 |
Участник
|
smoyk, вот это я дал Даже не обратил внимания на дату начального поста.
|
|
24.10.2013, 11:41 | #14 |
Участник
|
|
|
24.10.2013, 15:36 | #15 |
Участник
|
Да так ответ в принципе тот же, попробуйте через VALIDATE. На onModify у меня не получилось сделать что-то путное, такое ощущение, что этот триггер срабатывает уже после записи в таблицу, и Rec и xRec всегда равны если менять данные программно. А вот когда меняешь руками - то тогда все отрабатывает как надо.
|
|
01.11.2013, 23:42 | #16 |
Участник
|
Может, SELECTLATESTVERSION после VALIDATE/MODIFY обновит xRec?
|
|