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


события поля


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

#1 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 04 Июль 2012 - 10:07

Предусмотрена ли возможность принудительно вызывать событие для определенного поля в таблице, чтобы отработало вычисление с ним связанное? Возможно ли, чтобы событие Изменение значения, сработало при программном изменении значения поля, а не при ручном вводе?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#2 Analitic

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

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 04 Июль 2012 - 11:20

Вы можете вызывать события программно, для этого используется функция popup_event, ее описание в файле functions1.php

При любом изменении через $line[''], также генерируется событие изменение значения. Таким образом можно строить подобные конструкции:
Вычислении при изменении количества:
$line['Сумма']=$line['Количество']*$cena;

Вычисление при изменении суммы:
$line['Сумма с НДС']=$line['Сумма']*$nds;

Изменение поле суммы в первом вычислении, вызовет вычисление второго.

#3 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 04 Июль 2012 - 12:04

При отображении поля в главной таблице необходимо вызвать события в полях подчиненной таблицы, чтобы в них произошло вычисление, после чего поле "собирает" из них уже новые значения.
Насколько я вижу из описания функции popup_event($table, & $line, $event) - все три параметра это массивы. Не совсем понятно, как будет выглядеть вызов функции в моем случае.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#4 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 04 Июль 2012 - 12:19

Было бы удобно иметь более расширенную настройку срабатывания вычислений с указанием полей из других таблиц. Это может глобально изменить способы отображения информации.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#5 Analitic

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

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 04 Июль 2012 - 16:06

Каким образом вы это представляете? Опишите? Напомню: вычисление привязано к таблице, и $line имеет поля данной таблицы.

#6 Analitic

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

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 04 Июль 2012 - 16:12

Просмотр сообщенияandibrag (04 Июль 2012 - 12:04) писал:

При отображении поля в главной таблице необходимо вызвать события в полях подчиненной таблицы, чтобы в них произошло вычисление, после чего поле "собирает" из них уже новые значения.
Насколько я вижу из описания функции popup_event($table, & $line, $event) - все три параметра это массивы. Не совсем понятно, как будет выглядеть вызов функции в моем случае.

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

По поводу параметров тут все достаточно просто $table = get_table($table_id), $line - результат выборки строки из базы с помощью mysql_fetch_assoc, ну и $event - описание события (примеры можете подсмотреть написав print_r($event) в вычислении).

#7 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 04 Июль 2012 - 17:53

Просмотр сообщенияAnalitic (04 Июль 2012 - 16:12) писал:

Вы уверенны что вам нужно вычисление при отображении?
Для чего это нужно.
Есть главная таблица Заказы и связанные с ней подчиненные таблицы (например Наряды) и подчиненные им таблицы (Материалы, Покупки, Субподряды и т.д.). Если существуют проблемные места, т.е. что-то не закуплено, не сделано и прочее, то в таблице Наряды появляется оповещение о наличии проблем. Таблица Заказы собирает все проблемные Наряды и также выводит Оповещение. Именно для этого используется вычисление при отображении. Для удобства, отметка о завершении процессов или сделанных покупок делаются в один клик без редактирования записи. Именно здесь возможность отслеживания изменения значений полей в других таблицах была бы актуальна. Но как это реализовать, чтобы было просто, пока не знаю. Сейчас создание или обновление оповещения возможно только если "прогуляться" по таблицам. Т.е. пока не просмотришь Наряды, которые пробегут по подчиненным и таблицам, изменения таблицы Заказы не коснуться.

Просмотр сообщенияAnalitic (04 Июль 2012 - 16:06) писал:

Каким образом вы это представляете? Опишите? Напомню: вычисление привязано к таблице, и $line имеет поля данной таблицы.
Не могу сказать. Все попытки смоделировать взаимозависимости получаются очень сложными.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#8 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 04 Июль 2012 - 19:11

Просмотр сообщенияAnalitic (04 Июль 2012 - 16:12) писал:

По поводу параметров тут все достаточно просто $table = get_table($table_id), $line - результат выборки строки из базы с помощью mysql_fetch_assoc, ну и $event - описание события (примеры можете подсмотреть написав print_r($event) в вычислении).
Спасибо. Сделал вызов события в полях подчиненной таблице из главной. Теперь информация отображается правильно.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#9 Analitic

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

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 05 Июль 2012 - 10:50

Просмотр сообщенияandibrag (04 Июль 2012 - 17:53) писал:

Т.е. пока не просмотришь Наряды, которые пробегут по подчиненным и таблицам, изменения таблицы Заказы не коснуться.

Аналогично пока не посмотришь Заказы, оповещение не наступит.
Вычисление оповещений при реализации через отображение приводит к перегрузкам базы и скриптов. Такие вещи должны реализовываться в cron, поидее ). То о чем я писал выше - вычисления при отображении очень редко нужны реально.

#10 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

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

Просмотр сообщенияAnalitic (05 Июль 2012 - 10:50) писал:

Аналогично пока не посмотришь Заказы, оповещение не наступит.
Проблема была именно в том, что ранее при просмотре Заказов оповещение работало не корректно. Необходимо было прогуляться по Нарядам, а лишь потом смотреть Заказы. Тогда информации была актуальна. Насчет крон подумаю.

Просмотр сообщенияAnalitic (05 Июль 2012 - 10:50) писал:

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

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#11 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 11 Июль 2012 - 14:45

Столкнулся с проблемой. Вызов события через функцию обновляет данные поля. После идет чтение данных из поля. В результате при большом объеме данных получаю только часть. Видимо чтение опережает формирование. Как это вылечить? Как сделать чтение только после полного формирования?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#12 Analitic

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

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 11 Июль 2012 - 15:29

Не совсем понятна проблема. После вызова popup_event идет чтение из б.д.? и там не актуальные данные?

#13 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 11 Июль 2012 - 16:21

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

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#14 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 12 Июль 2012 - 08:02

Проблема имела иные корни. По всей видимости неполные (обрезанные) данные были следствием ограничения длины поля. После установки опции МНОГОСТРОЧНОЕ, все разрешилось.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#15 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 14 Январь 2013 - 18:59

Функции update_query и insert_query не вызывают вычисление при обновления поля, хотя должны, поскольку само событие onchange они формируют судя по коду.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#16 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 14 Январь 2013 - 22:44

Инсерт времени проверить нет, а вот update_query(), буквально только что проверил. Еще как отрабатывает вычисление на изменение!!! Смотрите ошибку в вычислении.

#17 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 15 Январь 2013 - 08:41

Вчера потерял кучу времени. Поля, в которые передавались данные, заполнялись, поля, в которых значения вычислялись - оставались пустыми, что в итоге и сподвигло к обращению в ТП. Сегодня нашел причину - порядок вычислений. Поле, из которого берется значение также заполняется на основе расчета, но позднее. Банально...
P.S. Небольшая просьба к разработчикам: можно предусмотреть установку порядка вычислений по аналогии с фильтрами, полями и всем остальным? Это было бы логичным.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#18 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 15 Январь 2013 - 09:52

Описанное выше - частный случай.
Проблема все равно имеет место быть. Отключены все вычисления, кроме оного и упрощены для теста к виду:
$line['Поле']='Значение';
Проверил обе функции в другой таблице - событие отрабатывает. В другой таблице - нет. В чем может быть причина?
Конкретный случай можно решить через конструктор вычислений, поскольку поля заимствуют значения из материнской таблицы. Собственно так и сделаю. Но мне не понятен механизм НЕ РАБОТЫ событий, поскольку функции insert и update я использую повсеместно. И если где-то они работают, а где-то нет, хотелось бы выяснить причины.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#19 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 08 Февраль 2013 - 09:28

Событие на изменение при добавлении и удалении файлов не отрабатывает. Есть возможность отследить или принудительно вызвать событие при изменении поля Файл?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#20 Analitic

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

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 08 Февраль 2013 - 10:51

По сути это баг, будет в блийжайшее время исправлен.





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

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