глПрогресс(). Индикатор прогресса с оценкой времени в виде: Обработано: 15%. Осталось: 00:01:15.

19.11.07

Разработка - Работа с интерфейсом

Текст "Обработано: 3%. Осталось: 00:15:10" гораздо содержательнее текста "Обработано: 100 из 3467".

Такая информация позволит вашим пользователям спланировать и потратить время,
пока выполняется обработка более эффективно.
Особенно когда обработка длится несколько минут и более.

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

Наименование Файл Версия Размер
ProgressTimeRemain.zip
.1195302085 5,71Kb
1085
.1195302085 5,71Kb 1085 Скачать бесплатно
Функция отображения прогесса, с заранее известным числом итераций цикла.
Показывает в строке состояния текст обрабоки, процент выполнения (%)
и время до завершения обработки в виде:

Обработано: 15%. Осталось: 00:01:15.

Пример использования:
квсего = тз.КоличествоСтрок(); // тз - заполненная ТаблицаЗначений
глПрогрессСоздать(квсего);
тз.ВыбратьСтроки();
Пока тз.ПолучитьСтроку() = 1 Цикл
  глПрогресс();
  // ... Обработка строки
КонецЦикла;

Область применения:

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

Описание глПрогрессСоздать():
//-----------------------------------------------------
// Инициация прогресса для заранее известного числа итераций
// Всего            - число элементов в выборке
// ПериодОбновления - число милисекунд после которого обновить сторку состояния
// ОтВремени        - 1 - обновлять от времени, 
//                    0 - обновлять каждые ПериодОбновления значения счетчика
// ВыводитьПрошло   - 1 - выводить сколько времени прошло в виде: Прошло: 00:00:30
// ВыводитьТочность - 1 - выводить первоначальную оценку и ее точность в виде: 
//                        Нач.оценка: 00:01:02 (качество: 95 %)
//
// Все используемые переменные глобальные, для упрощения вызова глПрогресс()
// 
Процедура глПрогрессСоздать(Всего, СтрокаСостояния = "Обработано: ", 
  ПериодОбновления = 100, ОтВремени = 1, ВыводитьПрошло = 0, ВыводитьТочность = 0) 

См. также

1С:Фото номенклатуры 7.7 - решение для работы с фотографиями номенклатуры в 1С:7.7 (включая формат PNG)

Работа с интерфейсом Логистика, склад и ТМЦ Платформа 1С v7.7 1С:Торговля и склад 7.7 Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Решение для разработчика и конечного пользователя для работы с фотографиями номенклатуры: систематизация, хранение, отображение, а также выгрузка на Яндекс-Диск и FTP (кроме версии лайт). Поддерживаются графические форматы: bmp, jpg, gif, tiff, а также png - не поддерживаемый штатными средствами 1С. Выполнено без использования внешних компонент (кроме функции выгрузки на FTP). Поставляется как в виде пустой конфигурации с набором объектов и модулей для работы с фото, так и в виде обновления к 1С:Торговля и склад 7.7. Выполнено в двух версиях: "полная" и "лайт".

5000 руб.

18.10.2022    5162    1    45    

3

WebЦвета для 1с77 FormEx

Инструментарий разработчика Работа с интерфейсом Платформа 1С v7.7 Абонемент ($m)

Обработка с фрагментами кода для программного использования набора цветов из коллекции WebЦвета 1с версии 8+ в 1с версии 77. Требуется предварительное подключение сторонней библиотеки FormEх. Будет полезно программистам 1с 77, 1с 8. Да и вообще при программировании на любом языке при потребности использовать коллекцию цветов WebЦвета.

1 стартмани

30.03.2022    4543    2    igor7777    4    

5

К привязкам элементов форм (1С 7.7, FormEx)

Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Публикация имеет цель обратить внимание на возможность улучшения интерфейса.

15.12.2021    4467    62    Cерый    13    

6

Выбор цвета для 1С 7.7

Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Простая и удобная внешняя обработка для выбора цвета без применения внешних компонент.

1 стартмани

09.06.2020    7025    3    vap_pig    5    

3

Производственный календарь для 1С 7.7

Учет рабочего времени Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Обработка производственного календаря с возможностью импорта и экспорта xls для 1С 7.7 (7.70.027) без изменения конфигурации.

1 стартмани

18.09.2019    12580    6    Jill    8    

3

Альтернативная обработка "Выбор периода"

Работа с интерфейсом Оперативный учет 7.7 1С:Торговля и склад 7.7 Абонемент ($m)

Альтернативная обработка ввода периода для 1С 7.7.

1 стартмани

27.03.2019    6588    3    v.a.n-    11    

2

Несколько табличных частей в 1С:7.7 - это просто

Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

При программировании на платформе V7 достаточно часто возникает задача создать несколько табличных частей документа (или справочника). Традиционно эта задача имеет несколько решений..

1 стартмани

01.05.2018    22421    27    Gkmy    11    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Shaman100M 1150 18.11.07 20:31 Сейчас в теме
Приветствую. Имею свою подобную разработку, http://infostart.ru/profile/8196/projects/1330/ и http://infostart.ru/profile/8196/projects/810/ , поэтому было интересно посмотреть и сравнить:

- глПрогресс() можно ускорить работу, возможно, упростив алгоритм и отказавшись от медленного списка значений: все равно нормальной точности на "нелинейном" цикле в начале расчетов не добиться.
- добавить скриншоты
- думал, что играя с периодом обновления добьюсь лучшей скорости выполнения, - оказалось, на скорость не влияет. :)
- не всегда число итераций известно. Оставить "Обработано: 100 из ..." ?

В целом неплохо. +
tarasenkov; +1 Ответить
2. tarasenkov 340 18.11.07 21:22 Сейчас в теме
- Согласен, не всегда, в таком случае оставляю "Обработано: 100", а из скольки не вывожу :).
- На скорость незначительно влияет лишь выполнение функции _GetPerformanceCounter(), в остальном получается примерно также как и "Если к % 10 = 0 Тогда Состояние(...)".
- Список значений используется опционально, обращение к нему идет только при выводе точности первоначального прогноза, и как показывает профилирование, затраты времени на обращение к нему ничтожно малы (0.02% от выполнения глПрогресс()). На самом деле он используется лишь для того, чтобы после цикла вывести данные о точности прогноза на этапах 10%, 20% и т.д. т.е. с практической точки зрения он совершенно бесполезен, так игрушка.
- По поводу скриншотов, справедливое замечание, и все же изображение не заменит удовольствия лицезреть как знакомая до боли обработка сообщает о том сколько времени она займет.
3. Shaman100M 1150 18.11.07 22:06 Сейчас в теме
" - На скорость незначительно влияет лишь выполнение функции _GetPerformanceCounter(), в остальном получается примерно также как и "Если к % 10 = 0 Тогда Состояние(...). ", - не, не она.
Функция Цел() отъедает половину времени, и выполняется при каждом обращении к глПрогресс()
Код
 ЗначенияОбновления = Цел(...); 
Показать полностью
4. tarasenkov 340 18.11.07 22:26 Сейчас в теме
Функция Цел() почему-то выполняется на 25% быстрее чем % (остаток от деления), вот такая вот оптимизация :)
5. Abadonna 3958 19.11.07 04:50 Сейчас в теме
Лет 5 назад написал прогрессор с оценкой времени, потом пришел к выводу, что все это, цитирую автора
"с практической точки зрения он совершенно бесполезен, так игрушка".
Могу точно сказать, что отъедает много времени - "Если"
6. Shaman100M 1150 19.11.07 08:44 Сейчас в теме
7. Abadonna 3958 19.11.07 09:27 Сейчас в теме
Кстати, poppy меня убедила (после того как я сам проверил):
конструкция В=?(А<Б, 1,0); работает процентов на 30% как минимум быстрее, чем
Если А<Б Тогда
В=1;
Иначе
В=0;
КонецЕсли;
не особо понятно почему, но факт
8. Shaman100M 1150 19.11.07 10:06 Сейчас в теме
(7) меньше букв :) или разработчики методов разные.

У меня получилось 17-18%. Присвоение можно заменить, а вот условие вывода Состояние() - нет, - вывести в функцию с использованием ?() эффекта не дает.
13. Shaman100M 1150 21.11.07 10:42 Сейчас в теме
>Присвоение можно заменить, а вот условие вывода Состояние() - нет, - вывести в функцию с использованием ?() эффекта не дает.

В (8) как раз и имелось ввиду (12) , что команду Состояние() вывести в функцию ( в (12) это Вывести() ) , а функцию использовать внутри конструкции ?()

Работает распрекрасно, но по скорости также как и Если - Тогда - Иначе.
9. CheBurator 3119 19.11.07 19:36 Сейчас в теме
деление нацело - жутко тормозная, конструкция вида
Если ТекИндикатор = ГраницаИндикатор Тогда
Состояние(ТекИндикатор)
ГраницаИндикатор = ГраницаИндикатор + ШагПрогресса
КонецЕсли;
- РАБОТАЕТ НА ПОРЯДОК БЫСТРЕЕ.
если число итераций невелико - это несущественно, если заюзаете ТЗ под лимон записей - набежит весьма прилично
Crush; tarasenkov; +2 Ответить
10. Shaman100M 1150 19.11.07 19:58 Сейчас в теме
11. tarasenkov 340 19.11.07 21:54 Сейчас в теме
Обновил, спасибо Che Burashka за пример!
12. Abadonna 3958 21.11.07 10:18 Сейчас в теме
>Присвоение можно заменить, а вот условие вывода Состояние() - нет, - вывести в функцию с использованием ?() эффекта не дает.
Распрекрасно работает таким образом:
Код
Функция Вывести()
   Сообщить("ОК");
   Возврат 0;
КонецФункции

Процедура Сформировать()      
   Б=2;
        А=?(Б<3,Вывести(),0);
КонецПроцедуры
Показать полностью
14. Abadonna 3958 21.11.07 10:49 Сейчас в теме
Ну это не проверял, спорить не буду...
15. dolce 01.12.07 19:11 Сейчас в теме
думаю в курсаче зачтется как плюс
16. ВосточныйПарень 13.12.07 06:55 Сейчас в теме
Не наглядный индикатор, бухи многие любят чтобы реальный прогрессбар был
Оставьте свое сообщение