Имя: Пароль:
1C
1С v8
Как сделать прогресс-бар на УФ 8.3?
,
0 Dmitry1c
 
27.05.15
10:20
Как сделать прогресс-бар на УФ 8.3?
Выполняется серверная процедура в общем модуле.

Можно ли это делать при помощи фоновых заданий, или фоновые задания не дают нам информации о % выполнения?

Тыкните ссылочкой пожалуйста
1 vde69
 
27.05.15
10:22
ПередаваемоеЗначение = ДлительныеОперации.ПрочитатьПрогресс(Поток.ИдентификаторЗадания);
        Если ТипЗнч(ПередаваемоеЗначение) = Тип("Структура") Тогда
            Поток.Обработано = ПередаваемоеЗначение.Процент;
            Поток.ТекущийАдрес = ПередаваемоеЗначение.Текст;
        КонецЕсли;
2 Dmitry1c
 
27.05.15
10:22
+вопрос, а будет ли такой прогресс-бар работать в файловом режиме?
3 Dmitry1c
 
27.05.15
10:23
(1) а можно где-то глянуть пример реализации?
4 vde69
 
27.05.15
10:24
правда не УФ а обычные...


    ПодключитьОбработчикОжидания("ОпросФоновыхЗаданий", 1, ложь);



Процедура ОпросФоновыхЗаданий()
    РаботаЗакончена = Истина;
    Для Каждого Поток из Потоки Цикл
        ПередаваемоеЗначение = ДлительныеОперации.ПрочитатьПрогресс(Поток.ИдентификаторЗадания);
        Если ТипЗнч(ПередаваемоеЗначение) = Тип("Структура") Тогда
            Поток.Обработано = ПередаваемоеЗначение.Процент;
            Поток.ТекущийАдрес = ПередаваемоеЗначение.Текст;
        КонецЕсли;
        
        мСтатус = ДлительныеОперации.ЗаданиеВыполнено(Поток.ИдентификаторЗадания);
        Если мСтатус = Ложь Тогда
            РаботаЗакончена = Ложь;
        ИначеЕсли мСтатус = Неопределено Тогда
            Сообщить(ОписаниеОшибки());
            ОтменитьФоновыеЗадания();
            ОтключитьОбработчикОжидания("ОпросФоновыхЗаданий");
            ЭлементыФормы.Потоки.ОбновитьСтроки();
            Сообщить("Ошибка");
            Возврат;
        ИначеЕсли мСтатус = Истина Тогда
            // все нормально идем дальше
        КонецЕсли;
    КонецЦикла;
    
    ЭлементыФормы.Индикатор.Значение = Потоки.Итог("Обработано");
    
    Если РаботаЗакончена Тогда
        Для Каждого Поток из Потоки Цикл
            РезультатРаботыПотока = ПолучитьИзВременногоХранилища(Поток.АдресХранилища);
            Для Каждого эл из РезультатРаботыПотока.НайденыеIP Цикл
                НайденыеIP.Добавить(эл,,истина);
            КонецЦикла;
        КонецЦикла;
        ОтключитьОбработчикОжидания("ОпросФоновыхЗаданий");
        ОтменитьФоновыеЗадания();
        ЭлементыФормы.Старт.Доступность = Истина;
        ЭлементыФормы.Стоп.Доступность = Ложь;
    КонецЕсли;
    
    ЭлементыФормы.Потоки.ОбновитьСтроки();
    ЭлементыФормы.НайденыеIP.ОбновитьСтроки();
КонецПроцедуры
5 Heckfy
 
27.05.15
10:25
6 Dmitry1c
 
27.05.15
10:26
(4) спасибо
7 fisher
 
27.05.15
10:28
Если типовая или в самописке есть БСП от 2.2, то вот:
http://catalog.mista.ru/public/274721/
8 Dmitry1c
 
27.05.15
10:31
А в файловом режиме возможна реализация таких фоновых заданий?
9 fisher
 
27.05.15
10:33
(8) Да. В файловом режиме первый из пользовательских сеансов автоматом назначается менеджером фоновых заданий (можно переназначить ключом командной строки). Но в отличие от клиент-серверной, фоновые задания могут выполняться только последовательно. Т.е. в один момент времени может работать только одно фоновое задание.
10 fisher
 
27.05.15
10:35
Короче, одновременно с двух компов что-то длительное запустить по такой технологии будет проблемой, как я понимаю.
11 vde69
 
27.05.15
10:36
12 Господин ПЖ
 
27.05.15
10:38
>Как сделать прогресс-бар на УФ 8.3?

формально "градусник" есть Состояние()
13 Dmitry1c
 
27.05.15
10:38
(12) нет, мне хотелось бы форму, которая появляется на этапе обновления ИБ на новую версию
14 fisher
 
27.05.15
10:42
(10) + Хотя нет, не будет проблемой. Задания стопудово выполняются на тех компах, где инициированы. Т.е. два инициированных с разных компов будут выполняться параллельно без проблем (т.к. на разных машинах). Не получится параллельно два с одного компа запустить.
15 fisher
 
27.05.15
10:43
(13) А чем тебя родная не устраивает из БСП?
16 Dmitry1c
 
27.05.15
11:10
(15) устраивает, вот курю сижу
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.