Версия для печати темы (https://pro1c.org.ua/index.php?s=f3500fc3719f321f7f74cc05ac8f8a95&showtopic=54725)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Можно ли сделать автоматическое обновление отчета? 1с 7.7 конф 7.7.003

Автор: ZUBR 19.10.19, 18:29

Здравствуйте! И еще один вопрос. Если у меня открытый отчет на экране и какой-то документ добавился или изменился, есть ли какие-то способы сделать автоматическое обновление отчета, чтобы эти изменения сразу в нем отразились? Спасибо.

Автор: Sharzem 20.10.19, 8:48

ZUBR @ Вчера, 19:29 * ,
Можна виконувати постійне оновлення звіту через певний проміжок часу... Постійно потрібно опитувати відкриті в даний час вікна і при активації форми сформованого звіту оновити його якщо сплив потрібний час. Без компоненти Formex та його об'єктів "РасширениеФормы" та "Окна" не обійтися. Це буде таке собі збочення. Простіше натискати кнопочку.

Автор: volodya1122 21.10.19, 9:01

ZUBR @ 19.10.19, 19:29 * ,

для чого взагалі потрібне автоматичне оновлення звіту? Думаю це взагалі неправильна постановка задачі. Представте: користувач сформував звіт, переглядає на екрані дані звіту, а тут йому пред очами всі дані помінялись. Можна на макеті звіту зробити кнопку "Обновить" із розшифровкою (як наприклад зроблено в звітах "Продажи" "Партии Товаров")

Автор: ZUBR 22.10.19, 20:29

volodya1122 @ Вчера, 10:01 * ,
мені там не зрозуміло, як це зробити. Там якось через глобальний модуль робиться. Не ясно, як. І ще не ясно, як саме створюється секція Кнопки? Там є якісь особливості?

Автор: volodya1122 23.10.19, 15:55

ZUBR @ Вчера, 21:29 * ,

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

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

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

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


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

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

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

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

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

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


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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua