v8: Почему макет выводится дважды?

Аватар пользователя
Администратор
Сообщений: 159
Зарегистрирован: 27 фев 2011, 17:40
Откуда: откуда и все :)
СообщениеДобавлено: 03 мар 2013, 23:50
При создании внешней обработки формирующей примитивный отчет столкнулся с нетривиальным подходом формирования и собственно вывода результата в табличном документе.

При подходе в лоб: Столкнулся с тем, что система дублирует вывод. Сначала выводится макет как задан в конфигураторе с именами параметров и заполненный документ но с выводом наименований областей.

Моя ошибка: Состояла в том, что я пытался вывести макет минуя объект "ТабличныйДокумент".
Выглядело это так:
Код: выделить все
&НаСервере
Процедура ВыводНаПечать()
    // Получаем макет внешней обработки
    Обработка = РеквизитФормыВЗначение("Объект");
    Макет = Обработка.ПолучитьМакет("Макет");
    // Получаем области макета
    ОбластьШапка = Макет.ПолучитьОбласть("шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("строка");
    ОбластьПодвал = Макет.ПолучитьОбласть("подвал");
    // Заполнение шапки и ошибочный вывод ......
    Макет.Вывести(ОбластьШапка);
    // ........ Вывод строк через макет
    // ........ Вывод подвала через макет
    // Попытка вывода сформированного табличного документа через макет приводит к абсолютно непотребному результату
    Макет.Показать("Отчет по производству хреновины")
    // Грубейшая ошибка - Вывод областей и готового результата через макет!
КонецПроцедуры


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

Вернуться в Для программиста

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Яндекс.Метрика
cron