Имя: Пароль:
1C
1C 7.7
v7: Проблема с отчетом
0 serg-lom89
 
13.08.13
13:25
Процедура Сформировать()                  
    Таб  =СоздатьОбъект ("Таблица");
    Таб.ИсходнаяТаблица("СводОплат");  
    //Таб.ИсходнаяТаблица("Таблица");  
    Таб.ВывестиСекцию("Шапка");
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("Контрагент","Справочник.Контрагенты");
    ТЗ.НоваяКолонка("Счет","Строка");
    ТЗ.НоваяКолонка("Подразделение","Справочник.Подразделения");
    ТЗ.НоваяКолонка("Сумма","Число");
    ТЗ.НоваяКолонка("СуммаНДС","Число");
    ТЗ.НоваяКолонка("СуммаВсего","Число");
    ТЗ.НоваяКолонка("Содержание","Строка");
    ТЗ.НоваяКолонка("Сумма1","Число");
    ТЗ.НоваяКолонка("СуммаНДС1","Число");
    ТЗ.НоваяКолонка("СуммаВсего1","Число");
    //ТЗ.НоваяКолонка("Содержание","Число");
    Док = СоздатьОбъект("Документ.УслугиСтороннихОрганизаций");
    Док.УстановитьФильтр(1,0);
    Док.ВыбратьДокументы(ДатаНач,ДатаКон);
    Пока Док.ПолучитьДокумент() > 0 Цикл    
        Если Контрагент.Выбран()=1 Тогда
            Если   Контрагент<> Док.Контрагент ТОгда
                Продолжить;
            КонецЕсли;
        КонецЕсли;
        
        ТЗ.НоваяСтрока();
        ТЗ.Контрагент = Док.Контрагент;
        Док.ВыбратьСтроки();
        Пока Док.ПолучитьСтроку() > 0  Цикл
            ТЗ.Счет = Док.КоррСчет.Код;  
            Если Док.КоррСчет = СчетПоКоду("20") Тогда
                ТЗ.Подразделение = Док.Субконто3;
            ИначеЕсли Док.КоррСчет = СчетПоКоду("23") Тогда
                ТЗ.Подразделение = Док.Субконто1;
            ИначеЕсли Док.КоррСчет = СчетПоКоду("25") Тогда
                ТЗ.Подразделение = Док.Субконто2;
            ИначеЕсли Док.КоррСчет = СчетПоКоду("26") Тогда
                ТЗ.Подразделение = Док.Субконто2;
            Иначе
                ТЗ.Подразделение = "";
            КонецЕсли;
            ТЗ.Сумма = Док.Сумма;
            ТЗ.СуммаНДС = Док.НДС;
            ТЗ.СуммаВсего = Док.Всего;
            ТЗ.Содержание = Док.НаименованиеУслуги;  
        КонецЦикла;  
    КонецЦикла;    
    
    ДокПостОтФил = СоздатьОбъект("Документ.ПоступлениеПродОтФилиалов1");
    ДокПостОтФил.УстановитьФильтр(1,0);
    ДокПостОтФил.ВыбратьДокументы(ДатаНач,ДатаКон);
    Пока ДокПостОтФил.ПолучитьДокумент() > 0 Цикл    
        Если Контрагент.Выбран()=1 Тогда
            Если   Контрагент<> ДокПостОтФил.Контрагент ТОгда
                Продолжить;
            КонецЕсли;
        КонецЕсли;
        
        ТЗ.НоваяСтрока();
        ТЗ.Контрагент = ДокПостОтФил.Контрагент;
        ДокПостОтФил.ВыбратьСтроки();
        Пока ДокПостОтФил.ПолучитьСтроку() > 0  Цикл
            //ТЗ.Счет = Док.КоррСчет.Код;  
            //Если Док.КоррСчет = СчетПоКоду("20") Тогда
            //    ТЗ.Подразделение = Док.Субконто3;
            //ИначеЕсли Док.КоррСчет = СчетПоКоду("23") Тогда
            //    ТЗ.Подразделение = Док.Субконто1;
            //ИначеЕсли Док.КоррСчет = СчетПоКоду("25") Тогда
            //    ТЗ.Подразделение = Док.Субконто2;
            //ИначеЕсли Док.КоррСчет = СчетПоКоду("26") Тогда
            //    ТЗ.Подразделение = Док.Субконто2;
            //Иначе
                ТЗ.Подразделение = "";
            //КонецЕсли;
            ТЗ.Сумма1 = ДокПостОтФил.СуммаТары;
            ТЗ.СуммаНДС1 = ДокПостОтФил.СуммаНДС;
            ТЗ.СуммаВсего1 = ДокПостОтФил.ИтогСумма;
            ТЗ.Содержание = ДокПостОтФил.ТекущийДокумент();  
        КонецЦикла;  
    КонецЦикла;  
    ТЗ.Сортировать("Счет,Подразделение");
    ТекСчет  ="";
    ТекКонтр  ="";
    ТекПод="";
    СуммаНДС=0;
    Сумма=0;
    СуммаВсего=0;
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() > 0 Цикл  
        Если  ТекПод="" Тогда
            Таб.ВывестиСекцию("ДругиеДоки");
        КонецЕсли;
        Если ТекСчет = "" Тогда
            ТекСчет = ТЗ.Счет;
            Таб.ВывестиСекцию("Счет");
        КонецЕсли;  
        
        
        Если ТекСчет<>ТЗ.Счет Тогда    
            Таб.ВывестиСекцию("Итого");  
            СуммаНДС=0;
            Сумма=0;
            СуммаВсего=0;
            ТекСчет = ТЗ.Счет;
            Таб.ВывестиСекцию("Счет");
        КонецЕсли;    
        СуммаНДС=СуммаНДС+ТЗ.СуммаНДС;
        Сумма=Сумма+ТЗ.Сумма;
        СуммаВсего=СуммаВсего+ТЗ.СуммаВсего;
        Таб.ВывестиСекцию("Основ");    
    КонецЦикла;
    Таб.ВывестиСекцию("Итого");  
    Таб.ВывестиСекцию("Всего");  
    Таб.ВывестиСекцию("Всего1");
    Таб.Показать();
КонецПроцедуры
Отчет по двум видам доков
надо что бы сразу выводились ПоступлениеПродОтФилиалов1
а затем выводился док в котом есть счет затрат..сразу то вводит как надо,но блин попадает ТекСчет = "" и выводит пустые строчки.подскажите  как избавиться*?
1 Dolly_EV
 
13.08.13
15:32
(0)
ТЗ.НоваяСтрока();
        ТЗ.Контрагент = Док.Контрагент;
        Док.ВыбратьСтроки();
        Пока Док.ПолучитьСтроку() > 0  Цикл
            ТЗ.Счет = Док.КоррСчет.Код;  

Это 5!))) Тебе правда надо в ТЗ собрать из всех твоих доков только ПОСЛЕДНЮЮ строку?)))

и это... пригласите специалиста уже.