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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.02.2007, 15:54   #1  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
В Заказе Продажи есть вычисляемое поле "Сумма Заказа".

Формула - Sum по строкам Заказа Продажи.

Теперь мы добавляем строку в Заказ Продажи, а поле в Заголовке не обновится до тех пор, пока фокус не перейдет к форме заголовка.

Насколько я знаю этот никак не обходится или все-таки есть способ?
Старый 07.02.2007, 15:57   #2  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Цитата:
Сообщение от OntheJump Посмотреть сообщение
В Заказе Продажи есть вычисляемое поле "Сумма Заказа".

Формула - Sum по строкам Заказа Продажи.

Теперь мы добавляем строку в Заказ Продажи, а поле в Заголовке не обновится до тех пор, пока фокус не перейдет к форме заголовка.

Насколько я знаю этот никак не обходится или все-таки есть способ?


Почему... способ есть... Через Codunit со свойством SingleInstance и формой заказа продажи с OnTimer... Но согласитесь, что это жуткое извращение - ради обновления Flowfield
Старый 07.02.2007, 16:00   #3  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
пробовал просто в OnTimer писать CALCFIELDS("Order Sum")

интервал - 500мс. не помогло

а как это делается в связке с кодеюнитом?
Старый 07.02.2007, 16:04   #4  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
А если ещё и форму проадпейтить?
Старый 07.02.2007, 16:07   #5  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Цитата:
Сообщение от OntheJump Посмотреть сообщение
пробовал просто в OnTimer писать CALCFIELDS("Order Sum")

интервал - 500мс. не помогло

а как это делается в связке с кодеюнитом?
Да... С Codeunit-ом намудрил OnTimer хватит
Старый 07.02.2007, 16:28   #6  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
Попробовал

Получилась превеселая карусель!

Сразу возникло несколько проблем:

Если делать CurrForm.UPDATE(FALSE) - то ничего невозможно будет ввести в хэдер, т.к. изменения будут сбрасываться.

Если делать CurrForm.UPDATE(TRUE), то опять же трудности со вводом инфы. Например, менеджер вводит код Клиента вручную. Ввел половину - сработал таймер - система подставит первое значение подходящее под набранную маску, но не обязательно то что хотел ввести менеджер.
Можно конечно интервал делать больше, но тогда, во-первых, сумма будет редко обновляться (и проще будет менеджеров научить тыкать в хэдер, для того чтобы узнать сумму) и, во-вторых, все равно остается вероятность того, что таймер сработает во время ввода.

Попробовал в переменной хэдера хранить признак того что мы в сабформе. Вводить инфу в хэдере стало возможно, но невозможным стало вводить ее в сабформе Причина та же - ввели часть кода и обломались. Плюс если строка еще не вставилась при срабатывании таймера курсор прыгает на первую строчку

так что, не знаю, не знаю..
Старый 07.02.2007, 16:47   #7  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
Придумал!

randrews был прав, нужен сингл инстэнц кодеюнит

в нем одна переменная, которая показывает, нужен нам апдейт хэдера или нет.

И, самое главное, эта переменная должна быть TRUE только в том случае когда меняется сумма заказа

Т.е., например, изменили цену, на валидэйте должен быть вызов функции кодеюнита, которая устанавливает переменную в TRUE.

На OnTimer хэдера должен быть примерно следующий код:

Код:
IF gcd_FormUpdateFunctions.GetNeedUpdate THEN BEGIN
  CALCFIELDS("Order Amount");
  CurrForm.UPDATE(TRUE);
  gcd_FormUpdateFunctions.SetNeedUpdate(FALSE);
END;
Главное - учесть все моменты изменения общей суммы заказа.

Да, ну и в многопользовательском режиме уже не обойтись без доп. таблицы
Старый 07.02.2007, 17:03   #8  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Вынесите интересующее поле в субформу и получайте его значение функцией ... Поверх табличной части выведите суммы, колва и другие интересующие показатели...
Старый 07.02.2007, 17:09   #9  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Цитата:
Сообщение от romeo Посмотреть сообщение
Вынесите интересующее поле в субформу и получайте его значение функцией ... Поверх табличной части выведите суммы, колва и другие интересующие показатели...
Самое красивое решение
Старый 07.02.2007, 17:12   #10  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
Цитата:
Сообщение от romeo Посмотреть сообщение
Вынесите интересующее поле в субформу и получайте его значение функцией...
Учту как вариант

Правда в каждой строке видеть сумму заказа...

но все равно спасибо
Старый 07.02.2007, 17:17   #11  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от OntheJump Посмотреть сообщение
Правда в каждой строке видеть сумму заказа...
Нет. В субформе тэйбл бокс. Ужмите его чуть по вертикали, а сверху над ним надобавляйте текст боксов, каждый из которых будет получать сумму или что-то еще ..
Старый 07.02.2007, 17:29   #12  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
О, вот это реальная маза, спасибо

Кстати, куда делись респекты?

самое время их повышать
Старый 07.02.2007, 17:46   #13  
TERRA is offline
TERRA
Участник
 
59 / 10 (1) +
Регистрация: 05.05.2005
Адрес: Moscow
Цитата:
Сообщение от OntheJump Посмотреть сообщение
О, вот это реальная маза, спасибо

Кстати, куда делись респекты?

самое время их повышать
Респекты делись вот туда -
Цитата:


Но можно зайти в профиль - и добавить респект оттуда.
 


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

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

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