Есть вычисление
if ($event['type'] == "delete") {
update_room($line['Помещение']['ID'], $line['ID'], $line);
return;
}
if ($event['changed'][4591])
{
$old_room = $event['changed'][4591]['old'];
$new_room = $event['changed'][4591]['new'];
//Здесь возникает проблема. Когда вы меняем поле 4591,
//то в старом помещение изменения происходят, но в интерфейсе они не отображаются
if ($old_room) update_room($old_room);
if ($new_room) update_room($new_room, 0, $line);
return;
}
if ($line['Помещение'])
{
update_room($line['Помещение']['ID'], 0, $line);
}
//Данная функция обновляет данные в родительской таблице
//Если использовать data_update, то данные не обновятся в реальном времени в карточке
function update_room($room_id, $ignore_id = 0, &$line)
{
$query = data_select_field(301, "sum(f4201) as sum, sum(f5191) as seb",
"status=0 AND f4591=" . $room_id . " AND id !=". $ignore_id);
$data = sql_fetch_assoc($query);
if ($line)
{
$line['Помещение']['Сумма'] = $data['sum'];
$line['Помещение']['Себестоимость'] = $data['seb'];
}
else
data_update(341, EVENTS_ENABLE, array("f4721" => $data['sum'], "f5271" => $data['seb']), "id=" . $room_id);
}
Проблема вот в чем.Если использовать обновление с помощью функции data_update, то значения все корректно присвоятся, но в интерфейсе, без перезагрузки страницы, не отобразятся.
Используя ссылку на переменную $line можно обойти этот момент.
Однако работать с $line, когда нам нужно обновить данные по старому полю связи ($old_room = $event['changed'][4591]['old']
Вопрос - как сделать, чтобы значения таки обновлялись без перезагрузки страницы?













