Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 ноя 2024, 11:48

Индикатор на УФ

Автор loiterer, 01 фев 2017, 11:10

0 Пользователей и 1 гость просматривают эту тему.

loiterer

Здравствуйте.
Никак не могу настроить индикатор на УФ.
Задаю:
Прогресс = Элементы.Индикатор;
Прогресс.МаксимальноеЗначение = Кол;    //количество строк таблицы
Для Каждого ТекСтрокаТаблицы Из Таблицы Цикл
      //Обрабатываем данные
      . . .
      //Обновляем индикатор
      Прогресс.Значение = Прогресс.Значение + 1;
КонецЦикла;

{ВнешнийОтчет.Gant1C.Форма.ФормаУправляемая.Форма(8037)}: Поле объекта не обнаружено (Значение)
Прогресс.Значение=Прогресс.Значение+1;

Делаю:


Прогресс = Элементы.Индикатор;
Прогресс.МаксимальноеЗначение = Кол;    //количество строк таблицы
Для Каждого ТекСтрокаТаблицы Из Таблицы Цикл
      //Обрабатываем данные
      . . .
      //Обновляем индикатор
      Счет=Счет+1;
      Прогресс = Счет;
КонецЦикла;

Ошибку не выдает, но ничего и не меняется.
Менял Вид на Поле полосы регулирования.
Ниче не меняется. Поможите, пож-ста.

LexaK

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

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

Если Ответ = КодВозвратаДиалога.Да Тогда
ОбработкаВсего = РезультатТЗ.Количество();
ОбработкаИндекс = 0;
ОбработкаИндикатор = 0;

Пока ОбработкаИндекс < ОбработкаВсего Цикл
ОбработкаПрерыванияПользователя();

            //в данном примере расчет процента
ОбработкаИндикатор = Окр( ОбработкаИндекс * 100 / ОбработкаВсего,2);

ВыполнитьКодНаСервере(лкСтр.ТекстКода);

КонецЦикла;

КонецЕсли;

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

если помогло нажмите: Спасибо!

loiterer

LexaK, чет не до конца понял, что в программном коде рисовать. У меня на клиенте идет в цикле обработка строк таблицы значения. Я хочу, чтобы в конце каждого цикла заполнялся индикатор. Что мне в мой цикл поставить? На форме вроде все верно.

LexaK

так я же пример даже прислал,
в цикле вставьте

...
ВалаПеременнаяИндикатора = ВалаПеременнаяИндикатора  + 1;
...

как настроить см. в картинке выше
если помогло нажмите: Спасибо!

loiterer

LexaK,
Сделал следующим образом
Прогресс = Элементы.ИндикаторМой;
Прогресс.МаксимальноеЗначение = ТЗКол;      
   
Для Каждого Стр Из ЭтотОбъект.ТЗ Цикл

//
//

ИндикаторМой=ИндикаторМой+1;
КонецЦикла;

Теперь индикатор  в самом конце мигом полностью окрашивается. Никакого процесса не наблюдается. Цикл прокручивается 130 раз в течении пары минут.

LexaK

так цикл на клиенте должен крутиться!
когда будем внимательно на пример смотреть? :befhbt:
если помогло нажмите: Спасибо!

loiterer

LexaK, все правильно, цикл на клиенте
Добавлено: 01 фев 2017, 18:31


LexaK,
Вот начало процедуры

&НаКлиенте
Процедура СоздатьРаботу(Знач РедактированиеРесурсов = ложь)
   
   НомерСтрокиЗадачи = тдПроект.ТекущаяОбласть.Верх;
   НомерСтрокиЗадачиКонец = тдПроект.ТекущаяОбласть.Низ;
   
НомерСтрокиЗадачи = 3;
НомерСтрокиЗадачиКонец = 3;   
   
   НастроитьСтроку(НомерСтрокиЗадачи, НомерСтрокиЗадачиКонец);
   
Прогресс = Элементы.ИндикаторМой;
Прогресс.МаксимальноеЗначение = ТЗКол;      
ИндикаторМой=0;   
Для Каждого Стр Из ЭтотОбъект.ТЗ Цикл   
   

Добавлено: 01 фев 2017, 19:37


LexaK,
в конечном итоге сделал через состояние.
Получилось так:

ШагИндикатора = 100/ТЗКоличество;
Индикатор=0;   
Для Каждого Стр Из ЭтотОбъект.ТЗ Цикл   
//
// цикл
//
Индикатор=Индикатор+ШагИндикатора;
Состояние("Выпоняется формирование списка работ", Индикатор,,);
КонецЦикла;

Даже изящней получилось, во всплывающем окне.

Теги:

Похожие темы (4)

Рейтинг@Mail.ru

Поиск