Задача: Сделать прогресс бар (статусную строку).
Проблема: При вызове процедуры, которая выполняется «НаСервере» пользовательский интерфейс блокируется до окончания выполнения этой процедуры. Поэтому изменить форму, выводить статусную строку и сообщения пользователю не получиться.
Решение: Использовать подход Асинхронного программирования – запускать длительную операцию в Фоновом режиме. При этом пользовательский интерфейс не блокируется. Мы можем опрашивать состояние фонового задания (Активно, Завершено и т.д.), получать сообщения из процедуры.
Алгоритм:
1. Размещаем «длительную» процедуру в серверном не глобальном общем модуле.
2. В этой процедуре, на каком-либо этапе посылаем СообщениеПользователю Статус, Процент выполнения и т.п.
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ПроцентВыполнения;
Сообщение.Сообщить();
3. Запускаем фоновое задание и сохраняем Идентификатор этого фонового задания
ФоновоеЗадание = ФоновыеЗадания.Выполнить("АиснхронныеОбработчики.НашаДлительнаяОперация");
Идентификатор = ФоновоеЗадание.УникальныйИдентификатор;
4. Подключаем процедуру-обработчик ожидания с нужным интервалом
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", 2);
5. В процедуре-обработчике опрашиваем состояние фонового задания
Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
Задание.Состояние
6. Получаем и обрабатываем сообщения, которые были отправлены из длительной процедуры
Задание.ПолучитьСообщенияПользователю(Истина);
Т.е. состояние выполнения отправляется через СообщениеПользователю, которое мы потом и получаем.
Собственно так реализован механизм работы в БСП. Там через СообщениеПользователю передаются сериализованные XML данные.
Промежуточные и конечные результаты можно передавать через ВременноеХранилище. Но адрес ВременногоХранилища должен быть получен через Идентификатор формы.
Автору БОЛЬШОЙ плюс. Кратко и доступно!
Скачать обработку нет мани.
Объясните пожалуйста, какую процедуру в каком месте размещать.
(2), если нет мани то, можно посмотретьтут …..
(3) Теперь можно посмотреть «тут» и вот тут
Вот эта статья самая подробная теперь
Можно сказать проблема решена.
Не годится
Базу менять нельзя!
Другие варианты есть?