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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.02.2005, 12:47   #1  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
Thumbs down
В таблице 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  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Цитата:
Сообщение от 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????
Наверное потому, что не было комита (не вызывался ни MODIFY, ни INSERT...)
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 15.02.2005, 13:07   #3  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
Делаю и MODIFY и MODIFY вместе с COMMIT один результат - вернее его отсутствие
Старый 15.02.2005, 13:08   #4  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
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  
rov_imported is offline
rov_imported
Участник
 
176 / 10 (1) +
Регистрация: 20.01.2005
Цитата:
Сообщение от Greggy
MODIFY; <------------------------------- ПОСЛЕ ЭТОГО XRec не изменяется
А должен?
Я могу ошибаться - но xRec - это образ записи до изменений - не так ли?
Если вы в поле что-то прописали, то в Rec значение этого поля изменится, а
в xRec - ессно. нет. Далее, вы опять вызвали обработку, опять поменяли значение поля, и хотите чтобы xRec содержал первое обновленное значение НО: из формы не вышли? нет, процесс не закончен? нет
поэтому xRec никогда не примет этого значения.
Старый 15.02.2005, 17:02   #6  
memula is offline
memula
Участник
 
12 / 10 (1) +
Регистрация: 27.01.2005
Если по другому ни как нельзя (хотя я думаю можно найти альтернативное решение ) то выход может быть если в самой же форме сделать переменную того же типа что и Rec и там менять значение нужного поля потому , что
внутри самой таблицы при смене значения с помощью кода самой же таблицы переменная xRec остается без изменений.


VALIDATE trigger called by internal C/AL code that calls the VALIDATE function

unchanged
Старый 16.02.2005, 07:40   #7  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
Этот код он не в форме а в таблице ан onLookup
Старый 16.02.2005, 07:43   #8  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
Цитата:
Сообщение от rov
Цитата:
Сообщение от Greggy
MODIFY; <------------------------------- ПОСЛЕ ЭТОГО XRec не изменяется
А должен?
Я могу ошибаться - но xRec - это образ записи до изменений - не так ли?
Если вы в поле что-то прописали, то в Rec значение этого поля изменится, а
в xRec - ессно. нет. Далее, вы опять вызвали обработку, опять поменяли значение поля, и хотите чтобы xRec содержал первое обновленное значение НО: из формы не вышли?
Дело в том что на протяжениии всего этого кода xRec вообще не меняется!!! Скажите тогда в какоей момент должет менятся xRec?
Старый 16.02.2005, 11:25   #9  
memula is offline
memula
Участник
 
12 / 10 (1) +
Регистрация: 27.01.2005
Извините Greggy, насчет формы это я опечатался. А вообще если просто присваивать значение какому-то полю то xRec конечно не будет менятся. Нужно вызывать VALIDATE() поля, но и в этом случае как написано в описании , если VALIDATE() вызывается внутри той таблицы в каторой находиться ето поле, то xRec тоже не будет меняться, нужно вызывать из какого нибудь другого обьекта.

C/SIDE help -> Information -> xRec



regards,
Старый 24.10.2013, 09:31   #10  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Я прочитал справку по xRec, но так и не понял, в каком случае он должен измениться и сохранить в себе предыдущее значение поля...
Собственно пробовал его использовать таким образом:

в кодюните
Код:
UTRHeader."Upr. Type" := UTRHeader."Upr. Type" + 1;
UTRHeader.MODIFY(TRUE);
в триггере онмодифай таблицы
Код:
IF ("Upr. Type"<>xRec."Upr. Type") THEN ERROR('1')
ELSE ERROR('2');
Получаю "2". Так можно как то с помощью этого поля определить изменение поля, или нет?
Старый 24.10.2013, 10:41   #11  
Constantine_imported is offline
Constantine_imported
Участник
 
126 / 10 (1) +
Регистрация: 28.04.2011
Greggy, попробуйте на onLookup не MODIFY делать, а VALIDATE нужных полей, а уже на onValidate этих полей у вас будет и xRec заполнен.
Старый 24.10.2013, 10:53   #12  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Цитата:
Сообщение от Constantine Посмотреть сообщение
Greggy, попробуйте на onLookup не MODIFY делать, а VALIDATE нужных полей, а уже на onValidate этих полей у вас будет и xRec заполнен.
Думаю Грегги это уже не актуально, ибо спрашивал он аккурат 8 годков назад)))
Старый 24.10.2013, 11:09   #13  
Constantine_imported is offline
Constantine_imported
Участник
 
126 / 10 (1) +
Регистрация: 28.04.2011
smoyk, вот это я дал Даже не обратил внимания на дату начального поста.
Старый 24.10.2013, 11:41   #14  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Цитата:
Сообщение от Constantine Посмотреть сообщение
smoyk, вот это я дал /> Даже не обратил внимания на дату начального поста. />
Вот-вот) Лучше бы мне ответили)
Старый 24.10.2013, 15:36   #15  
Constantine_imported is offline
Constantine_imported
Участник
 
126 / 10 (1) +
Регистрация: 28.04.2011
Цитата:
Сообщение от smoyk Посмотреть сообщение
Вот-вот) Лучше бы мне ответили)
Да так ответ в принципе тот же, попробуйте через VALIDATE. На onModify у меня не получилось сделать что-то путное, такое ощущение, что этот триггер срабатывает уже после записи в таблицу, и Rec и xRec всегда равны если менять данные программно. А вот когда меняешь руками - то тогда все отрабатывает как надо.
Старый 01.11.2013, 23:42   #16  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Может, SELECTLATESTVERSION после VALIDATE/MODIFY обновит xRec?
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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