Имя: Пароль:
1C
1C 7.7
v7: Суммировать итог таблицы
,
0 work92
 
16.04.13
10:23
Процедура Сформировать()
 Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Реестр");
   Таб.ВывестиСекцию("Шапка");
   Спр=СоздатьОбъект ("Справочник.ВариантыРасчетаНалогов");
   Док = СоздатьОбъект("Документ.ОказаниеУслуг");
   Спр.НайтиПоНаименованию("НДС сверху 0%",1);
   НАЛТек=Спр.ТекущийЭлемент();
   Док.ВыбратьДокументы(НачДата,КонДата);
   Пока Док.ПолучитьДокумент() = 1 Цикл
       Если Док.ВариантРасчетаНалогов=НАЛТек Тогда
           
       Если Док.Проведен()=1 Тогда
       Иначе
           Продолжить;
       КонецЕсли;
       ИтогоВыручки=0;
       ИтогоСумма=0;
       Контрагент = Док.Контрагент;
       Договор = Док.Договор;
       СМР = Док.СМР;
       Маршрут = Док.Маршрут;
       ДатаУслуг = Док.ДатаДок;
       Док.ВыбратьСтроки();
       Пока Док.ПолучитьСтроку() =1 Цикл
           Если ПустоеЗначение(Док.Договор.ВалютаДоговора) = 1 Тогда
               Сумма= Док.Сумма;
               Выручка = Док.Выручка;
           Иначе
               Сумма = Док.Сумма*Док.Курс;
               Выручка = Док.Выручка;
               
           КонецЕсли;
       КонецЦикла;
   Таб.ВывестиСекцию("Строка");
         
         КонецЕсли;
             КонецЦикла;
                 ИтогоСумма=ИтогоСумма+Сумма;
        ИтогоВыручки=ИтогоВыручки+Выручка;
       
    Таб.ВывестиСекцию("Итог");
   //Таб.ВывестиСекцию("Шапка");
   //ВыбратьСтроки();
   //Пока ПолучитьСтроку()=1 Цикл
   //    Таб.ВывестиСекцию("Строка");
   //КонецЦикла;
   //Итого = Итог("Выручка");
   //Таб.ВывестиСекцию("Подвал");                          
   Таб.ПараметрыСтраницы(2,,0,10,10,5,20,,,1);
   Таб.Опции(0,0,0,0,"ОпцииПечатиРеал","ОкноРеал");
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Печать реестра","");
КонецПроцедуры
1 Godofsin
 
16.04.13
10:23
оценил, ага
2 work92
 
16.04.13
10:24
Куда впихнуть чтобы выдовало итоговую сумму
ИтогоСумма=ИтогоСумма+Сумма;
        ИтогоВыручки=ИтогоВыручки+Выручка;
3 Godofsin
 
16.04.13
10:27
(2) Впихнуть можешь проститутке, а ИтогоСумма и ИтогоВыручки выведи как параметры в секции Итог
4 vinogradъ
 
16.04.13
10:28
(2) сам как думаешь?
5 work92
 
16.04.13
10:29
если можна на примере
6 work92
 
16.04.13
10:32
ИтогоСумма выдает сумму последней ячейки таблица сумма
7 vinogradъ
 
16.04.13
10:32
(6) да ладно
8 work92
 
16.04.13
10:34
vinogradъ есть ответ
9 Builder
 
16.04.13
10:34
(0) Жесть, запросы изучить никак?
Как же так можно писать программы то....
А на примере как то так

Сумма= Док.Сумма;
ИтогоСумма=ИтогоСумма+Сумма;

А еще можно вот так, без перебора строк.
ИтогоСумма = Док.Итог("Сумма");

А еще правильнее сделать запрос.
10 palpetrovich
 
16.04.13
10:41
(2) впихни эти строки в цикл по строкам
(9) при определенном условии :)
11 work92
 
16.04.13
10:50
Выводит не итоговую сумму а число последней ячейки таблицы
ИтогоСумма=ИтогоСумма+Сумма;
        ИтогоВыручки=ИтогоВыручки+Выручка;


//*******************************************
Процедура Сформировать()
 Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Реестр");
   Таб.ВывестиСекцию("Шапка");
   Спр=СоздатьОбъект ("Справочник.ВариантыРасчетаНалогов");
   Док = СоздатьОбъект("Документ.ОказаниеУслуг");
   Спр.НайтиПоНаименованию("НДС сверху 0%",1);
   НАЛТек=Спр.ТекущийЭлемент();
   Док.ВыбратьДокументы(НачДата,КонДата);
   Пока Док.ПолучитьДокумент() = 1 Цикл
       Если Док.ВариантРасчетаНалогов=НАЛТек Тогда
           
       Если Док.Проведен()=1 Тогда
       Иначе
           Продолжить;
       КонецЕсли;
       ИтогоВыручки=0;
       ИтогоСумма=0;
       Контрагент = Док.Контрагент;
       Договор = Док.Договор;
       СМР = Док.СМР;
       Маршрут = Док.Маршрут;
       ДатаУслуг = Док.ДатаДок;
       Док.ВыбратьСтроки();
       Пока Док.ПолучитьСтроку() =1 Цикл
           Если ПустоеЗначение(Док.Договор.ВалютаДоговора) = 1 Тогда
               Сумма= Док.Сумма;
               Выручка = Док.Выручка;
           Иначе
               Сумма = Док.Сумма*Док.Курс;
               Выручка = Док.Выручка;
       
           КонецЕсли;
               ИтогоСумма=ИтогоСумма+Сумма;
        ИтогоВыручки=ИтогоВыручки+Выручка;
       КонецЦикла;
   Таб.ВывестиСекцию("Строка");
                 
         КонецЕсли;
             КонецЦикла;
               
       
             
    Таб.ВывестиСекцию("Итог");
                     
   Таб.ПараметрыСтраницы(2,,0,10,10,5,20,,,1);
   Таб.Опции(0,0,0,0,"ОпцииПечатиРеал","ОкноРеал");
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Печать реестра","");
КонецПроцедуры
12 work92
 
16.04.13
10:51
palpetrovich в какой цикл напиши в коде
13 palpetrovich
 
16.04.13
11:04
(12)
ИтогоВыручки=0;
ИтогоСумма=0;

перенеси в строку перед первым циклом
14 пипец
 
16.04.13
11:05
Если ПустоеЗначение(Док.Договор.ВалютаДоговора) = 1 Тогда
               Сумма= Док.Сумма;
               Выручка = Док.Выручка;
           Иначе
               Сумма = Док.Сумма*Док.Курс;
               Выручка = Док.Выручка;
       
           КонецЕсли;
               ИтогоСумма=ИтогоСумма+Сумма;
        ИтогоВыручки=ИтогоВыручки+Выручка;

ЗЫ просто жесть ;))
15 Builder
 
16.04.13
11:17
Судя по точно такой же ветке автора
Сумировать значение дока
дальнейшее объяснение принципов работы 1С бесполезно :)