Страница 1 из 1

Расчет разницы между записями

Добавлено: 29 янв 2020, 20:05
КонстантинН
Добрый день!
Может кто-то посоветует, как сделать?
Ситуация: водители ежедневно сдают показания одометра (запись в соответствующей записи).
Как рассчитать ежедневный пробег (разница между последними и предпоследними показаниями одометра)?

Re: Расчет разницы между записями

Добавлено: 29 янв 2020, 23:49
alcompstudio
Есть теоретическое предположение.

Смею предположить, что у вас примерно такая структура (очень приблизительно):

Показания
- Регистрация текущего значения одометра


В сущности "Регистрация текущего значения одометра" заносятся промежутки (отдельные записи) с текущим показанием одометра.

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

Для этого в сущности Регистрация текущего значения одометра нужно создать какое-то "статусное" поле, чтобы присваивать значения для последней записи, например "текущее", а остальным записям - значение "прошлое". Это можно сделать через автоматизацию - т.е. при добавлении (через кнопку автоматизации!!) нового значения регистрации - в текущей записи будет присваиваться значение "Текущее", а остальным (по фильтру) - соответственно "Прошлое". И так при добавлении каждой новой записи со значением Текущее должна получаться только одна запись, а остальные - все "прошлые".

Далее в Дополнении - Функции - создаем 2 функции.

1 - будет подсчитывать сумму значений "одометра" ВСЕХ записей из сущности Регистрация текущего значения одометра
2 - будет подсчитывать сумму значений "одометра" записей, у которых статус "прошлое" из сущности Регистрация текущего значения одометра (настраиваем фильтр для функции по полю Статус на значение= "прошлое"). Тут по идее должны подсчитаться все записи кроме "текущей"

а в сущность Показания - в поле MySQL формула вы сделаете вычисление разницы между ф1 и ф2

({1}-{2})

Вот тут и будет разница между последним и предпоследним значением.

Предполагаю, что теоретически должно сработать )) Если я, конечно, правильно понял суть вашего вопроса.

Re: Расчет разницы между записями

Добавлено: 30 янв 2020, 10:38
КонстантинН
Ух, как все сложно.

Хотелось бы по проще: у нас всего 1 сущность расчет бензина (без подчиненных), вот как хотелось бы это видеть:
1) Водитель заносит одометр
2) Запросом в соседнее поле проставляется его предыдущее значение.
3) В следующем поле по формуле считается пробег (разница)
4) Далее считаем расход топлива (подставляя значения расхода на 100км из справочника) и т.п.

Re: Расчет разницы между записями

Добавлено: 30 янв 2020, 10:50
support
Вам нужно создать поле MySQL запрос https://docs.rukovoditel.net/ru/index.php?p=24
Который будет выбирать предыдущие значение из этой же сущности. Условие:

Код: Выделить всё

id=(e.id-1)
И далее это поле уже использовать в формулах.

Re: Расчет разницы между записями

Добавлено: 30 янв 2020, 11:02
КонстантинН
support писал(а): 30 янв 2020, 10:50 Вам нужно создать поле MySQL запрос https://docs.rukovoditel.net/ru/index.php?p=24
Который будет выбирать предыдущие значение из этой же сущности. Условие:

Код: Выделить всё

id=(e.id-1)
И далее это поле уже использовать в формулах.
Спасибо! Будем пробовать!

Re: Расчет разницы между записями

Добавлено: 30 янв 2020, 15:02
КонстантинН
support писал(а): 30 янв 2020, 10:50 Вам нужно создать поле MySQL запрос https://docs.rukovoditel.net/ru/index.php?p=24
Который будет выбирать предыдущие значение из этой же сущности. Условие:

Код: Выделить всё

id=(e.id-1)
И далее это поле уже использовать в формулах.
Не работает, т.к. предыдущий id - это запись другого водителя, т.е. нужно условие, по которому мы найдем предыдущую запись именно этого водителя (по таб.номеру, по гос.номеру авто и т.п.). Как это сделать?

Re: Расчет разницы между записями

Добавлено: 30 янв 2020, 15:30
support
Добавить соответствующее условие, примерно так:

Код: Выделить всё

id<e.id and field_13=e.field_13 order by id desc limit 1
13 - id поля "гос.номер"