Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 18:58

Помогите пожалуйста сделать итог по колонке "начислено"

Автор kot-1012, 05 сен 2011, 10:02

0 Пользователей и 1 гость просматривают эту тему.

kot-1012

Помогите пожалуйста сделать итог по колонке "начислено"
1С 7.7 конфигурация не типовая.

//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   Перем ЖР;
   //Создание объекта типа Запрос
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Счетчики = Справочник.Счетчики.ТекущийЭлемент;
   |ЛС = Справочник.Счетчики.ЛС;
   |Родитель = Справочник.Счетчики.ЛС.Родитель;
   |Улица = Справочник.Счетчики.ЛС.АдресСтрокой;
   |ТекПоказания = Справочник.Счетчики.ТекПоказания;
   |УчаствуетВРасчетах = Справочник.Счетчики.УчаствуетВРасчетах;
   |ВидРасч = Справочник.Счетчики.ВидРасч;
   |Поставщик = Справочник.Счетчики.ВидРасч.Поставщик;
   |Тариф = Справочник.Счетчики.Тариф;
   |ТипСчетчика = Справочник.Счетчики.ТипСчетчика;
   |Результат = ЖурналРасчетов.Квартплата.Результат;
   |Функция Счётчик = Счётчик();
   |Группировка ТипСчетчика;
   |Группировка Счетчики без групп;
   |Условие(Поставщик в ВыбПоставщик);
   |Условие(УчаствуетВРасчетах = Перечисление.Булево.Да);
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
      Возврат;
   КонецЕсли;

   
   
   Таб1=СоздатьОбъект("ТаблицаЗначений");
   
   Запрос.Выгрузить(Таб1,1,0);
   Таб1.Сортировать("Родитель,ТипСчетчика,Улица");
   Таб = СоздатьОбъект("Таблица");
   
   
   Таб.ИсходнаяТаблица("Сформировать");
   Таб.ВывестиСекцию("Заголовок|ЗагВерт");
   Таб.ПрисоединитьСекцию("Заголовок|ХВС");
   Состояние("Ждеммс...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Кол=0;
   ИтогоЧел=0;
   ИтогЧел1=0;
   Номер=0;
   СтароеУчастокном=0;
   СтароеТипСЧ=0;
   НачисленоХВС=0;
   НачисленоКан=0;
   НачисленоГВС=0;
   ПерерасчетХВС=0;
   ПерерасчетКан=0;
   ПерерасчетГВС=0;
   
    ИтогоНачисленоХВС=0;
   ИтогоНачисленоКан=0;
   ИтогоНачисленоГВС=0;
   НачХВС=0;
   НачГВС=0;
   НачКАН=0;
   ИтНачХВС=0;
   ИтНачГВС=0;
   ИтНачКАН=0;
   Штук=0;
   //ВсегоЧел=0;
   //ВсегоСч=0;
   Таб1.ВыбратьСтроки();
   //глПечатьТз(Таб1);
    Кубы="";
      Пока Таб1.ПолучитьСтроку() = 1 Цикл
      
   т=СоздатьОбъект("ТаблицаЗначений");
   т=глНайтиТаблицуОстатковДляУСЗН(Датапер,Таб1.ЛС);
   т.ВыбратьСтроки();
   //глПечатьТз(Т);

         Если (СтароеУчастокном=Таб1.Родитель) или (СтароеУчастокном=0)  Тогда 
               
            Если (СтароеТипСЧ=Таб1.ТипСчетчика) или (СтароеТипСЧ=0) Тогда
                  НачисленоХВС=0;
                  НачисленоКан=0;
                  НачисленоГВС=0;
                    Пока т.получитьстроку()=1 Цикл
                          Если т.ВидРасчетов.ВидРасч=ВидРасчета.ХВС  Тогда
                           Если т.ВидРасчетов.База=Перечисление.БазаРасчетов.Счетчик Тогда 
                              НачисленоХВС=т.Начисл;
                        КонецЕсли; 
                      КонецЕсли; 
                  
                          Если т.ВидРасчетов.ВидРасч=ВидРасчета.Канализация  Тогда
                           Если т.ВидРасчетов.База=Перечисление.БазаРасчетов.Счетчик Тогда 
                              НачисленоКан=т.Начисл;
                         КонецЕсли;
                        КонецЕсли;
                          
                         Если т.ВидРасчетов.ВидРасч=ВидРасчета.ГВС  Тогда
                           Если т.ВидРасчетов.База=Перечисление.БазаРасчетов.Счетчик Тогда 
                              НачисленоГВС=т.Начисл;
                         КонецЕсли;
                        КонецЕсли
                           
                  КонецЦикла;
                  СтароеТипСЧ=Таб1.ТипСчетчика;
                   СтароеУчастокном=Таб1.Родитель;
                   ТипСчетчика=Таб1.ТипСчетчика;
                  ЛС=Таб1.ЛС;
                  Родитель=Таб1.Родитель;
                  Чел=Таб1.ЛС.КолЛюдей.Получить(Датапер);
                  Чел1=Таб1.ЛС.КолЛюдей.Получить(Датапер);
                  
                  
                  Кол=Кол+1;         
                  Номер=Номер+1;
                   ИтогоЧел=ИтогоЧел+Чел;   
                  ИтогоНачисленоХВС=ИтогоНачисленоХВС+НачисленоХВС;
                  ИтогоНачисленоКан=ИтогоНачисленоКан+НачисленоКан;
                  ИтогоНачисленоГВС=ИтогоНачисленоГВС+НачисленоГВС;
                  ИтогЧел1=ИтогЧел1+Чел1;
               
                  
                  
            Иначе
                  
                  Таб.ВывестиСекцию("Итог|Загверт");
                  Если ТипСчетчика=Перечисление.ТипыСчетчиков.ХВС Тогда
                         Таб.ПрисоединитьСекцию("Итог|ХВС");
                  КонецЕсли;
                  Если ТипСчетчика=Перечисление.ТипыСчетчиков.Канализация Тогда
                         Таб.ПрисоединитьСекцию("Итог|КАН");
                  КонецЕсли;
                  Если (ТипСчетчика<>Перечисление.ТипыСчетчиков.Канализация) И (ТипСчетчика<>Перечисление.ТипыСчетчиков.ХВС) Тогда
                         Таб.ПрисоединитьСекцию("Итого|ГВС");
                  КонецЕсли;
                  НачисленоХВС=0;
                  НачисленоКан=0;
                  НачисленоГВС=0;
                  Столбик="";
                  Кол=0;
                  ИтогоЧел=0; 
                  ИтогоНачисленоХВС=0;
                  ИтогоНачисленоКан=0;   
                  ИтогоНачисленоГВС=0;
                  
                  ЛС=Таб1.ЛС;
                  Чел=Таб1.ЛС.КолЛюдей.Получить(Датапер);
                  Чел1=Таб1.ЛС.КолЛюдей.Получить(Датапер);
                  Родитель=Таб1.Родитель;
                  СтароеТипСЧ=Таб1.ТипСчетчика;
                   СтароеУчастокном=Таб1.Родитель;
                   ТипСчетчика=Таб1.ТипСчетчика;
                  
                   
                  
                  Кол=Кол+1;         
                  Номер=Номер+1;
                  ИтогоЧел=ИтогоЧел+Чел;
                  ИтогоНачисленоХВС=ИтогоНачисленоХВС+НачисленоХВС;
                  ИтогоНачисленоКан=ИтогоНачисленоКан+НачисленоКан;
                  ИтогоНачисленоГВС=ИтогоНачисленоГВС+НачисленоГВС;
                   СтароеУчастокном=Таб1.Родитель;
                  ИтогЧел1=ИтогЧел1+Чел1;
                  
            КонецЕсли;
         Иначе
                   
                  Таб.ВывестиСекцию("Итог|ЗагВерт");
                  Если ТипСчетчика=Перечисление.ТипыСчетчиков.ХВС Тогда
                         Таб.ПрисоединитьСекцию("Итог|ХВС");
                  КонецЕсли;
                  Если ТипСчетчика=Перечисление.ТипыСчетчиков.Канализация Тогда
                         Таб.ПрисоединитьСекцию("Итог|КАН");
                  КонецЕсли;
                  Если (ТипСчетчика<>Перечисление.ТипыСчетчиков.Канализация) И (ТипСчетчика<>Перечисление.ТипыСчетчиков.ХВС) Тогда
                         Таб.ПрисоединитьСекцию("Итог|ГВС");
                  КонецЕсли;
                  ИтогоЧел=0;
                  Кол=0;
                  НачисленоХВС=0;
                  НачисленоГВС=0;
                  НачисленоКан=0;
                  ИтогоНачисленоХВС=0;
                  ИтогоНачисленоГВС=0;
                  ИтогоНачисленоКан=0;
                  Столбик="";
                  
                  СтароеТипСЧ=Таб1.ТипСчетчика;
                  ТипСчетчика=Таб1.ТипСчетчика; 
                  Родитель=Таб1.Родитель;
                  ЛС=Таб1.ЛС;
                  Чел=Таб1.ЛС.КолЛюдей.Получить(Датапер);
                  Чел1=Таб1.ЛС.КолЛюдей.Получить(Датапер);
                  
                  Кол=Кол+1;         
                  
                     Таб.ВывестиСекцию("ПустаяСтрока");
         
                  Номер=Номер+1;
                  ИтогоЧел=ИтогоЧел+Чел;
                  ИтогоНачисленоХВС=ИтогоНачисленоХВС+НачисленоХВС;
                  ИтогоНачисленоКан=ИтогоНачисленоКан+НачисленоКан;   
                  ИтогоНачисленоГВС=ИтогоНачисленоГВС+НачисленоГВС;
                   СтароеУчастокном=Таб1.Родитель;
                  ИтогЧел1=ИтогЧел1+Чел1;
                  
         КонецЕсли; 
   
            //Таб.ВывестиСекцию("Счетчики");
   КонецЦикла;
                      
                  Таб.ВывестиСекцию("Итог|ЗагВерт");
                  Если ТипСчетчика=Перечисление.ТипыСчетчиков.ХВС Тогда
                         Таб.ПрисоединитьСекцию("Итог|ХВС");
                  КонецЕсли;
                  Если ТипСчетчика=Перечисление.ТипыСчетчиков.Канализация Тогда
                         Таб.ПрисоединитьСекцию("Итог|КАН");
                  КонецЕсли;
                  Если (ТипСчетчика<>Перечисление.ТипыСчетчиков.Канализация) И (ТипСчетчика<>Перечисление.ТипыСчетчиков.ХВС) Тогда
                         Таб.ПрисоединитьСекцию("Итог|ГВС");
                  КонецЕсли;
                     
                    
                     Таб.ВывестиСекцию("Итого");
                       Таб.ВывестиСекцию("и");
      Кол=0;
      ИтогоЧел=0;
   
   Таб.ТолькоПросмотр(0);
   Таб.Показать("Сформировать", "");
КонецПроцедуры

ЛицевыеСчета=СоздатьОбъект("Справочник.ЛицевыеСчета");
ЖР=СоздатьОбъект("ЖурналРасчетов.Квартплата");
ДатаАктуальности = ЖР.КонецТекущегоПериода()

kot-1012

архив с отчетом почемуто не могу отправить

sergejK74

ИтогоНачислено = ИтогоНачисленоХВС+ИтогоНачисленоКан+ИтогоНачисленоГВС  ?
Кнопочка Спасибо - слева!

kot-1012


kot-1012

нет,  так не получается.
Совсем другие цифры выдает

sergejK74

Тогда создай переменную ИтогоНачислено и  ИтогоНачислено = ИтогоНачислено + НачисленоХВС+НачисленоКан+НачисленоГВС после ИтогЧел1=ИтогЧел1+Чел1;
Кнопочка Спасибо - слева!

kot-1012

ИтогоНачислено = ИтогоНачислено + НачисленоХВС+НачисленоКан+НачисленоГВС - так выводиться все начисления, а что делать если в запросе будут только ХВС, ГВС или Кан.
И где у Вас кнопочка чтоб говорить СПАСИБО

kot-1012


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск