Простая реализация формирования отчета в фоновом режиме

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

Второй способ - это явное указание компоновщику результата, что отчет нужно формировать в фоновом режиме. Данный способ доступен с версии платформы 8.2.11. Для указания компоновщику результат режима формирования отчета, используется метод формы отчета СкомпоноватьРезультат().

СкомпоноватьРезультат(<РежимКомпоновки>)

Параметры:

  • РежимКомпоновки (необязательный), тип - РежимКомпоновкиРезультата. Задает режим формирования результата. Значение по умолчанию: Непосредственно.
Описание:
Доступен только в форме отчета. Выводит отчет с текущими настройками в элемент - результат. Заполняет данные расшифровки.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент.


Перед тем, как создать собственную команду формы, по нажатию на которую, будет формироваться отчет, необходимо убрать с формы стандартную команду. Для этого в свойствах формы открываем состав команд и снимаем галочку у пункта "Сформировать" (см. рисунок 2).
Рисунок 2. Отключение команды "Сформировать"
Создаем собственную команду формы, и выносим её на основную командную панель (см. рисунок 3).
Рисунок 3. Переопределенная команда формирования отчета
Для собственной команды, задаем код с явным указанием формирования отчета в фоновом режиме:

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


Обратите внимание, что полноценная работа с фоновыми заданиями в файловом варианте работы реализована с версии платформы 8.3.3.641. В клиент-серверном варианте работы проблем с запуском отчета в фоне не будет.

Комментарии

  1. Пригодилась эта статья. Т.к. долго мучилась с фоновым заданием, а тут так просто! Спасибо!!!

    ОтветитьУдалить
  2. При программном формировании отчета данный способ не подходит

    ОтветитьУдалить
  3. Странно. Везде пишут что так, но как то визуально мне что то не нравится. Не очень похоже на асинхронность

    ОтветитьУдалить

Отправить комментарий