Имя: Пароль:
1C
1C 7.7
v7: Выборка из вида расчета
0 work92
 
20.11.15
14:03
Здравствуйте подскажите в чем проблема
Есть 3 нач дов за вредность  в журнале  ЗП
с 1.10.15-10.11.15 80 000
с 11.11 15- 29.11.15 100 000
Обработка выводит результат
80 000
180 000
А Нужно чтобы вывело конечный результат
180 000
1 work92
 
20.11.15
14:03
Процедура Выполнить()    
  КонДата = РабочаяДата();
Таб=СоздатьОбъект("таблица") ;
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");      
Долж = СоздатьОбъект("Справочник.Должности");
ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
Таб.ИсходнаяТаблица("Таблица");
таб.Вывестисекцию("Строка1");
   СпрСотр.ВключатьПодчиненные(1);
   СпрСотр.ИспользоватьДату(КонДата);
       СпрСотр.НайтиПоНаименованию("Расчетчик1",0,0);
    Расчетчик1=СпрСотр.ТекущийЭлемент();
    СпрСотр.ИспользоватьРодителя(Расчетчик1);
    СпрСотр.ВыбратьЭлементы();  
    
    Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
            
    ТекСотр=СпрСотр.ТекущийЭлемент();
        
    ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр,ДатаНач, ДатаКон);
      Кол=0;  
        
     ВредР=0;
        ВредЧ=0;  
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
    Если (ЖЗ.ВидРасч = ВидРасчета.ДоплатаЗаВредность)или (ЖЗ.ВидРасч = ВидРасчета.ДоплатаЗаВредностьСовм) Тогда
        
       Фио=СпрСотр.Наименование;
    Наздолж=СпрСотр.Должность;
    ВредН=СпрСотр.Должность.УсловияТруда;
    ВредЧ=ВредЧ+ЖЗ.Часы;
    ВредР=ВредР+ЖЗ.Результат;
        
     Таб.Вывестисекцию("Строка2") ;
      КонецЕсли;

            
        

          КонецЦикла;
          
          
КонецЦикла;
      
Таб.Показать();
КонецПроцедуры
2 шаэс
 
20.11.15
14:07
(0) после вывода "Строка2" обнулять было бы неплохо значения, которые считаются нарастающим.
3 work92
 
20.11.15
14:07
а как
4 work92
 
20.11.15
14:07
Если возможно кодом
5 cw014
 
20.11.15
14:08
Наверное потому что Таб.Вывестисекцию("Строка2") ;  внутри цикла
6 work92
 
20.11.15
14:09
И выносил из цикла тоже результат выводит не правельно
7 шаэс
 
20.11.15
14:12
(4) э...
ВредЧ=ЖЗ.Часы;
ВредР=ЖЗ.Результат;
Таб.Вывестисекцию("Строка2") ;


а если вам все-таки надо посчитать итоговое значение этих величин, то вводите до начала цикла по строкам
ИтогоВредЧ = 0;
ИтогоВРедР = 0;
и суммируйте уже их:
ВредЧ=ЖЗ.Часы;
ВредР=ЖЗ.Результат;
ИтогоВредЧ = ИтогоВредЧ + ВредЧ;
ИтогоВредР = ИтогоВредР + ВредР;
Таб.Вывестисекцию("Строка2") ;
8 aka AMIGO
 
20.11.15
14:12
Пятничный Г-код! :)

        ВредЧ=0;

ФИО = "";  //новьё :)
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
    Если (ЖЗ.ВидРасч = ВидРасчета.ДоплатаЗаВредность)или (ЖЗ.ВидРасч = ВидРасчета.ДоплатаЗаВредностьСовм) Тогда
        
       Фио=СпрСотр.Наименование;
    Наздолж=СпрСотр.Должность;
    ВредН=СпрСотр.Должность.УсловияТруда;
    ВредЧ=ВредЧ+ЖЗ.Часы;
    ВредР=ВредР+ЖЗ.Результат;
        
     //Таб.Вывестисекцию("Строка2") ; //коммент
      КонецЕсли;

            
        

          КонецЦикла;
//3 новых строки:
          Если ПустоеЗначение(ФИО)=0 Тогда
             Таб.Вывестисекцию("Строка2");
          КонецЕсли;
          
КонецЦикла;


Тогда будут выводиться только последние присвоенные значения, а не все.
11 aka AMIGO
 
20.11.15
14:17
ТС! (9) и (10) - не учитывать..
я упустил первый цикл. в (8) идея правильная, но правильно-ли решение - не знаю.
12 work92
 
20.11.15
14:28
СП
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс