Имя: Пароль:
1C
1C 7.7
v7: В определенный период брать разное значение переменной
,
0 whitewolf87
 
16.11.17
09:02
Процедура РассчитатьСтроку()
    
    Если ПустоеЗначение(ТабЛС.Адрес)=1 Тогда
        Возврат;
    КонецЕсли;
    Ит=СоздатьОбъект("БухгалтерскиеИтоги");  
    Ит.ПериодД(НачМесяца(Дата1),КонМесяца(Дата2));
    
    ТабЛС.Количество=0;
    ТабЛС.Сумма=0;
    ТабЛС.ОбъемМ=0;
    ТабЛС.НачислениеМ=0;
    Если пк_1=1 Тогда
        л_СчетК=ПоУслуги.СчетК;
    КонецЕсли;
    
    спрБлаг.ИспользоватьВладельца(ТабЛС.Адрес);
    Если спрБлаг.НайтиПоРеквизиту("Услуга",пл_Услуга,0)=1 Тогда  
        
    Иначе
        Предупреждение(ТабЛС.Адрес.Наименование+" не найдена услуга: "+пл_Услуга.Наименование);
        Возврат;
    КонецЕсли;
    
    //выполняем перерасчет помесячно
    тд=(Дата1);
    Пока НачМесяца(тд)<=НачМесяца(Дата2) Цикл      
        Ит.ПериодМ(тд);    
        Если КонМесяца(тд)=КонМесяца(Дата2)  Тогда
            л_Дней=Дата2-тд+1;
        Иначе
            л_Дней=КонМесяца(тд)-тд+1;
        КонецЕсли;
        
        Тариф=пл_Услуга.БазовыйТариф.Получить(тд);
        л_Тариф=спрБлаг.Тариф.Получить(Дата1);
        Норматив=л_Тариф.Норма.Получить(Дата1);
        
        Если пл_Услуга.СпособРасчета=Перечисление.СпособРасчета.ТеплоНаГВЕдиный Тогда
            
            л_ОбъемНачТЭ=Ит.КО(л_СчетК,"К",,ТабЛС.Адрес,пл_Услуга);
            л_ОбъемТННач=Окр(л_ОбъемНачТЭ/Норматив,4);
            ТабЛС.ОбъемМ=ТабЛС.ОбъемМ+Окр(л_ОбъемТННач*Норматив,4);
            ТабЛС.НачислениеМ=Окр(ТабЛС.ОбъемМ*Тариф,2);    
            ТабЛС.Количество=ТабЛС.Количество+Окр(л_ОбъемТННач*пл_Норматив,4);
            
    
            
            
        КонецЕсли;
        ТабЛС.Сумма=Окр(ТабЛС.Количество*Тариф,2);
        тд=НачМесяца(ДобавитьМесяц(тд,1));
    КонецЦикла;
    
КонецПроцедуры
1 whitewolf87
 
16.11.17
09:02
Нужно чтобы значение переменной "Тариф" каждый раз бралось на дату свое, а у меня берется последнее
2 whitewolf87
 
16.11.17
09:16
нужно чтобы итоговые суммы за период допустим 2 месяца январь-500 и февраль-400 рублей с разными "тарифами" сложились
3 tgu82
 
16.11.17
09:18
(0) тд=(Дата1); А скобки зачем?
4 whitewolf87
 
16.11.17
09:19
(3) чтобы дата бралась
5 tgu82
 
16.11.17
09:22
(4) Проверь отладчиком ТД
Тариф=пл_Услуга.БазовыйТариф.Получить(тд);
        л_Тариф=спрБлаг.Тариф.Получить(Дата1);
        Норматив=л_Тариф.Норма.Получить(Дата1);

А почему все на Дата1 а Тариф на дату ТД?
6 whitewolf87
 
16.11.17
09:22
(5) ок, гляжу
7 VladZ
 
16.11.17
09:23
(4) Это понятно. А скобки зачем?
8 VladZ
 
16.11.17
09:24
л_Тариф=спрБлаг.Тариф.Получить(Дата1);
Норматив=л_Тариф.Норма.Получить(Дата1);  - что такое дата1? И зачем в цикле получать одно и то же значение?
9 whitewolf87
 
16.11.17
09:25
(8) Норматив - норматив старый пл_норматив - новый

Дата1 период с старым нормативом
10 VladZ
 
16.11.17
09:25
Ну и самое главное: называй имена переменных по-человечески. Если это дата начала - так и назови "ДатаНачала".  А то и сам потерялся в своих "Дата1", "Дата2". Еще и нам этим мозг разрушаешь...
11 whitewolf87
 
16.11.17
09:28
Дата 1 начало периода дата 2 конец (10)
12 whitewolf87
 
16.11.17
09:29
нужно вот так посчитать:
январь объем по новому нормативу такой то, сумма такая то
февраль ----
Итог=январь+февраль
13 whitewolf87
 
16.11.17
09:31
(12) при том что тариф разный в январе и феврале
14 whitewolf87
 
16.11.17
09:32
допустим январь 10 кубов на 300 руб = 3000 руб
февраль 10 кубов на 400 рублей = 4000 руб
Итог: 20 кубов за 4000 рублей,
а уменя 20 кубов за 8000 рублей
15 VladZ
 
16.11.17
09:53
(14) Я так понимаю сумму ты вот здесь посчитал:
ТабЛС.Сумма=Окр(ТабЛС.Количество*Тариф,2);    ?

Согласно твоему алгоритму, берем итоговое количество и умножаем на последний тариф.
16 whitewolf87
 
16.11.17
09:53
(15) сижу в отладчике понял что не так уже это именно, меняю
17 whitewolf87
 
16.11.17
09:53
(15) спасибо!
18 whitewolf87
 
16.11.17
09:54
(15) отладчик это вещь!
19 whitewolf87
 
16.11.17
10:01
всё получилось! алилуя!
20 whitewolf87
 
16.11.17
10:03
просьба закрыть тему