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


пстинные имена полей


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

#1 UmaCat

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

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

Отправлено 03 Сентябрь 2012 - 20:28

Вычисления
http://clientbase.ru...6/calculations/
раздел 3. Использование данных из другой таблицы
цитата

Цитата

В этом вычислении:
f810 — поле "Сумма" в таблице "Позиции счета",
74 — id таблицы "Позиции счета",
f807 — поле связь указывающее на счет в таблице "Позиции счета".

как выяснить истинные имена полей, истинные ID таблиц?
К примеру надо написать похожие вычисления как делаются в счете (когда собирается сумма из позиций) - но где наши имена полей? пока работаем через SaaS-аккаунт - может в этом случае никак?

спасибо

#2 Гость_Roman_*

  • Гости

Отправлено 04 Сентябрь 2012 - 08:15

Находясь под администратором, запустите скрипт edit_sql.php. После чего Вы сможете увидеть истинную структуру базы.

#3 UmaCat

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

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

Отправлено 04 Сентябрь 2012 - 21:18

Спасибо!
в принципе по той же теме

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


$sqlQuery = "SELECT sum(f1379*f1380) as summa FROM ".DATA_TABLE."114 WHERE status=0 AND f1375=$ID";
$res = mysql_query($sqlQuery);
$row = mysql_fetch_array($res);
$line['Сумма (RUR)'] = $row['summa'];

Вычисление при условии "Отображение поля" - "[Имя вычисляемого поля]"

где я что-то мог забыть ?

Добавил - в Вашей демобазе Сумма с НДС автоматически становится равной просто сумме, если обновить окно браузера тогда показывает нормально.

Сообщение отредактировал UmaCat: 04 Сентябрь 2012 - 21:31


#4 Гость_Roman_*

  • Гости

Отправлено 05 Сентябрь 2012 - 07:44

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

#5 UmaCat

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

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

Отправлено 05 Сентябрь 2012 - 08:24

Так эти условия и соответствующие вычисления сделаны в таблице Позиции счета (то есть подчиненной таблице). Разве можно задать условие вычисления в основную таблицу при изменении полей в подчиненной таблице? И где это сделать? Кстати у Вас в демобазе этого условия не указано (но при этом работает так как написано ниже).

А меня интересует автоматическое вычисление суммы из подчиненной таблицы в саму таблицу Счета - причем сразу - как это реализовано у Вас в демобазе.
Сделано следующее (я на примере названий полей из Демобазы)
Таблица Счета, Есть подчиненная таблица Позиции счета.
В подчиненной таблице "Позиции счета" есть вычисления которые делаются при изменении полей количество и цена - идет вычисление в поле Сумма (таблицы Позиции счета) - это работает - здесь вопросов нет.
В основной таблице (Счета) при этом считается общая сумма по полю Сумма из таблицы Позиции счета.

Вопрос вот в чем: в Демобазе я смотрю счет и вижу внизу подтаблицу Позиции счета. Я могу изменить количество или цену (в позициях счета), и автоматически пересчитается сумма и в подчиненной таблице и в Счете (они даже моргают таким желтеньким цветом при пересчете).

А у меня такое не работает - чтобы у меня на экране появились уже обновленные значения в самом счете мне приходится обновить окно браузера. То есть вычисление работает и записывается, но в основной таблице отобразятся только если обновить окно.

Дело в том, что у меня 3 поля в таблице Счета (основная) так вычисляются (то есть сделаны 3 вычисления) - и вычисления идут при условии Отображение поля. В документации написано что это нагружает систему - может быть из-за этого у меня не так как у Вас?

Добавлено:
похоже нашел
я туплю - вечером проверю отпишусь

у вас вычисления в подчиненной таблице
 
$line['Сумма'] = $line['Кол-во'] * $line['Цена'];
$sqlQuery = "SELECT SUM(`f812`) AS `bill_amount` FROM `".DATA_TABLE."74` WHERE `status`<>'2' AND `f807`='".$line['Счет']['raw']."' AND `id`<>'$ID'";
$result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
$row = mysql_fetch_assoc($result);
if ($row['bill_amount'] == NULL) $bill_amount = $line['Сумма'];
else $bill_amount = $row['bill_amount'] + $line['Сумма'];
$line['Счет']['Сумма с НДС'] = $bill_amount;
$line['Счет']['Сумма'] = $bill_amount;

а у меня только
 
line['Сумма'] = $line['Кол-во'] * $line['Цена'];

Сообщение отредактировал UmaCat: 05 Сентябрь 2012 - 08:30


#6 Гость_Roman_*

  • Гости

Отправлено 05 Сентябрь 2012 - 08:34

Если в подчинённой таблице поле связи с основной, например, "№ счёта", то из подчинённой на лету можно изменить данные в основной используя конструкцию
$line['№ счёта']['Сумма счёта'] = $bill_amount; // Тут должен быть Ваш расчёт суммы позиций счёта


#7 UmaCat

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

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

Отправлено 05 Сентябрь 2012 - 08:44

Спасибо
будем пробовать

Отлично все работает.

Сообщение отредактировал UmaCat: 05 Сентябрь 2012 - 21:13






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

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