0
Отвечен
Смена тарифов по газу
Добрый день
сейчас поставщик газа меняет свои тарифы ежемесячно.
Сейчас за март тариф 6,86 за куб.м, в апреле может быть другой
для корректного перерасчета хочу написать правило, и раз в месяц буду менять цифры отмеченные жирным.
Корректно ли оно?
d.TIME < new Date(2021,2,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,3,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,4,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,5,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,6,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,7,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,8,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,9,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,10,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,11,1) ? d.Ch1*0.0686 :
Сервис поддержки клиентов работает на платформе UserEcho
хотя сразу возникает вопрос а как тогда корректно определить, что бы считались затраты всего
ведь там тоже стоит функция и одна - d.Ch1*0.0686
Если имеется ввиду индексация виртуальных значений, то код надо прописывать в настройках виртуального значения.
Добрый день.
По идее все корректно, надо проверить пару моментов.
- месяц начинается с 0. Т.е. new Date(2021,2,1) - это март.
- в конце не хватает финальной строки, если не выполнится ни одно из выше перечисленных.
В 2022 будете добавлять строки между предпоследней и последней.
- цену за куб надо перевести в цену за импульс. Например, цена импульса 1имп = 0.01м3, то цена за импульс 6.86*0.01 = 0.0686, все верно))
Финальный код будет таким
Пока решение для индексации тарифов только такое.
правильно ли я понимаю.
тот код
нужно и прописать в виртуальном правиле - затраты всего (в поле где считает по газу) ?
Да, все верно.
А в поле где считает электроэнергию тоже надо будет прописать, когда тариф изменится.
Добрый день
в апреле произошло изменение цены на газ.
Я сделал исправление в коде, но правда лишь 20/04
код такой стал:
d.TIME < new Date(2021,2,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,3,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,4,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,5,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,6,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,7,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,8,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,9,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,10,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,11,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2022,0,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2022,1,1) ? d.Ch1*0.0686 :
d.Ch1*0.0686;
но изменений в стоимости на доске не произошло.
Когда программа обращается к коду и когда произойдет перерасчет? Или что для этого нужно?
Добрый день.
Расчеты в настройках виджета вычисляются на лету. каждые 5 секунд. Поэтому не важно когда вы их сделали. все сразу должно отображаться.
В вашем случае стоит упростить формулу до текущей даты и добавлять только по мере необходимости.
Т.к. получилось. что только за март тариф считается по новой цене, а далее опять по старой.
d.TIME < new Date(2021,3,1) - это все, что до 1 апреля. (месяц начинается с нуля и 3 - апрель)
Правильнее буде примерно так:
Т.е. все, что до 1 апреля умножается на тариф 0.0686
Все, что после 1 апреля умножается на новый тариф 0.0679
Если тариф изменится, то просто добавите одну строку условия.
Например, для сентября:
виджет написан на год так сказать вперед, или так я не могу сделать?
т.е. если будут изменения, в каком то месяце то и и для этого месяца будет изменения...
и зачем убирать старые месяца, если они важны для корректного расчета общей стоимости.
Т.к. получилось. что только за март тариф считается по новой цене, а далее опять по старой.
нет, как раз указав d.TIME < new Date(2021,3,1) ? d.Ch1*0.0679
я даю понять что в апреле тариф для расчета 6,79 за куб.м.
почему это не воспринимается?
или так правильно было бы:
d.TIME < new Date(2021,2,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,3,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,4,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,5,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,6,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,7,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,8,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,9,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,10,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,11,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2022,0,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2022,1,1) ? d.Ch1*0.0679 :
d.Ch1*0.0679;
На год вперед писать формулу не надо. Да, так можно, только придется менять все цифры вперед по цепочке.
Лучше вносить условие только когда наступит необходимость.
Условие d.TIME < new Date(2021,3,1) ? d.Ch1*0.0679
говорит. что расход с ДАТОЙ менее 1 апреля умножать на данный тариф. Т.е. сам апрель в это условие не попадает.
Надо тогда так:
да все верно.
ошибка нашлась и все корректно заработало
d.TIME < new Date(2021,2,1) ? d.Ch1*0.0686 :
d.TIME < new Date(2021,3,1) ? d.Ch1*0.0686 : по идее это ведь апрель!!!
d.TIME < new Date(2021,4,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,5,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,6,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,7,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,8,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,9,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,10,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2021,11,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2022,0,1) ? d.Ch1*0.0679 :
d.TIME < new Date(2022,1,1) ? d.Ch1*0.0679 :
d.Ch1*0.0686;
дело в том что поставил новый тариф в строке (Date(2021,4,1) ? d.Ch1*0.0679) хотя по идее это май ведь?!!
странно как то.
но сейчас все четко считает
за март тариф 6,86 получился, за апрель начал считать 6,79
Условие d.TIME < new Date(2021,3,1) ? d.Ch1*0.0679
говорит. что расход с ДАТОЙ менее 1 апреля умножать на данный тариф. Т.е. сам апрель в это условие не попадает.
спасибо за помощь.
Вопрос решен