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

Нужна помощь, внешний отчет не хочет работать

Автор Shaaan, 01 фев 2017, 14:10

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

Shaaan

Приветствую программисты 1С, мне нужна ваша помощь.
Я на данный момент работаю над курсовой работой, тема связана с замером производительности, и для этого я нашел в сети отличный пример отчета, который долго воспроизводится.
Вот как код выглядел изначально.
Процедура КнопкаСформироватьНажатие(Кнопка)

Макет = ПолучитьМакет("Макет");
ТабДок = Новый ТабличныйДокумент;

Для К = 0 По 10000 Цикл
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Наименование = "Продукт" + К;
Область.Параметры.Сумма = 1000;
ТабДок.Вывести(Область);
КонецЦикла;

ТабДок.Показать();

КонецПроцедуры

И при компиляции выдавал такую ошибку
ЦитироватьПроцедура или функция с указанным именем не определена (ПолучитьМакет) Макет = <<?>>ПолучитьМакет("Макет")
Погуглив немного, я нашел ответ, изменил слегка код
Процедура КнопкаСформироватьНажатие(Кнопка)

Макет = ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок = Новый ТабличныйДокумент;

Для К = 0 По 10000 Цикл
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Наименование = "Продукт" + К;
Область.Параметры.Сумма = 1000;
ТабДок.Вывести(Область);
КонецЦикла;

ТабДок.Показать();

КонецПроцедуры

Ошибку перестал выдавать, но теперь появилась новая ошибка при нажатии кнопки "Сформировать"

Kironten


Shaaan

Цитата: Kironten от 01 фев 2017, 14:18
Покажите реквизиты отчета
Реквизиты отсутствуют, так как они не используются в отчете

alex0402

может это из-за того, что слишком большой макет.
Для теста перед Показать() можно вызвать Очистить()
Спасибо за Сказать спасибо

Shaaan

Цитата: alex0402 от 01 фев 2017, 14:31
может это из-за того, что слишком большой макет.
Для теста перед Показать() можно вызвать Очистить()
в макете используется только две ячейки, команду Очистить() вставил, но безрезультатно

Kironten

Если пытаешься, повесить это на стандартную кнопку "сформировать", то надо прописываться в "ПриКомпоновкеРезультата" в модуле отчета.

alex0402

Это управляемая форма на сервере нельзя показать макет. Нужно вернуть на клиента и там показать

&НаКлиенте
Процедура КнопкаСформироватьНажатие()
    СформироватьМакет().Показать();
КонецПроцедуры

&НаСервере
Функция СформироватьМакет()
   
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");   
    ТабДок = Новый ТабличныйДокумент;
   
    Для К = 0 По 10000 Цикл
        Область = Макет.ПолучитьОбласть("Строка");
        Область.Параметры.Наименование = "Продукт" + К;
        Область.Параметры.Сумма = 1000;
        ТабДок.Вывести(Область);
    КонецЦикла;
   
    Возврат ТабДок;
   
КонецФункции
Спасибо за Сказать спасибо

Kironten

Цитата: alex0402 от 01 фев 2017, 14:56
    СформироватьМакет().Показать();
Косяк будет - обращение к функции как к процедуре.

Цитата: alex0402 от 01 фев 2017, 14:56
Это управляемая форма на сервере нельзя показать макет. Нужно вернуть на клиента и там показать
Она ругается не на это. В таком случае ругалось бы на отсутствие метода.

LexaK

сам отчет прикрепите/вложите, посмотрим
если помогло нажмите: Спасибо!

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

Рейтинг@Mail.ru

Поиск