7.7 Отчет развернуто.

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Peroman, 15 июн 2010.

  1. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Как сделать, чтобы в отчет выводились строки документа, т.е. у меняя есть:
    Код:
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб, Искл;
    
    СпрФ = СоздатьОбъект("Справочник.Фирмы");
    
    Если Спрф.НайтиПоНаименованию("ХХХХХХХ") = 1 Тогда
    Искл = Спрф.ТекущийЭлемент();
    КонецЕсли;	
    
    Если глПроверкаДаты(ВыбНачПериода,ВыбКонПериода)=0 Тогда
    Возврат;
    КонецЕсли;      
    
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Контрагент = Регистр.Покупатели.Договор.Владелец, Регистр.Поставщики.Договор.Владелец;
    |СуммаРуб = Регистр.Покупатели.СуммаВал, Регистр.Поставщики.СуммаВал;
    |Фирма = Регистр.Покупатели.Фирма, Регистр.Поставщики.Фирма;
    |ТекущийДокумент = Регистр.Покупатели.ТекущийДокумент, Регистр.Поставщики.ТекущийДокумент;
    |Функция СуммаРубНачОст = НачОст(СуммаРуб);
    |Функция СуммаРубПриход = Приход(СуммаРуб);
    |Функция СуммаРубРасход = Расход(СуммаРуб);
    |Функция СуммаРубКонОст = КонОст(СуммаРуб);
    |Группировка Контрагент без групп;
    |Группировка ТекущийДокумент;
    |Условие(Контрагент в ВыбКонтрагент);
    |Условие(Фирма <> Искл);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    
    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
    // Заполнение полей Контрагент
    Таб.ВывестиСекцию("Контрагент");     
    Долг=Запрос.СуммаРубНачОст;
    Пока Запрос.Группировка(2) = 1 Цикл
    Если ПустоеЗначение(Запрос.ТекущийДокумент)=0 Тогда
    Долг=Долг+Запрос.СуммаРубПриход-Запрос.СуммаРубРасход; 
    Таб.ВывестиСекцию("ТекущийДокумент");
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ВывестиСекцию("Итого");
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Ведомость "+?(ПустоеЗначение(ВыбКонтрагент)=1,"взаиморасчетов","по "+ВыбКонтрагент.Наименование), "");
    Форма.Закрыть();
    КонецПроцедуры
    
    
    
    
    Процедура ПриОткрытии()                  
    ВыбНачПериода=НачМесяца(ПолучитьДатуТА());
    ВыбКонПериода=ПолучитьДатуТА();
    ВыбКонтрагент=Форма.Параметр.Получить("Контрагент");	
    КонецПроцедуры
    
    
    Мне нужно чтобы в таблицу после секции "ТекущийДокумент" , выводились строки(табличная часть) этого документа. Как это реализовать?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Можно так:
    Код:
    Док=СоздатьОбъект("Документ");
    //тут запрос
    ....
    Если ПустоеЗначение(Запрос.ТекущийДокумент)=0 Тогда
    Долг=Долг+Запрос.СуммаРубПриход-Запрос.СуммаРубРасход;
    Таб.ВывестиСекцию("ТекущийДокумент");        
    Док.НайтиДокумент(Запрос.ТекущийДокумент);
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку()=1 Цикл
    Таб.ВывестиСекцию("СтрокаДокумента");
    КонецЦикла;
    КонецЕсли;
    ....
    
    
    
  3. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Код:
    Если ПустоеЗначение(Запрос.ТекущийДокумент)=0 Тогда
    Долг=Долг+Запрос.СуммаРубПриход-Запрос.СуммаРубРасход; 
    Таб.ВывестиСекцию("ТекущийДокумент");
    Док = Док.НайтиДокумент(Запрос.ТекущийДокумент);
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку() = 1 Цикл
    Таб.ВывестиСекцию("Подробно");
    КонецЦикла;	
    КонецЕсли;
    
    
    Ругается:
    Код:
    Док.ВыбратьСтроки();
    {..... Значение не представляет агрегатный объект (ВыбратьСтроки)
    
    
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Уберите Док =
    должно быть так
    Код:
    Док.НайтиДокумент(Запрос.ТекущийДокумент);
    Док.ВыбратьСтроки();
    
    
  5. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Ага всё верно, спасибо.

Поделиться этой страницей