7.7 Обновление и настройка отчетов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем ЧКДзержинский, 18 май 2007.

  1. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    487
    Симпатии:
    3
    Баллы:
    29
    Функция обновления отчета используется всеми стандартными отчетами. Если непонятно, как там это устроено, то попробую привести пример попроще. Создаем внешний отчет. В таблице создаем две секции:
    1). "Шапка" в одной из ячеек которой присутствует надпись "Обновить", в расшифровке написано РасшифровкаОбновить(1), Защита=1.
    2). "Основная" в одной из ячеек которой установлен режим "Выражение" и вписана переменная ПечТекст.

    На форме отчета присутствует кнопка с идентификатором кнСформировать, которая запускает процедуру Сформировать и текстовое поле с идентификатором ПечТекст.

    При нажатии на кнопку Сформировать появится отчет с текстом "начальное значение". Затем вводим в текстовое поле на форме другой текст и в самом отчете дважды щелкаем на "Обновить".


    Далее текст модуля отчета.

    Перем Таб;
    Перем Расшифровка;

    Функция РасшифровкаОбновить(Обновить)
    Расшифровка.Установить("Обновить", Обновить);
    Возврат Расшифровка;
    КонецФункции //РасшифровкаОбновить()

    Процедура Сформировать()
    Таб.ВывестиСекцию("Шапка");
    Таб.ВывестиСекцию("Основная");
    Таб.ТолькоПросмотр(1);
    Таб.Показать();
    //Больше не будем трогать кнопку
    Форма.кнСформировать.Доступность(0);
    КонецПроцедуры

    //Предоределенная процедура, присутствует в глобальном модуле. Т.к. эта процедура прописана
    //в данном случае локально, то она перекроет глобальную
    Процедура ОбработкаЯчейкиТаблицы(Расшифровка, СтандартнаяОбработка, Таблица,Адрес)
    Если Расшифровка.Получить("Обновить")=1 Тогда
    Таб.Очистить();
    Сформировать();
    КонецЕсли;
    КонецПроцедуры

    Процедура ПриОткрытии()
    Расшифровка=СоздатьОбъект("СписокЗначений");
    Таб=СоздатьОбъект("Таблица");
    ПечТекст="начальное значение";
    КонецПроцедуры


    P.S. Данный отчет можно сделать как внутренним, так и внешним, но если пользоваться глобальной процедурой ОбработкаЯчейкиТаблицы, то отчет должен быть внутренним.
  2. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Хотелось бы привлечь сюда еще администраторов, для объединения трех веток в одну.

    В данном топике частный случай, только обновляющий таблицу (для этого "Расшифровка" может быть и числом, для простоты работы).

    Общий случай, позволяющий выполнять абсолютно все операции (ну на Луну не полетим :) но для отчета это не требуется) описан в ветке http://www.1c-pro.ru/index.php?showtopic=4086&hl=

    Что касается внешних отчетов и глобальной процедурой ОбработкаЯчейкиТаблицы, то можно использовать общий случай, ссылка чуть выше.

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