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

Как распечатать СКД отчёт?

Автор keramik, 24 июл 2015, 14:30

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

keramik

В итоге отказался от использования СКД отчёта. Создал макет вручную, добавил в него же выбор периода и это у меня получилось.
Но остался открытым вопрос о том, как вывести на печать результат отчёта.
Добавил процедуру:
Процедура Печать(Элемент)
    ТабДок = Новый ТабличныйДокумент;
    Макет = Отчеты.ПС_ЗаявкаНаРемонт.ПолучитьМакет("Макет");
    //Заполняем шапку
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьШапка.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(ОбластьШапка);
    //Заполняем ДанныеКонтрагент
    ОбластьДанныеКонтрагент = Макет.ПолучитьОбласть("ДанныеКонтрагент");
    Для Каждого ТекСтрокаДанныеКонтрагент Из ДанныеКонтрагент Цикл
        ОбластьДанныеКонтрагент.Параметры.Заполнить(ТекСтрокаОбластьДанныеКонтрагент);
        ТабДок.Вывести(ОбластьДанныеКонтрагент);
    КонецЦикла;
    //Заполняем подвал
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьПодвал.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(ОбластьПодвал);
    ТабДок.Показать();
КонецПроцедуры

но она ругается на то, что переменная ДанныеКонтрагент не определена. В остальном отчёт на печать выводится. Подскажите, что именно не нравится программе? Я пока в тупике.

vitasw

Программа не понимает что такое
Цитата: keramik от 03 авг 2015, 14:01ДанныеКонтрагент
. А вы понимаете, что это такое? Я, например, нигде у вас в коде не вижу определения переменной (или что это у вас такое) "ДанныеКонтрагент".


keramik

Это область "ДанныеКонтрагент", делал процедуру по аналогии с процедурой печати документа. Только вот там работает без объявления переменных, а в отчёте подобное не работает.

vitasw

Я вас спрашивал за это:
Цитата: keramik от 03 авг 2015, 14:01Для Каждого ТекСтрокаДанныеКонтрагент Из ДанныеКонтрагент Цикл


keramik

Перебираем строки области, в которую выбираются данные и выводим эти строки.

vitasw

О как! Интересуюсь, а где вы такое чудо нашли? Изобретаете новые методы? Жаль пока 1С об этом ничего не знает.
+, область у вас называется
Цитата: keramik от 03 авг 2015, 14:01ОбластьДанныеКонтрагент


keramik

А как было бы правильно?
Использовать цикл "Пока..."?

vitasw

Да никак. Область - это не коллекция, циклом ее не обойдешь. Стисняюсь спросить, а что вы, собственно, пытаетесь таким извращенным методом организовать?

keramik

Не стесняйтесь. Я делаю кнопку "Распечатать" на форме отчёта и создаю для неё процедуру, которая будет отчёт распечатывать.

vitasw

Тогда расскажите, что с помощью этого кода вы пытаетесь сделать?
Цитата: keramik от 03 авг 2015, 14:01
ОбластьДанныеКонтрагент = Макет.ПолучитьОбласть("ДанныеКонтрагент");     
Для Каждого ТекСтрокаДанныеКонтрагент Из ДанныеКонтрагент Цикл              ОбластьДанныеКонтрагент.Параметры.Заполнить(ТекСтрокаОбластьДанныеКонтрагент);         ТабДок.Вывести(ОбластьДанныеКонтрагент);     
КонецЦикла;


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

Рейтинг@Mail.ru

Поиск