Вопрос по вычислениям
#181
Отправлено 25 Октябрь 2012 - 16:58
На форуме писали неоднократно, странно что не нашли. Поясняю - в переменной $user хранятся данные текущего пользователя. Переменная глобальна, доступна из любых вычислений. Об этом кстати есть и в документации: http://clientbase.ru...6/calculations/
#182
Отправлено 25 Октябрь 2012 - 20:26
Пробовал $line['Закрыл заявку'] = $user['current']; и не срабатывало..
Документацию и форум первым делом читаю.
Сообщение отредактировал teacsrem: 25 Октябрь 2012 - 20:26
#183
Отправлено 10 Ноябрь 2012 - 04:59
Цитата
$res = mysql_query($sqlQuery);
$row = mysql_fetch_array($res);
$line['Сумма'] = $row['summa'];
#184 Гость_Roman_*
Отправлено 10 Ноябрь 2012 - 07:08
#186
Отправлено 11 Ноябрь 2012 - 13:50
Коллеги, подскажите, как избавиться от этого. Кнопка создана через <button>.
Сообщение отредактировал arsenal: 11 Ноябрь 2012 - 14:04
#187 Гость_Roman_*
Отправлено 12 Ноябрь 2012 - 08:39
<button onclick="del_object(); return false">Кнопка</button>
#188
Отправлено 13 Ноябрь 2012 - 17:25
Мой код имеет следующий вид
<button id='del_ob' name='del_ob' value='ДА'>Кнопка</button>Обрабтки событий на кнопке нет. В php я проверяю значение
if ($_REQUEST['del_ob']=="ДА") { ....... }Если я что-то ввел в текстовое поле и нажал "ENTER", то почему-то это воспринимается как клик на кнопке, которая первая выводится в форме.
Сообщение отредактировал arsenal: 13 Ноябрь 2012 - 17:31
#189 Гость_Roman_*
Отправлено 13 Ноябрь 2012 - 17:36
<form onkeyup="this.submit(); return false">
#190
Отправлено 13 Ноябрь 2012 - 22:28
А после редактирования использовать и новое значение поля и предыдущее в скрипте, который срабатывает при сохранении редактирования (сохранение таблицы).
есть варианты какие-нибудь?
в голове пока вроде тупой, но относительно рабочий вариант (не проверял еще)
Спец поле для старого значения, которое будет меняться в конце выполнения скрипта
Поле1 со связью
Поле2 со значением из поля со связью
произошло сохранение таблицы
Действия:
изменили Значение поля 1
Сохранили таблицу
Вычисление при сохранении таблицы
1) Взяли значение поля2
2) Вычисления с полем 2
3) Значени поля 1 + вычисления с полем 1
4) Изменили поле 2 на текущее значение
может есть какой-то более изящный вариант?
Сообщение отредактировал UmaCat: 13 Ноябрь 2012 - 22:38
#191 Гость_Roman_*
Отправлено 14 Ноябрь 2012 - 07:49
#192
Отправлено 14 Ноябрь 2012 - 08:19
Roman (14 Ноябрь 2012 - 07:49) писал:
Вошли в редактирование
Значение поля 1
Выбрали значение 2
Подумали и выбрали значение 3
Все в процессе редактирования записи
В $event['changed']['770']['old'] будет значение 1 или 2 ?
решил реализовать свой первоначальный вариант
Вычисление идет при сохранении таблицы
105 - таблица где все хранится
f1321 - основное поле где хранится запись (имя Gate-In REF). Связано с полем другой таблицы (129) с таким же названием
GIRPrevoiusForCalc - поле (f1660) где хранится предыдущее (старое) значение. Связь с тем же полем Gate-In REF из другой таблицы (105).
//поиск по полю f1321 таблицы 105 таких же значений (Старых) как в поле GIRPrevoiusForCalc $sqlQuery = "SELECT count(`f1321`) AS gateinold FROM `".DATA_TABLE."105` WHERE (`status`<>'2' AND `f1321`='" . $line['GIRPrevoiusForCalc']['ID'] . "')"; $result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR); $row = mysql_fetch_assoc($result); //echo "<script>alert('Количество ".$row['gateinold']."')</script>"; // расчитывает правильно //проблемная строка. Не работает. Надо во внешней таблице найти старое значение и записать туда подсчитанное количество старых значений $line['GIRPrevoiusForCalc']['Used places']=$row['gateinold']; //здесь стандартно и работает. Ищет правильно $sqlQuery = "SELECT count(`f1321`) AS gateinquant FROM `".DATA_TABLE."105` WHERE (`status`<>'2' AND `f1321`='" . $line['Gate-In REF']['ID'] . "')"; $result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR); $row = mysql_fetch_assoc($result); //echo "<script>alert('Количество ".$row['gateinquant']."')</script>"; //считает правильно $line['Gate-In REF']['Used places']=$row['gateinquant']; // записывает правильно //записывает текущее значение в поле для хранения значений $line['GIRPrevoiusForCalc']=$line['Gate-In REF'];
Не срабатывает первый блок. Причем вычисление идет верно. но почему-то во внешнюю таблицу не записывает значение. При этом второй аналогичный блок срабатывает корректно и значение записывает для своего ID.
может что-то не правильно в коде?
$line['GIRPrevoiusForCalc']['Used places']=$row['gateinold'];
Первая часть поле в котором ЕЩЕ старое значение и по нему надо в поле Used Places записать подсчитанное количество.
Сообщение отредактировал UmaCat: 14 Ноябрь 2012 - 09:31
#193
Отправлено 14 Ноябрь 2012 - 14:38
$sqlQueryU ="UPDATE `".DATA_TABLE."129` SET `f1606`='".$row['gateinold']."' WHERE `id`='".$znachen."'"; mysql_query($sqlQueryU);
сам вроде нашел
$sqlQueryU ="UPDATE `".DATA_TABLE."129` SET `f1606`=".$row['gateinold']." WHERE `id`='".$znachen; mysql_query($sqlQueryU);
Сообщение отредактировал UmaCat: 14 Ноябрь 2012 - 14:40
#194
Отправлено 09 Февраль 2013 - 13:34
Тема большая, но перепробовал многие варианты из нее и никак.
для того, чтобы разобраться с вычислениями, создал
Есть таблица "Клиенты" (table=151):
| ФИО (field=2001, текстовое, уникальное) | Email | Телефон | ... | Баланс (field=2211) | Заметки (field=2051) |
Подчиненная таблица "Счета" (table=161)
| Номер | Тип счета | ФИО клиента (field=2141, Связь с полем ФИО) | Сумма счета (field=2171) | ... |
Задача: При добавлении счета или при изменении старых пересчитывать баланс текущего клиента.
Решение - доп вычисление в таблице "Счета" по сохранению или по изменению.
Вот как пробовал:
$sqlQuery = "SELECT sum(f2171) as summa FROM ".DATA_TABLE."161 WHERE status<>2 AND f2141=$ID"; $res = mysql_query($sqlQuery); $row = mysql_fetch_array($res); $line['ФИО клиента']['Баланс'] = $row['summa']; $line['ФИО клиента']['Заметки'] = $line['ФИО клиента']['ФИО']; // Добавлено для проверки записи в нужную ячейкуТогда в заметки пишется ФИО, на которого выставлен счет, а в Баланс записывается "0.00" (хотя счетов много и сумма должна быть).
В чем может быть заковыка?
#195
Отправлено 09 Февраль 2013 - 16:29
$sqlQuery = "SELECT sum(f2171) as summa FROM ".DATA_TABLE."161 WHERE status<>2 AND f2141=".$line['ФИО клиента']['ID'];
#197
Отправлено 15 Март 2013 - 14:03
Каков механизм процесса? В какой момент отработает событие на изменение поля? После внесения всех значений или после внесения значения в поле_1, с которым связано событие?
$data['поле_2']='значение' объявляется раньше, чем $data['поле_1']. Правда, не уверен, что это должно иметь значение. Или порядок переменных в массиве $data все же актуален?
Так долго бьюсь над этой проблемой и никак не могу отследить логики. Запись создается, поля заполняются, события тоже отрабатывают. Но если есть условие связанное с другим полем - ничего не работает. Где подвох?
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#198
Отправлено 15 Март 2013 - 14:35
#199
Отправлено 01 Май 2013 - 20:25
$line['На кого'] = $line['По счету']['На кого']; $line['Кол-во'] = $line['По счету']['Кол-во']; $line['Сумма'] = $line['По счету']['Сумма']; $line['Оплачено'] = $line['По счету']['Оплачено']; $line['Остаток'] = $line['По счету']['Остаток']; $line['Наша компания'] = $line['По счету']['Наша компания']; $poz_sch_s = data_table("Позиции счета","`Счет`='".$line['По счету']['ID']."' AND `status`<>'2'","all"); foreach ($poz_sch_s as $poz_sch) { $poz_sf['Счет-фактура'] = $line['ID']; $poz_sf['Описание'] = $poz_sch['Описание']; $poz_sf['Ед. изм'] = $poz_sch['Ед. изм']; $poz_sf['Цена'] = $poz_sch['Цена']; $poz_sf['Кол-во'] = $poz_sch['Кол-во']; $poz_sf['Сумма'] = $poz_sch['Сумма']; $poz_sf['Тип'] = $poz_sch['Тип']; $poz_sf['Позиция номенклатуры'] = $poz_sch['Позиция номенклатуры']; insert_query($poz_sf, "Позиции счет-фактуры"); }Хочу сделать то же самое для накладной. Делаю по аналогии, убрав не нужные мне поля, оставив только поля с позициями:
$poz_sch_s = data_table("Позиции счета","`Счет`='".$line['По счету']['ID']."' AND `status`<>'2'","all"); foreach ($poz_sch_s as $poz_sch) { $poz_nk['Ед. изм'] = $poz_sch['Ед. изм']; $poz_nk['Цена'] = $poz_sch['Цена']; $poz_nk['Кол-во'] = $poz_sch['Кол-во']; $poz_nk['Сумма'] = $poz_sch['Сумма']; $poz_nk['Товар'] = $poz_sch['Позиция номенклатуры']; insert_query($poz_nk, "Позиции накладной"); }Данная конструкция не добавляет позиции счета в накладную. Не могу найти ошибку. Подскажите, пожалуйста, почему не работает?
#200 Гость_Roman_*
Отправлено 03 Май 2013 - 12:14
$poz_sf['Счет-фактура'] = $line['ID'];Здесь заполняется поле связи на основную запись. Необходимо сделать тоже самое и в накладной. Позиции у Вас, скорее всего, создались, просто не привязаны ни к одной накладной.
Количество пользователей, читающих эту тему: 3
0 пользователей, 3 гостей, 0 анонимных