Имя: Пароль:
1C
1C 7.7
v7: Помогите разобраться с циклами.
0 roalang
 
17.01.13
21:23
В документе надо посчитать тариф и разбросать это тариф на каждую квартиру дома. Так как округлять тариф нельзя, нахожу разницу между суммой которую ввожу вручную и суммой которая получается после нахождения тарифа после. Отклонение надо в любой адрес засунуть.

[code]
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 цикл
       
если (ПустоеЗначение(Дом)=1) или (ПустоеЗначение(Сумма)=1)       тогда                                                                
    Продолжить;
конецесли;
               
   Кл.ПорядокКодов();
   Кл.ВыбратьЭлементыПоРеквизиту("Дом", Дом, 1,0) ;
       
       сообщить("++++++++++++++++++++++++++++");  
       сообщить("Дом :" + Кл.Дом);        
       сообщить("++++++++++++++++++++++++++++");    
       
       // цикл где поквартирно собирается площадь дома
       
   суммитог=0;
   ПлДома=0;
   Пока Кл.ПолучитьЭлемент()=1 цикл  
       ПлДома=ПлДома+ Кл.ОбщПл.Получить(глДатаНачалаПериода);          
       КонецЦикла;
           
       тариф=сумма/ПлДома;  
           
       сообщить("Площадь дома : " + ПлДома);
       сообщить("Тариф : " + Тариф);    
       сообщить("Сумма : " + Сумма);
   
             
       Кл.ВыбратьЭлементыПоРеквизиту("Дом", Дом, 1,0);
       Пока Кл.ПолучитьЭлемент()=1 цикл
           
           ЖурКв.ВыбратьЗаписиПоОбъекту(Кл.ТекущийЭлемент(), глДатаНачалаПериода, глДатаКонцаПериода) ;  
           Пока ЖурКв.ПолучитьЗапись()=1 цикл                
               
               если (Нрег(ЖурКв.Расчет.Наименование)="одн электроэнергия")  и (ЖурКв.Документ.Вид() = "ПодготовкаОДНЭл")  тогда
                   
                   суммитог= суммитог+ журкв.тариф*Кл.ОбщПл.Получить(глДатаНачалаПериода)   ;  
                   откл= сумма-суммитог;    //  ФлагОткл=0;                    
               
               конецесли;
           конеццикла;    
       конеццикла;    
       
       сообщить(суммитог);    
       сообщить(откл);    
               
       Кл.ВыбратьЭлементыПоРеквизиту("Дом", Дом, 1,0);
       Пока Кл.ПолучитьЭлемент()=1 цикл        
           
           ЖурКв.ВыбратьЗаписиПоОбъекту(Кл.ТекущийЭлемент(), глДатаНачалаПериода, глДатаКонцаПериода) ;  
           Пока ЖурКв.ПолучитьЗапись()=1 цикл                
               
               если (Нрег(ЖурКв.Расчет.Наименование)="одн электроэнергия")  и (ЖурКв.Документ.Вид() = "ПодготовкаОДНЭл")  тогда
                   
                   Если  Кл.ОбщПл.Получить(глДатаНачалаПериода)=0 тогда
                       прервать
                   иначе
                       ЖурКв.УстановитьРеквизит("Тариф",Тариф);    
                       ЖурКв.УстановитьРеквизит("Результат",Кл.ОбщПл.Получить(глДатаНачалаПериода)*тариф - Откл);    
                       //ЖурКв.УстановитьРеквизит("Результат",Кл.ОбщПл.Получить(глДатаНачалаПериода)*тариф + ?(ФлагОткл = 0,Откл,0)) ;
                       
                       ЖурКв.УстановитьРеквизит("Количество",0);
                       ЖурКв.УстановитьРеквизит("Рассчитана",1);
                       ЖурКв.Записать();      
                       //ФлагОткл = 1;
                   Конецесли;
                   
               конецесли;    
           конеццикла;
       конеццикла;  

 [/code]
1 monsterZE
 
17.01.13
22:07
мне первое условие понравилось =) такое может быть да?
2 monsterZE
 
17.01.13
22:13
(0) как такой код вобще получается?
3 Попытка1С
 
17.01.13
22:17
Проверить последнюю строку и разницу накопленного и общего кинуть туда.
4 NS
 
17.01.13
23:00
Как внутри цикла по кл может быть цикл по кл?
5 NS
 
17.01.13
23:01
А, там код не выровненный. Убивать за такое надо.
6 monsterZE
 
17.01.13
23:05
(5) =) пока в конф. не закопипастил.... ппц
7 monsterZE
 
17.01.13
23:06
собсно не понятно в чем вопрос у (0)?
8 Тьма
 
17.01.13
23:53
(7)У него под дверью пенсионерка, на которую он повесил разницу в округлении. Требует объяснить, как у нее посчитана квартплата. Угрожает дойти до Путина.
9 monsterZE
 
18.01.13
00:05
(8) это она =)
10 Злопчинский
 
18.01.13
00:16
> Так как округлять тариф нельзя... Отклонение надо в любой адрес засунуть.
.
противоречие.
11 zak555
 
18.01.13
00:16
что такое Кл ?
12 zak555
 
18.01.13
00:18
а что площадь переменная часть ?
13 КонецЦикла
 
18.01.13
01:08
(7) +1
Работает или нет?
14 monsterZE
 
18.01.13
09:21
(0) про площадь дома тоже заинтересовало =) ну и это отклонение.. тогда уж пропорционально между всеми квартирами его раскидай..
15 lefthander
 
18.01.13
09:22
(11) Справочник.
16 ЧеловекДуши
 
18.01.13
09:29
(0)Жесть... и теперь понятно, откуда такие цифры... :)
Автор, беги, беги от туда, если ЖКХ поймет, что ты Лузер, на тебя же все повешают :)