07.02.2007, 15:54 | #1 |
Участник
|
В Заказе Продажи есть вычисляемое поле "Сумма Заказа".
Формула - Sum по строкам Заказа Продажи. Теперь мы добавляем строку в Заказ Продажи, а поле в Заголовке не обновится до тех пор, пока фокус не перейдет к форме заголовка. Насколько я знаю этот никак не обходится или все-таки есть способ? |
|
07.02.2007, 15:57 | #2 |
Участник
|
Цитата:
Сообщение от OntheJump
В Заказе Продажи есть вычисляемое поле "Сумма Заказа".
Формула - Sum по строкам Заказа Продажи. Теперь мы добавляем строку в Заказ Продажи, а поле в Заголовке не обновится до тех пор, пока фокус не перейдет к форме заголовка. Насколько я знаю этот никак не обходится или все-таки есть способ? Почему... способ есть... Через Codunit со свойством SingleInstance и формой заказа продажи с OnTimer... Но согласитесь, что это жуткое извращение - ради обновления Flowfield |
|
07.02.2007, 16:00 | #3 |
Участник
|
пробовал просто в OnTimer писать CALCFIELDS("Order Sum")
интервал - 500мс. не помогло а как это делается в связке с кодеюнитом? |
|
07.02.2007, 16:04 | #4 |
Участник
|
А если ещё и форму проадпейтить?
|
|
07.02.2007, 16:07 | #5 |
Участник
|
|
|
07.02.2007, 16:28 | #6 |
Участник
|
Попробовал
Получилась превеселая карусель! Сразу возникло несколько проблем: Если делать CurrForm.UPDATE(FALSE) - то ничего невозможно будет ввести в хэдер, т.к. изменения будут сбрасываться. Если делать CurrForm.UPDATE(TRUE), то опять же трудности со вводом инфы. Например, менеджер вводит код Клиента вручную. Ввел половину - сработал таймер - система подставит первое значение подходящее под набранную маску, но не обязательно то что хотел ввести менеджер. Можно конечно интервал делать больше, но тогда, во-первых, сумма будет редко обновляться (и проще будет менеджеров научить тыкать в хэдер, для того чтобы узнать сумму) и, во-вторых, все равно остается вероятность того, что таймер сработает во время ввода. Попробовал в переменной хэдера хранить признак того что мы в сабформе. Вводить инфу в хэдере стало возможно, но невозможным стало вводить ее в сабформе Причина та же - ввели часть кода и обломались. Плюс если строка еще не вставилась при срабатывании таймера курсор прыгает на первую строчку так что, не знаю, не знаю.. |
|
07.02.2007, 16:47 | #7 |
Участник
|
Придумал!
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 |
Участник
|
Вынесите интересующее поле в субформу и получайте его значение функцией ... Поверх табличной части выведите суммы, колва и другие интересующие показатели...
|
|
07.02.2007, 17:09 | #9 |
Участник
|
|
|
07.02.2007, 17:12 | #10 |
Участник
|
|
|
07.02.2007, 17:17 | #11 |
Участник
|
|
|
07.02.2007, 17:29 | #12 |
Участник
|
О, вот это реальная маза, спасибо
Кстати, куда делись респекты? самое время их повышать |
|
07.02.2007, 17:46 | #13 |
Участник
|
Цитата:
Цитата:
Но можно зайти в профиль - и добавить респект оттуда. |
|