Прогресс-бар длительных серверных операций (БСП)

Программирование - Инструментарий

Простой и удобный шаблон для подобного рода задач в виде внешней обработки. Используется технология, предлагаемая в БСП (Библиотеке Стандартных Подсистем), практически без ноу-хау. Доработано таким образом, что обработка может быть как встроенной в конфигурацию, так и внешней.

Суть технологии БСП вкратце: серверный алгоритм (в данном случае - процедура модуля обработки) запускается отдельным фоновым заданием, прогресс выполнения которого довольно остроумно считывается обработкой ожидания на клиенте из стандартного серверного пула сообщений пользователю.
Данная разработка потребовалась по причине того, что не удалось найти готового "кристаллизованного"  примера реализации этой технологии с использованием механизмов БСП.
В БСП эта технология применена в обработках удаления помеченных объектов и группового изменения объектов.
При наличии времени и желания - можно разобраться в их реализации. Мой шаблон просто сэкономит Вам время.
Периодичность записи прогресса на сервере задается в "ПараметрыДлительнойОперации.Вставить("ПериодЗаписи", 1)", периодичность опроса прогресса на клиенте - в "ПараметрыОбработчикаОжиданияДлительнойОперации.МаксимальныйИнтервал = 1". То есть по умолчанию - одна секунда.

Шаблон обработки можно использовать как "черный ящик". Серверный алгоритм реализуется в процедуре модуля обработки "ИсполнитьАлгоритмДлительнойОперации()". Запуск серверного алгоритма и передача параметров - в процедуре модуля формы ФоновоеЗаданиеДлительнойОперацииЗапустить(). Обработка результатов на клиенте - в процедуре модуля формы ФоновоеЗаданиеДлительнойОперацииЗагрузитьРезультат().

Ограничения использования: для работы требуется интегрированная в конфигурацию подсистема базовой функциональности БСП. Проверено под БСП 2.2. В БСП 2.1 не проверялась. В БСП 2.0 не работает.

UPD. Реализована поддержка для БСП 2.3 - можно добавлять в справочник дополнительных отчетов и обработок.
UPD. Исправлена работа в БСП 2.3.5 - убраны лишние зависимости на модуль СтандартныеПодсистемыКлиент, который был изменен в БСП 2.3.5

Скачать файлы

Наименование Файл Версия Размер
ДлительнаяОперацияНаСервереДемо
.epf 9,76Kb
15.09.16
212
.epf 1.0 9,76Kb 212 Скачать

См. также

Комментарии
1. Яков Коган (Yashazz) 2139 23.04.14 18:48 Сейчас в теме
Во-первых, уже было как идея и как удачная "кристаллизованная" реализация, а во-вторых, из-за такой ерунды тащить половину БСП - овчинка выделки не стоит.
2. Сан Саныч (herfis) 212 24.04.14 07:44 Сейчас в теме
Соль данной публикации - именно в максимальном использовании БСП. Чтобы изобретать минимум велосипедов, если БСП уже используется. Насчет "половины БСП" - все используемые из БСП функции относятся к подсистеме "Базовая функциональность"
6. ToTMoM ™ (ToTMoM) 15.09.16 12:04 Сейчас в теме
(2) herfis, да, подскажите пожалуйста, а как правильно запускать её из справочника внешних обработок. А то срочная проблема возникла сейчас, а как допилить сходу не пойму...
Вот тема http://forum.infostart.ru/forum26/topic158267/message1620924/?result=reply#postform
7. Сан Саныч (herfis) 212 15.09.16 12:35 Сейчас в теме
(6) ToTMoM, На свежих БСП не проверял, и для запуска из справочника внешних обработок не допиливал, каюсь. Постараюсь выкроить время и допилить, раз пример все еще востребован.
Но оперативно, к сожалению, это сделать не смогу.
8. Сан Саныч (herfis) 212 16.09.16 12:27 Сейчас в теме
(6) ToTMoM, Доработал
1) теперь работает под БСП 2.3
2) работает в качестве дополнительной обработки. Но реализовано/проверял тоже под БСП 2.3
Если надо запустить доп-обработкой в ранней БСП со старой схемой декларации доп-обработок - просто заменить процедуру декларации доп-обработки в модуле и должно заработать. Можно было бы сделать универсально, но не было времени искать старый вариант декларации.
3. Franchiser (Franchiser) 271 11.10.14 14:50 Сейчас в теме
Все хорошо, но не реализован запуск этой обработки из справочника дополнительных внешних обработок. Предлагаю допилить)
4. Sergey Ryrikow (TopSergey) 21 30.03.15 12:52 Сейчас в теме
Учитывая, что современные конфигурации (пример: Бухгалтерия 3.0) вовсю используют данные механизмы, то простой способ разобраться с этой балалайкой - как раз в тему.
5. Сергей Зеленовский (zels) 165 09.07.16 18:06 Сейчас в теме
Не работает на последних релизах
9. Павел Улитин (UPSoft) 80 19.09.17 18:49 Сейчас в теме
1С:Предприятие 8.3 (8.3.10.2561)
Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.51.25)

ругается:
{ВнешняяОбработка.ДлительнаяОперацияНаСервереДемо.Форма.Форма.Форма(120)}: Метод объекта не обнаружен (ОписаниеРезультатаВыполнения)
Результат = СтандартныеПодсистемыКлиентСервер.ОписаниеРезультатаВыполнения();
10. Сан Саныч (herfis) 212 19.09.17 20:39 Сейчас в теме
(9) Посмотри, плиз, какая там версия БСП (регистр сведений "ВерсииПодсистем" или как-то так). Видать что-то поменялось, постараюсь подправить.
12. Евгений (Eugenie) 56 22.09.17 14:13 Сейчас в теме
(10) Тоже не работает на Бухгалтерия предприятия, редакция 3.0 (3.0.51.25), та же версия подсистемы. СтандартныеПодсистемы - 2.3.5.81
Поправь, пожалуйста.
11. Павел Улитин (UPSoft) 80 20.09.17 11:34 Сейчас в теме
СтандартныеПодсистемы - 2.3.5.81
13. Сан Саныч (herfis) 212 22.09.17 16:21 Сейчас в теме
(11)(12) Исправил.
В БСП 2.3.5 из модуля СтандартныеПодсистемыКлиент убрали некоторые вспомогательные функции для интерактива с клиентом. Даже не стал смотреть, перенесли ли их куда-то или прибили совсем. Это уже второе приключение с ними, т.к. в 2.3 их тоже молча перекроили не так, как в 2.2 было и пришлось делать вилку в алгоритме.
Так как для этой обработки они не критичны, то я засучил рукава и вообще выкосил эти зависимости из своего кода, переписав некоторые блоки. Попутно в процессе получилось несколько упростить код. Так что все к лучшему :)
Оставьте свое сообщение