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

Все вопросы/проблемы по установке и использовании.
Ответить
КонстантинН
Сообщения: 118
Зарегистрирован: 06 авг 2019, 17:19
Имя: Константин
Откуда: РФ

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

Сообщение КонстантинН »

Добрый день!
Может кто-то посоветует, как сделать?
Ситуация: водители ежедневно сдают показания одометра (запись в соответствующей записи).
Как рассчитать ежедневный пробег (разница между последними и предпоследними показаниями одометра)?
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1710
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр Афанасьев
Откуда: г. Славянск, Донецкая обл.
Организация: Alcomp

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

Сообщение alcompstudio »

Есть теоретическое предположение.

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

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


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

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

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

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

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

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

({1}-{2})

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

Предполагаю, что теоретически должно сработать )) Если я, конечно, правильно понял суть вашего вопроса.
КонстантинН
Сообщения: 118
Зарегистрирован: 06 авг 2019, 17:19
Имя: Константин
Откуда: РФ

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

Сообщение КонстантинН »

Ух, как все сложно.

Хотелось бы по проще: у нас всего 1 сущность расчет бензина (без подчиненных), вот как хотелось бы это видеть:
1) Водитель заносит одометр
2) Запросом в соседнее поле проставляется его предыдущее значение.
3) В следующем поле по формуле считается пробег (разница)
4) Далее считаем расход топлива (подставляя значения расхода на 100км из справочника) и т.п.
Аватара пользователя
support
Техническая поддержка
Сообщения: 9085
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

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

Сообщение support »

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

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

id=(e.id-1)
И далее это поле уже использовать в формулах.
КонстантинН
Сообщения: 118
Зарегистрирован: 06 авг 2019, 17:19
Имя: Константин
Откуда: РФ

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

Сообщение КонстантинН »

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

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

id=(e.id-1)
И далее это поле уже использовать в формулах.
Спасибо! Будем пробовать!
КонстантинН
Сообщения: 118
Зарегистрирован: 06 авг 2019, 17:19
Имя: Константин
Откуда: РФ

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

Сообщение КонстантинН »

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

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

id=(e.id-1)
И далее это поле уже использовать в формулах.
Не работает, т.к. предыдущий id - это запись другого водителя, т.е. нужно условие, по которому мы найдем предыдущую запись именно этого водителя (по таб.номеру, по гос.номеру авто и т.п.). Как это сделать?
Аватара пользователя
support
Техническая поддержка
Сообщения: 9085
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

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

Сообщение support »

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

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

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