Перейти к содержимому


вычисление при удалении записи в подчиненной таблице


Сообщений в теме: 5

#1 mak

    Активный участник

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 21 Июль 2015 - 12:00

есть вычисление, которое меняет значение поля в родительской, тем самым вызывая вычисление там по аналогии со счетов в стандартной конфе.

при изменении записи или добавлении срабатывает нормально, при удалении записи в подчиненной не вызывается.
почему?


подчиненная:
$line['Связь с "Контрагенты"']['Проекты'] = "пересчет"; //вызываем вычисление в родительской


главная:
$res = "";
$proects = array();
$proects = data_select_array(290, 'ALL_ROWS', '`status`=0 and `f5100`=', $line_id);
foreach($proects as $v){
  $p = data_select_array(300, '`id`=', $v['f4450']);
  $u = sql_select_array(USERS_TABLE, "id=", $v['f4460']);
  $res .= $p['f4580']." -> ".$u['fio'].PHP_EOL;
}
$line['Проекты'] = $res;


#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 21 Июль 2015 - 15:23

Что конкретно не происходит при удалении записи в подчиненной? Заполнение поля "Проекты" в родительской?

#3 mak

    Активный участник

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 22 Июль 2015 - 11:23

да.

вычисление формирует текст из подчиненной такого плана:
юзер1 -> проект1
юзер2 -> проект2
.....

при изменении полей "юзер", "проект" или добавлении записи в подчиненную, поле в главной перезаписывается.
при удалении строки в подчиненной изменений не происходит, хотя в настройках вычисления есть и удаление и восстановление...

настройки вычисления - http://prntscr.com/7vkmi1

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Июль 2015 - 12:36

Честно говоря сам не могу сообразить, в чем тут дело. Попробуйте заявку в техподдержку отправить, может это баг.

#5 mak

    Активный участник

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 04 Август 2015 - 10:58

техподдержка молчит.

вычисление в главной, срабатывает на удаление в подчиненной по коду:
$line['Связь с "Контрагенты"']['Проекты'] = rand();

вычисление в главной:
$res = "";
$proects = array();
$proects = data_select_array(290, 'ALL_ROWS', '`status`=0 and `f5100`=', $line_id);
foreach($proects as $v){
  $p = data_select_array(300, '`id`=', $v['f4450']);
  $u = sql_select_array(USERS_TABLE, "id=", $v['f4460']);
  $res .= $p['f4580']." -> ".$u['fio'].PHP_EOL;
  $res2[] = $v;
  //$line['отладка'] .= implode(',', $v);
}
$line['Проекты'] = $res;
$line['Проекты'] .= print_r($res2, true);

"data_select_array" возвращает в т.ч. удаленную запись.
т.е. получается сперва отрабатывает вычисление, а потом запись удаляется.
это нормально или ошибка?

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 04 Август 2015 - 11:27

Да, нормально. Вычисление на удаление работает перед удалением, чтобы его можно было отменить. Об этом есть в документации.





Количество пользователей, читающих эту тему: 6

0 пользователей, 6 гостей, 0 анонимных