В какой последовательности работают вычисления?
0
Последовательность выполнения вычислений
Автор wondertalik, 09 июля 2013 11:14
Сообщений в теме: 2
#1
Отправлено 09 Июль 2013 - 11:14
#2
Отправлено 09 Июль 2013 - 11:31
Не однократно отвечали по поводу последовательности - последовательность не определена.
Пример:
1. data_update меняет два поля Количество и Описание.
2. у вас два РАЗНЫХ вычисления которые срабатывают отдельно при изменении Количество и отдельно Описания. Но вам важно чтобы обрабатывалась сначала Количество, а потом Описание, т.к. вычисление Описание опирается на поля из вычисления Количество (например поле Цена).
Верный вариант: Объедините два вычисления в одно с двойным условием срабатывания: изменение Количество, изменение Описание. И уже в нем пропишите явный порядок действий опираясь на $event['changed'].
Ленивый вариант: Добавить в условия срабатывания вычисления Описание, изменения поля Цена. Но таким образом ваше вычисление Описание - будет срабатывать дважды, первый раз при вызове data_update, второй раз при изменении поля Цена.
Пример:
1. data_update меняет два поля Количество и Описание.
2. у вас два РАЗНЫХ вычисления которые срабатывают отдельно при изменении Количество и отдельно Описания. Но вам важно чтобы обрабатывалась сначала Количество, а потом Описание, т.к. вычисление Описание опирается на поля из вычисления Количество (например поле Цена).
Верный вариант: Объедините два вычисления в одно с двойным условием срабатывания: изменение Количество, изменение Описание. И уже в нем пропишите явный порядок действий опираясь на $event['changed'].
Ленивый вариант: Добавить в условия срабатывания вычисления Описание, изменения поля Цена. Но таким образом ваше вычисление Описание - будет срабатывать дважды, первый раз при вызове data_update, второй раз при изменении поля Цена.
#3
Отправлено 09 Июль 2013 - 11:42
Лучше и проще не создавать 2 вычисления:
изменение количество:
$line['Цена']=$line['Количество']*$line['Сумма'];
изменение описания, изменение цены:
$line['Результат']=$line['Описание'].$line['Цена'];
А создать 1 вычисление:
изменение количество, изменение описание, изменение цены
$line['Цена']=$line['Количество']*$line['Сумма'];
$line['Результат']=$line['Описание'].$line['Цена'];
Сохранение в базу происходит только измененных полей, если результат вычисления поля Цена совпал с существующим значением, сохранения поля не происходит.
Накладные расходы от установки значения поля Цена в вычислении намного меньше чем вызов отдельного вычисления с отдельным условием.
изменение количество:
$line['Цена']=$line['Количество']*$line['Сумма'];
изменение описания, изменение цены:
$line['Результат']=$line['Описание'].$line['Цена'];
А создать 1 вычисление:
изменение количество, изменение описание, изменение цены
$line['Цена']=$line['Количество']*$line['Сумма'];
$line['Результат']=$line['Описание'].$line['Цена'];
Сохранение в базу происходит только измененных полей, если результат вычисления поля Цена совпал с существующим значением, сохранения поля не происходит.
Накладные расходы от установки значения поля Цена в вычислении намного меньше чем вызов отдельного вычисления с отдельным условием.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных