Здравствуйте!
Подскажите, пожалуйста, как или где можно регулировать очередность выполнения операций?
Опишу ситуацию: имеется таблица 1 с кучей полей, в которой одно поле вычисляемое. Условно назовем его "Основная сумма". Его вычисление настроено на изменение зависящий полей, сохранение, удаление и т.п.
Также есть таблица 2 с общей сводкой, в которой в одном из полей вычисляется Общая сумма Основных сумм (из предыдущей таблицы). Расчет данного поля выполнен в таблице 1, также при сохранении или изменении поля "Основная Сумма".
Проблема в том, что при сохранении или изменении какого-либо поля, которое входит в расчет Основной суммы сначала вычисляется общая сумма Основных сумм (при сохранении, к примеру), а потом уже меняется эта основная сумма. В итого по факту получается что в поле общая сумма Основных сумм заносится сумма предыдущих значений Основных сумм, а потом уже меняется основная сумма, но пересчета не происходит.
так вот можно ли как-то сделать, чтобы сначала именно выполнялось вычисление Основной суммы, записывалось это значение, а потом уже выполнялся общий подсчет этих сумм?
Надеюсь, понятно отписал. Если нет - скажите.
2
Сообщений в теме: 8
#1
Отправлено 25 Декабрь 2014 - 13:23
#2
Отправлено 25 Декабрь 2014 - 15:12
Прямой очередности задать нельзя, очередность вычислений в программе задается только косвенно, последовательностью событий на изменение (т.е. если вычисление 1 меняет некое поле, а вычисление 2 настроено на событие изменения этого поля, то оно выполнится только после вычисления 1)
#3
Отправлено 25 Декабрь 2014 - 15:19
Да у меня ситуация такая, что вычисление 2 настроено и на изменение этого поля и на сохранение (т.к. если не ставить на сохранение - при добавлении позиций я так понимаю вычисления не будет?). И вот получается, что у меня вычисление 2 выполняется раньше 1, в итоге значение вычисления 2 всегда соответствует предыдущим (до изменения) значениям вычисления 1. И как сделать чет не соображу никак..
#4
Отправлено 09 Январь 2015 - 02:41
serg63rus (25 Декабрь 2014 - 15:19) писал:
Да у меня ситуация такая, что вычисление 2 настроено и на изменение этого поля и на сохранение (т.к. если не ставить на сохранение - при добавлении позиций я так понимаю вычисления не будет?). И вот получается, что у меня вычисление 2 выполняется раньше 1, в итоге значение вычисления 2 всегда соответствует предыдущим (до изменения) значениям вычисления 1. И как сделать чет не соображу никак..
#5
Отправлено 13 Март 2015 - 18:49
У меня проблема немного с другой стороны. Стоит вычисление "при изменении поля", но оно также срабатывает при создании новой записи, даже если это поле не заполнять, чего быть по-хорошему не должно. Я допускаю, что возможно система считает, что пустое значение поля есть тоже изменение. Но все же, как заставить вычисление срабатывать ТОЛЬКО при изменении поля?
#6
Отправлено 13 Март 2015 - 20:37
У меня тоже самое, только при удалении записи
#7
Отправлено 14 Март 2015 - 14:05
Riddick (13 Март 2015 - 18:49) писал:
Я допускаю, что возможно система считает, что пустое значение поля есть тоже изменение. Но все же, как заставить вычисление срабатывать ТОЛЬКО при изменении поля?
Да, именно так и считает, т.к. до этого значение поля было вообще неопределенным. Чтобы исключить случай новой записи проверяйте значение переменной $event['is_new_line'].
#8
Отправлено 14 Март 2015 - 16:22
Спасибо за наводку. А где можно посмотреть список значений массива $event? В мануале не нашел.
#9
Отправлено 15 Март 2015 - 14:42
Целиком - нигде нельзя. Про $event['is_new_line'] писалось на форуме по крайней мере, про документацию не помню.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных