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


Вопрос по $event и подтаблицам


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

#1 sxquer

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

  • Пользователи
  • PipPipPip
  • 33 сообщений

Отправлено 18 Июнь 2014 - 09:59

Доп. действие есть, обновляет в родительской таблице количество записей из текущей таблицы.

Срабатывать должно при добавлении и при удалении записей.
Вот код:
if ($event['type'] == 'save' && $event['is_new_line'] == 1)
{
$line['Запчасть']['Потенциальных поставщиков']++;
}
if ($event['type'] == 'delete')
{
$line['Запчасть']['Потенциальных поставщиков']--;
}

Срабатывает при удалении записей, при добавлении записей через табличный вид.
При добавлении в режиме подтаблицы - не хочет.

Доп. действие вычисляется при следующих условиях:
Сохранение в таблице
Удаление в таблице
Импорт в таблице

Сообщение отредактировал sxquer: 18 Июнь 2014 - 10:00


#2 CbCoder

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

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

Отправлено 18 Июнь 2014 - 11:05

При добавлении в режиме подтаблицы сохранение записи видимо происходит до заполнения $line['Запчасть'], поэтому ваше вычисление теряется.

#3 sxquer

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

  • Пользователи
  • PipPipPip
  • 33 сообщений

Отправлено 18 Июнь 2014 - 13:18

Протестировал...
Переменная $event пустая, когда добавляется строка через подтаблицу.
При обновлении строки в подтаблице $event["type"] = "update", а не "save";

Вариант 1:
$line['Отладка'] = print_r($event, true);

Вариант 2;
$line['Отладка'] = "NEW";

В первом варианте при создании записи в подтаблице в поле "Отладка" пусто. Во втором появляется слово "NEW".

PS.
При обновлении строки в подтаблице "Вариант 1" срабатывает только в том случае, если стоит триггер на "Изменение поля". Если только на "Сохранение", то не работает (вычисление вообще не запускается)

Сообщение отредактировал sxquer: 18 Июнь 2014 - 13:25


#4 CbCoder

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

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

Отправлено 18 Июнь 2014 - 13:25

Ну значит, вероятно, подобный вариант кода вычисления невозможен на нынешнем движке. Можно считать число записей через запрос к БД - этот вариант сработает в любом случае, и проверка на $event будет не нужна.

#5 sxquer

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

  • Пользователи
  • PipPipPip
  • 33 сообщений

Отправлено 19 Июнь 2014 - 02:45

Если кто-то столкнется с подобной проблемой:
Вариант, который у меня заработал.

//Возможны баги!!!
//В clientbase какая-то непонятка - при добавлении записи в подтаблицу переменная $event - пустая. В будущем скорее всего сломается
if (($event['type'] == 'save' && $event['is_new_line'] == 1) || $event['type'] == null)
{
$line['Запчасть']['Потенциальных поставщиков']++;
}
if ($event['type'] == 'delete')
{
$line['Запчасть']['Потенциальных поставщиков']--;
}






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

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