1С 8.3 БСП СообщитьПрогресс - Программист 1С Минск. Автоматизация бизнеса.

Популярные страницы:
Перейти к контенту

1С 8.3 БСП СообщитьПрогресс

Данные > Примеры кода 1С > 1С 8.3 БСП > Длительные операции
Перейти в раздел примеры кода 1С 8.3:
1С 8.3 БСП СообщитьПрогресс. Регистрирует информацию о ходе выполнения длительной операции. Во избежание избыточного потребления памяти и ее утечек при выполнении одной длительной операции не следует сообщать прогресс более 100 раз.
Примера кода от rayastar
ДлительныеОперации.СообщитьПрогресс(Процент, Текст, ДополнительныеПараметры)

//
Процедура РассчитатьПроцентВыгрузки(КоличествоВыгруженных, КоличествоОбъектовКВыгрузке) Экспорт

   // Сообщение о проценте выгрузки выдаем через каждые 100 объектов.
   Если КоличествоВыгруженных = 0 Или КоличествоВыгруженных / 100 <> Цел(КоличествоВыгруженных / 100) Тогда
       Возврат;
   КонецЕсли;

   Если КоличествоОбъектовКВыгрузке = 0 Или КоличествоВыгруженных > КоличествоОбъектовКВыгрузке Тогда
       ПроцентВыполнения = 95;
       Шаблон = НСтр("ru = 'Обработано: %1 объектов.'");
       Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, Формат(КоличествоВыгруженных, "ЧН=0; ЧГ="));
   Иначе
       // 5% полосы резервируем под выгрузку по ссылкам, проценты по количеству считаем от 95.
       ПроцентВыполнения = Окр(Мин(КоличествоВыгруженных * 95 / КоличествоОбъектовКВыгрузке, 95));
       Шаблон = НСтр("ru = 'Обработано: %1 из %2 объектов.'");
       Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
           Шаблон,
           Формат(КоличествоВыгруженных, "ЧН=0; ЧГ="),
           Формат(КоличествоОбъектовКВыгрузке, "ЧН=0; ЧГ="));
   КонецЕсли;

   // Регистрация сообщения для чтения из клиентского сеанса.
   ДополнительныеПараметры = Новый Структура;
   ДополнительныеПараметры.Вставить("ОбменДанными", Истина);

   ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения, Текст, ДополнительныеПараметры);
КонецПроцедуры;
// Автор библиотеки: ООО "1С-Софт". Все права защищены © 2021
// Типовая конфигурация Библиотека стандартных подсистем (далее - БСП)
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
Примера кода от user1432326
//Фоновое задание будет выполняться в МойОбщийМодуль.ЭмуляцияФоновыйПроцесс().
//В форме обработки вызов этой функции в фоновом задании будет выполняться в три этапа:
//1) Запуск фонового задания  &НаСервере;
//2) Подключение обработчика завершения фонового задания &НаКлиенте;
//3) Обработка результата выполнения фонового задания.\
//Пример можно использовать любых современных типовых конфигурациях и нетиповых, использующих БСП.
//Код: МойОбщийМодуль.ЭмуляцияФоновыйПроцесс()

Функция ЭмуляцияФоновыйПроцесс( Параметр1 = Неопределено, Параметр2 = Неопределено) Экспорт

   Если Параметр1 = Неопределено Тогда
       Параметр1 = 300000;
   КонецЕсли;
   пв1 = Истина; пв2 = Истина; пв3 = Истина; пв4 = Истина; пв5 = Истина;
   Для счетчик = 0 По Параметр1 Цикл
       пакет = Новый Структура("Счетчик, Количество", счетчик, Параметр1);
       процент = ОКР(100*счетчик / Параметр1,0);
       Если  процент > 8 И процент < 10 Тогда
           Если пв1 Тогда   ДлительныеОперации.СообщитьПрогресс(процент, "Идет длительная операция"); пв1 = Ложь; КонецЕсли;
       ИначеЕсли процент > 28 И процент < 30 Тогда
           Если пв2 Тогда ДлительныеОперации.СообщитьПрогресс(процент, "Идет длительная операция"); пв2 = Ложь; КонецЕсли;
       ИначеЕсли процент > 49 И процент < 51 Тогда
           Если пв3 Тогда ДлительныеОперации.СообщитьПрогресс(процент, "Идет длительная операция"); пв3 = Ложь; КонецЕсли;
       ИначеЕсли процент > 70 И процент < 72 Тогда
           Если пв4 Тогда пв4 = Ложь; КонецЕсли;
       ИначеЕсли процент > 89 И процент < 92 Тогда
           Если пв5 Тогда ДлительныеОперации.СообщитьПрогресс(процент, "Идет длительная операция"); пв5 = Ложь; КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   Возврат "Эмуляция фонового процесса завершилась";

КонецФункции



//Код модуля формы:

&НаКлиенте
Процедура ВыполнитьКоманду(Команда)

   длительнаяОперация = НачатьВыполнениеНаСервере(); //Запуск фонового задания на Сервере
   параметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
   параметрыОжидания.ВыводитьПрогрессВыполнения = Истина;
   оповещение = Новый ОписаниеОповещения("ПриЗавершенииНачатьВыполнениеНаСервере", ЭтотОбъект);
   //Подключение обработчика завершения фонового задания^
   ДлительныеОперацииКлиент.ОжидатьЗавершение(длительнаяОперация, оповещение, параметрыОжидания);

КонецПроцедуры

&НаСервере
Функция НачатьВыполнениеНаСервере()

   параметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
   Количество = 450000;
   Возврат ДлительныеОперации.ВыполнитьФункцию(параметрыВыполнения, "МойОбщийМодуль.ЭмуляцияФоновыйПроцесс", Количество);

КонецФункции

&НаКлиенте
Процедура ПриЗавершенииНачатьВыполнениеНаСервере(Результат, ДопПараметры) Экспорт

   Если Результат = Неопределено Тогда // Пользователь отменил задание
       Возврат;
   КонецЕсли;
   Если Результат.Статус = "Ошибка" Тогда
       ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
   КонецЕсли;
   ответ = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
   УдалитьИзВременногоХранилища(Результат.АдресРезультата);
   ОбщегоНазначенияКлиент.СообщитьПользователю(ответ);

КонецПроцедуры
// Автор библиотеки: ООО "1С-Софт". Все права защищены © 2021
// Типовая конфигурация Библиотека стандартных подсистем (далее - БСП)
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
Поиск кода
0
Комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 12.06.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Назад к содержимому