Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прогресс, процентовка...
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Vofka
Привет!

Давно задумывался о том, как можно сделать процент выполнения обработки, отчета в 1С.

Т.е., если, например, мы обрабатываем документы, то для того, чтобы видеть прогресс нам надо знать хотябы количество документов. Таким образом обработав следующий документ мы можем рассчитать процент выполнения. Но
1. Знает ли программа сколько ещё документов впереди (понятно, что можно предварительно просчитать, но нужно ли..?) ?
2. Документы документами, но часто идет обработка документов + элементы справочников + запросы + .... Как в таком случае?

Короче суть вопроса я думаю понятна. С удовольствием выслушаю ваши предложения и мнения по данной теме. smile.gif
Fynjy
Вот так например:
//*******************************************
Процедура Сформировать()
    лПрогресс = "*";
    Для Сч = 1 По 100 Цикл
        Для Пауза = 1 По 100000 Цикл//Замедлю, что бы видеть ...
        КонецЦикла;
        лПрогресс = лПрогресс +"*";
        Состояние("Прогресс - " + Сч + "% " +лПрогресс);
    КонецЦикла;
КонецПроцедуры


И систему не тормозим и информацию выводим ...
ЗЫ: для 7.7 это самый правильный путь или рисовать компоненту на с++ к примеру ...
Fynjy
Можно заюзать готовую ВК FormEx ... В ней есть объект прогресс бар ...
Vofka
Цитата
Вот так например:
//*******************************************
Процедура Сформировать()
лПрогресс = "*";
Для Сч = 1 По 100 Цикл
Для Пауза = 1 По 100000 Цикл//Замедлю, что бы видеть ...
КонецЦикла;
лПрогресс = лПрогресс +"*";
Состояние("Прогресс - " + Сч + "% " +лПрогресс);
КонецЦикла;
КонецПроцедуры

Ну в данном случае мы знаем что у нас будет 100 итераций.

А если, например, такая конструкция:
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Тогда
...
КонецЦикла;

?

Цитата
Можно заюзать готовую ВК FormEx ... В ней есть объект прогресс бар ...

Посмотрю smile.gif
MATEVI
Держи примеры

1. необходимо зарегистрироваться для просмотра ссылки
2. необходимо зарегистрироваться для просмотра ссылки


Цитата(Vofka @ 26.05.10, 10:37) необходимо зарегистрироваться для просмотра ссылки
А если, например, такая конструкция:
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Тогда
...
КонецЦикла;

?

Сделай запросом. Выгрузи в ТЗ и узнаешь
Для ии=1 по ТЗ.КоличествоСтрок()....
dmiter
Цитата(Vofka @ 26.05.10, 10:37) необходимо зарегистрироваться для просмотра ссылки
А если, например, такая конструкция:
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Тогда
...
КонецЦикла;


Я тогда делал приблизительно:
Например выборка документов за период: считаю приблизительно, что в одной дате порядка 100 документов (это у кого как.)
Сразу увеличиваю максимальный размер счетчика на 100*кво дней. При начале цикла (обработки документа) +1 максимальный размер прогрессБара, при окончании обработки +1 текущий счетчик прогрессБара. При переходе на следующий день +100 текущий счетчик прогрессБара.
Еще необходимо установить чтобы счетчик не бежал назад haha.gif . То есть реальный счетчик (если уже был установлен) ожидает пока текущий счетчик станет больше чем он сам.
Vitalis
Порадовала меня эта темка smile.gif
Для вот этого варианта:
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Тогда
...
КонецЦикла;


Я использовал в процедуре отчета ПриОткрытии() (Отчет по перебору элементов справочника)
номер = 0;
    Спр = СоздатьОбъект("Справочник.Товары");
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
        номер = номер +1;    
    КонецЦикла;


и номер у меня получался какраз необходимым числом итераций. Конечно, так наверно неправельно... но... в спр.товары больше 2000 наименований и открывается он быстро.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.