Переодические константы, как отловить изменение?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ситуация такова есть самописная программа в ней есть две константы стоитмость выходного дня, стоимостьБудней в результате с 01.01.06 стоимость будней была 10 а с 01.10.06 стала 20 рублей
Есть документ оплата где
СуммаДолга =Машина.Сумма+глРабочихДней(Машина.ДатаН,ДатаОплаты)*Константа.СтавкаБудние.Получить(ДатаДок) + глВыходныхДней(Машина.ДатаН,ДатаОплаты)*Константа.СтавкаВыходные.Получить(ДатаДок);
Как правильно отловить стоимость до 01.10.06 и после?
Есть документ оплата где
СуммаДолга =Машина.Сумма+глРабочихДней(Машина.ДатаН,ДатаОплаты)*Константа.СтавкаБудние.Получить(ДатаДок) + глВыходныхДней(Машина.ДатаН,ДатаОплаты)*Константа.СтавкаВыходные.Получить(ДатаДок);
Как правильно отловить стоимость до 01.10.06 и после?
Константа.СтавкаБудние.Получить(ДатаДок) = 20 рублей так как дата 06.10.06
а хотя машина стоит с 20 сентября тоесть с Константа.СтавкаБудние.Получить(ДатаДок) = 10 рублей с 20 - 30 = 100 рублей за сентябрь и 01.10 - 06.10 = 20*6=120 рублей а у меня получается (10+6)*20= 320 рублей
Выборку значений можно организовать через объект "Периодический". Как-то так (экспромт, не тестил код):
Ставки = СоздатьОбъект("Периодический");
Ставки.ИспользоватьОбъект("СтавкаБудние");
Ставки.ВыбратьЗначения(ДатаСКоторойСтоитМашина, ДатаОкончанияСтоянки);
ТекДата = ДатаСКоторойСтоитМашина;
ТекСтавка = Константа.СтвкиБудние.Получить(ДатаСКоторойСтоитМашина);
Сумма = 0;
Пока Ставки.ПолучитьЗначение() = 1 Цикл
Если ТекСтавка <> Ставки.Значение Тогда
ДатаЗначения = Ставки.ДатаЗнач;
Сумма = Сумма + глРабочихДней(ТекДата,ДатаЗначения) * Ставки.Значение;
ТекДата = ДатаЗначений;
ТекСтвка = Ставки.Значение;
КонецЕсли;
КонецЦикла
Если ТекДата < ДатаОкончанияСтоянки Тогда
Сумма = Сумма + глРабочихДней(ТекДата,ДатаОкончанияСтоянки)*ТекСтавка;
КонецЕсли;
Ставки = СоздатьОбъект("Периодический");
Ставки.ИспользоватьОбъект("СтавкаБудние");
Ставки.ВыбратьЗначения(ДатаСКоторойСтоитМашина, ДатаОкончанияСтоянки);
ТекДата = ДатаСКоторойСтоитМашина;
ТекСтавка = Константа.СтвкиБудние.Получить(ДатаСКоторойСтоитМашина);
Сумма = 0;
Пока Ставки.ПолучитьЗначение() = 1 Цикл
Если ТекСтавка <> Ставки.Значение Тогда
ДатаЗначения = Ставки.ДатаЗнач;
Сумма = Сумма + глРабочихДней(ТекДата,ДатаЗначения) * Ставки.Значение;
ТекДата = ДатаЗначений;
ТекСтвка = Ставки.Значение;
КонецЕсли;
КонецЦикла
Если ТекДата < ДатаОкончанияСтоянки Тогда
Сумма = Сумма + глРабочихДней(ТекДата,ДатаОкончанияСтоянки)*ТекСтавка;
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот