|
![]() |
#1 |
Участник
|
В Заказе Продажи есть вычисляемое поле "Сумма Заказа".
Формула - Sum по строкам Заказа Продажи. Теперь мы добавляем строку в Заказ Продажи, а поле в Заголовке не обновится до тех пор, пока фокус не перейдет к форме заголовка. Насколько я знаю этот никак не обходится или все-таки есть способ? |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от OntheJump
![]() В Заказе Продажи есть вычисляемое поле "Сумма Заказа".
Формула - Sum по строкам Заказа Продажи. Теперь мы добавляем строку в Заказ Продажи, а поле в Заголовке не обновится до тех пор, пока фокус не перейдет к форме заголовка. Насколько я знаю этот никак не обходится или все-таки есть способ? Почему... способ есть... Через Codunit со свойством SingleInstance и формой заказа продажи с OnTimer... Но согласитесь, что это жуткое извращение - ради обновления Flowfield |
|
![]() |
#3 |
Участник
|
пробовал просто в OnTimer писать CALCFIELDS("Order Sum")
интервал - 500мс. не помогло а как это делается в связке с кодеюнитом? |
|
![]() |
#4 |
Участник
|
А если ещё и форму проадпейтить?
|
|
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
Попробовал
![]() Получилась превеселая карусель! ![]() Сразу возникло несколько проблем: Если делать CurrForm.UPDATE(FALSE) - то ничего невозможно будет ввести в хэдер, т.к. изменения будут сбрасываться. Если делать CurrForm.UPDATE(TRUE), то опять же трудности со вводом инфы. Например, менеджер вводит код Клиента вручную. Ввел половину - сработал таймер - система подставит первое значение подходящее под набранную маску, но не обязательно то что хотел ввести менеджер. Можно конечно интервал делать больше, но тогда, во-первых, сумма будет редко обновляться (и проще будет менеджеров научить тыкать в хэдер, для того чтобы узнать сумму) и, во-вторых, все равно остается вероятность того, что таймер сработает во время ввода. Попробовал в переменной хэдера хранить признак того что мы в сабформе. Вводить инфу в хэдере стало возможно, но невозможным стало вводить ее в сабформе ![]() ![]() так что, не знаю, не знаю.. |
|
![]() |
#7 |
Участник
|
Придумал!
randrews был прав, нужен сингл инстэнц кодеюнит ![]() в нем одна переменная, которая показывает, нужен нам апдейт хэдера или нет. И, самое главное, эта переменная должна быть TRUE только в том случае когда меняется сумма заказа Т.е., например, изменили цену, на валидэйте должен быть вызов функции кодеюнита, которая устанавливает переменную в TRUE. На OnTimer хэдера должен быть примерно следующий код: Код: IF gcd_FormUpdateFunctions.GetNeedUpdate THEN BEGIN CALCFIELDS("Order Amount"); CurrForm.UPDATE(TRUE); gcd_FormUpdateFunctions.SetNeedUpdate(FALSE); END; Да, ну и в многопользовательском режиме уже не обойтись без доп. таблицы ![]() |
|
![]() |
#8 |
Участник
|
Вынесите интересующее поле в субформу и получайте его значение функцией ... Поверх табличной части выведите суммы, колва и другие интересующие показатели...
|
|
![]() |
#9 |
Участник
|
|
|
![]() |
#10 |
Участник
|
|
|
![]() |
#11 |
Участник
|
|
|
![]() |
#12 |
Участник
|
О, вот это реальная маза, спасибо
![]() Кстати, куда делись респекты? самое время их повышать ![]() |
|
![]() |
#13 |
Участник
|
Цитата:
Цитата:
![]() Но можно зайти в профиль - и добавить респект оттуда. |
|