0
Є відповідь

Индексация тарифов

Иван 4 роки тому в Дашбоард и виджеты оновлено Support Manager 3 місяці тому 6

Тарифы на электроэнергию меняются раз в полгода. Как менять текущий тариф понятно, но в этом случае пересчитается и статистика за предыдущие периоды?! Как оставить историю не тронутой? Иначе истинные расходы за прошлые периоды будут не корректными!

Відповідь

Відповідь
Є відповідь

To calculate a new tariff without losing data for the previous period, you need to make a complex expression.

- In the widget settings, in the Arithmetic operation select f(x)

- click on the Edit icon and set the conditions:


d.TIME < new Date(2022,0,1) ? d.Ch1*0.05 :
d.TIME < new Date(2023,0,1) ? d.Ch1*0.06 :
d.Ch1*0.07;

where

new Date(2023,0,1) is January 1, 2023

Image 1547

before January 1, 2022 at the rate of 0.05

before January 1, 2023 at the rate of 0.06

everything will continue at the rate of 0.07


Replace the values with your tariff accordingly.


With each tariff change, you can add a new line of conditions in the same format new Date(Year, Month, Day).

Note that the month starts at 0. (0 - January, 1 - February, ... , 11 - December.)

Обсуждается

Добрый день.

Действительно, если тариф изменить, то история будет посчитана по новому тарифу, т.к. все вычисления делаются на лету и базе не сохраняются, но решение есть. В меню "Арифметическая операция" использовать f(x) и добавлять по фрагменту простого кода при изменении тарифов.

Сразу посмотрим на примере:

- Есть тариф по объему, название в списке данных устройства [TV29]
Название данных отображается в колонке Данные в списке виртуальных значений.

- Допустим:

с 1 сентября 2019 года тарифы выросли на 10%

с 1 января 2020 года тарифы выросли еще на 15%

- Чтобы не плодить каждый раз новый тариф будем просто умножать на коэффициенты *1.1 и *1.15

- В настройках виджета в меню Арифметическая операция выбираем f(x) и нажимаем иконку Изменить

- При создании собственных функций можно использовать любые данные с устройства в том числе время [d.TIME] и наш тариф [TV29]. Весь список доступных для расчетов данных обычно отображен слева от окна редактирования кода.

Для определения времени, когда надо использовать соответствующий тариф, надо добавить проверку на дату.

Для вычисления нужной даты используем функцию:

new Date(ГГГГ, ММ, ДД)
ГГГГ - год,
ММ - месяц от 0 до 11 (обратите внимание на порядковый номер месяца, январь - 0, февраль - 1 и тд)
ДД - день от 1 до 31

Итоговая функция по нашим условиям примет вид:

d.TIME < new Date(2019,8,1) ? d.TV29 :
d.TIME < new Date(2020,0,1) ? d.TV29*1.1 :
d.TV29 * 1.1 * 1.15;

В первой строке используется тариф до 01.09.2019, т.е. просто d.TV29

Во второй строке тариф до 01.01.2020, на 10% дороже, тариф умножен на коэффициент 1.1

В третьей строке текущий тариф, еще на 15% дороже.

Image 671

В будущем, например, если с 01.07.2020 цены вырастут еще на 5% , то надо вставить соответствующую строку с условием и подкорректировать текущий тариф в последней строке кода:

d.TIME < new Date(2019,8,1) ? d.TV29 :
d.TIME < new Date(2020,0,1) ? d.TV29*1.1 : d.TIME < new Date(2020,6,1) ? d.TV29*1.1*1.15: d.TV29 * 1.1 * 1.15 * 1.05;

Готово, теперь на графиках и в таблицах будут актуальные затраты в соответствии с периодом.

А, що у даному прикладі значить "наш тариф [TV29]" ? 

Де ми прописуємо наш базовий тариф на нашому пристрої, щоб потім ми його індексували?

Це назва вашого створеного тарифу для арифметичних операцій.

В меню Віртуальні, стовпчик ДАНІ

спасибо! Что за язык используется? (например, что значит ?  : и тд)

Синтаксис JavaScript, обозначает следующее:

УСЛОВИЕ ? ДЕЙСТВИЕ_ЕСЛИ_ДА : ДЕЙСТВИЕ_ЕСЛИ_НЕТ;

В нашем случае на месте ДЕЙСТВИЕ_ЕСЛИ_НЕТ вложено новое условие, затем еще одно условие и т.д.

Відповідь
Є відповідь

To calculate a new tariff without losing data for the previous period, you need to make a complex expression.

- In the widget settings, in the Arithmetic operation select f(x)

- click on the Edit icon and set the conditions:


d.TIME < new Date(2022,0,1) ? d.Ch1*0.05 :
d.TIME < new Date(2023,0,1) ? d.Ch1*0.06 :
d.Ch1*0.07;

where

new Date(2023,0,1) is January 1, 2023

Image 1547

before January 1, 2022 at the rate of 0.05

before January 1, 2023 at the rate of 0.06

everything will continue at the rate of 0.07


Replace the values with your tariff accordingly.


With each tariff change, you can add a new line of conditions in the same format new Date(Year, Month, Day).

Note that the month starts at 0. (0 - January, 1 - February, ... , 11 - December.)