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

помогите плиз с отчетом!

Автор masster11, 25 апр 2010, 12:54

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

masster11

Всем доброго времени суток!
Помогите плиз с отчетом. Отчет работает нормально, если в периодах одинаковое количество услуг (Рис.1)[)
Но если в периодах разное количество услуг, то услуги сверху не добавляются, т.е. например не понятно к какой услуге относится сумма 376,32 за период 01.01.2009  (Рис.2))


модуль:

Процедура Сформировать()

   Таб = СоздатьОбъект("ТаблицаЗначений");
   Таб.НоваяКолонка("Услуга",     "ВидРасчета",20);
   Таб.НоваяКолонка("Период",     "Дата");
   Таб.НоваяКолонка("Начисления", "Число",20,2);

    ДатаПериода=НачМесяца(Дата1);
   Пока ДатаПериода<Дата2 Цикл
//********************************************************  НАЧИСЛЕНИЯ
   ЖН  = СоздатьОбъект("ЖурналРасчетов.Нач_" + ДатаГод(ДатаПериода)+"_"+Формат(ДатаМесяц(ДатаПериода),"Ч(0)2.0"));
//*******************************************************   ПЕРЕРАСЧЕТ НАЧИСЛЕНИЙ
   ЖПН = СоздатьОбъект("ЖурналРасчетов.ПРН_" + ДатаГод(ДатаПериода)+"_"+Формат(ДатаМесяц(ДатаПериода),"Ч(0)2.0"));
//********************************************************  ЛЬГОТЫ
   ЖЛ  = СоздатьОбъект("ЖурналРасчетов.Льг_" + ДатаГод(ДатаПериода)+"_"+Формат(ДатаМесяц(ДатаПериода),"Ч(0)2.0"));
//*******************************************************   ПЕРЕРАСЧЕТ_ЛЬГОТ
   ЖПЛ = СоздатьОбъект("ЖурналРасчетов.ПРЛ_" + ДатаГод(ДатаПериода)+"_"+Формат(ДатаМесяц(ДатаПериода),"Ч(0)2.0"));


 
//********************************************************  НАЧИСЛЕНИЯ
            ЖН.ВыбратьПериодПоОбъекту(ЛС.ТекущийЭлемент(),ДатаПериода);
            Пока ЖН.ПолучитьЗапись() = 1 Цикл
               Таб.НоваяСтрока();
               Таб.Услуга = ЖН.ВидРасч;
               Таб.Начисления = Таб.Начисления + ЖН.Результат;
               Таб.Период = ДатаПериода;
            КонецЦикла;
//*******************************************************   ПЕРЕРАСЧЕТ НАЧИСЛЕНИЙ
            ЖПН.ВыбратьПериодПоОбъекту(ЛС.ТекущийЭлемент(),ДатаПериода);
            Пока ЖПН.ПолучитьЗапись() = 1 Цикл
               Таб.НоваяСтрока();
               Таб.Услуга = ЖПН.ВидРасч;
               Таб.Начисления = Таб.Начисления + ЖПН.Результат;
               Таб.Период = ДатаПериода;
            КонецЦикла;
//********************************************************  ЛЬГОТЫ
            ЖЛ.ВыбратьПериодПоОбъекту(ЛС.ТекущийЭлемент(),ДатаПериода);
            Пока ЖЛ.ПолучитьЗапись() = 1 Цикл
               Таб.НоваяСтрока();
               Таб.Услуга = ЖЛ.ВидРасч;
               Таб.Начисления = Таб.Начисления - ЖЛ.Результат;
               Таб.Период = ДатаПериода;
            КонецЦикла;
//*******************************************************   ПЕРЕРАСЧЕТ_ЛЬГОТ
            ЖПЛ.ВыбратьПериодПоОбъекту(ЛС.ТекущийЭлемент(),ДатаПериода);
            Пока ЖПЛ.ПолучитьЗапись() = 1 Цикл
               Таб.НоваяСтрока();
               Таб.Услуга = ЖПЛ.ВидРасч;
               Таб.Начисления = Таб.Начисления - ЖПЛ.Результат;
               Таб.Период = ДатаПериода;
            КонецЦикла;
//_________________________Свернуть СодРем
      Если СодРем=1 Тогда
         Таб.ВыбратьСтроки();
         Пока Таб.ПолучитьСтроку() = 1 Цикл
            Если Таб.Услуга = ВидРасчета.Лифт Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.СборВывозТБО Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.АДС Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ТБО_ТСЖ Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.УтилизацияТБО Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.Электроизмерение Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.УборкаПодъездовМ2 Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ТехОбслуживаниеЛифтов Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ОбслуживаниеСистемППАиДУ Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.УборкаПридомовойТерритории Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ОбслуживаниеМусоропроводов Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ОсмотрГазовогоОборудования Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ТехОсмотрЭлектроПлит Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.РемонтСДК Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ОсвещениеМОП Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.УслугаРИЦ Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ДиагностикаЛифтов Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ДиспетчеризацияЛифтов Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ТОПУиСД Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.УслугаТСЖ Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.СодержаниеЖилья2008 Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.РемонтЖилья2008 Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.МеханизированнаяУборкаТерритории Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ОбслуживаниеВентиляционныхКаналов Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            ИначеЕсли Таб.Услуга = ВидРасчета.ДератизацияИДезинсекция Тогда
               Таб.Услуга = ВидРасчета.СодержаниеРемонтЖилья2006;
            Иначе продолжить;
            КонецЕсли;
          КонецЦикла;
        КонецЕсли;
   
//________________________________________
           
ДатаПериода=ДобавитьМесяц(ДатаПериода,1);
КонецЦикла;
    Таб.Свернуть("Услуга,Период", "Начисления");
   Т = СоздатьОбъект("Таблица");
   Т.ИсходнаяТаблица("Форма2");
    Таб.Сортировать("Период+,Услуга+");
    Таб.ВыбратьСтроки(); 
    Т.ВывестиСекцию("Шапка|Период");
   пп="***";
   пока Таб.ПолучитьСтроку() = 1 цикл
       Если пп<> Таб.Период Тогда
         Если пп <> "***" Тогда
            прервать;
         КонецЕсли;
         пп=Таб.Период;
      КонецЕсли;
      Т.ПрисоединитьСекцию("Шапка|Строка");
   КонецЦикла;
   Т.ПрисоединитьСекцию("Шапка|Итого");
   Таб.ВыбратьСтроки(); 
   пп="***";
   Начисления=0;
   пока Таб.ПолучитьСтроку() = 1 цикл
          Если пп<> Таб.Период Тогда
            Если пп <> "***" Тогда
               Т.ПрисоединитьСекцию("Период1|Итого");
               Начисления=0;
               КонецЕсли;
            Т.ВывестиСекцию("Период1|Период");
            пп=Таб.Период;
         КонецЕсли;
         Начисления = Начисления + Таб.Начисления;
          Т.ПрисоединитьСекцию("Период1|Строка");
      КонецЦикла;
   Т.ПрисоединитьСекцию("Период1|Итого");
   Т.Показать();
КонецПроцедуры   
СодРем=1;
Дата1=НачМесяца(ДобавитьМесяц(ТекущаяДата(),0));
Дата2=КонМесяца(ТекущаяДата());

masster11


masster11

Блин помогите кто-нибудь, очень надо. денег заплачу блин )

Tatitutu

Добрый день, посмотри мой пример думаю сам разберешся. Если неполучится, пиши -решим вместе.

*  MAGAZKA - лучшая программа для розничного магазина (с) *

Теги:

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

Рейтинг@Mail.ru

Поиск