Простая шкала, не требующая дополнительных форм и элементов управления
Шкала прогресса нужна там, где есть массовая обработка данных. Ранее всегда просто выводил в строку статуса номер текущего объекта и количество объектов для обработки. Немного подумав, придумал вот это, просто вставьте процедуру в общий модуль и вызывайте оттуда (код простой, думаю, что разжевывать его не нужно):
Процедура ШкалаВСтрокеСостояния(ТекЗапись, Записей, ПоказыватьПроцент = Истина, ПоказыватьПозицию = Истина, СвойТекстВКонце = "") Экспорт
Текст = СокрЛП(СвойТекстВКонце);
Если НЕ Текст = "" Тогда Текст = " " + Текст; КонецЕсли;
Точки = "....................................................................................................";
Черточки = "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
Процент = ТекЗапись/Записей * 100;
Если ПоказыватьПроцент = Истина Тогда
ПроцентТекст = Формат(Процент, "ЧДЦ=1; ЧН=0,0");
Иначе
ПроцентТекст = "";
КонецЕсли;
Если ПоказыватьПозицию = Истина Тогда
Позиция = Формат(ТекЗапись, "ЧН=0; ЧГ=") + "/" + Формат(Записей, "ЧН=0; ЧГ=");
Иначе
Позиция = "";
КонецЕсли;
Шкала = Лев(Лев(Черточки, Цел(Процент)) + Точки, 100);
Если ПоказыватьПозицию И ПоказыватьПроцент Тогда
Состояние(Шкала + " (" + ПроцентТекст + "% - " + Позиция + ")" + Текст);
ИначеЕсли ПоказыватьПозицию Тогда
Состояние(Шкала + " (" + Позиция + ")" + Текст);
ИначеЕсли ПоказыватьПроцент Тогда
Состояние(Шкала + " (" + ПроцентТекст + "%)" + Текст);
Иначе
Состояние(Шкала + Текст);
КонецЕсли;
КонецПроцедуры
(0), еще бы пакетный вывод сюда (по 50, по 500 и т.д.). При большом количестве значений постоянный вывод информации в строку состояния замедляет работу, а так бы в самой процедуре решать, выводить на данном значении строку состояния или нет.
Давно, давно делал обработку примермикрографики в динамическом списке
Советую использовать не восклицательный знак, а как в обработке красивые спецсимволы.
(1) cargobird, Вообще это можно сделать и вне процедуры, а на процедуру подавать значения, кратные нужным. Хотя код несложный, можно самому доделать.
(2) Diversus, Сама идея пришла спонтанно, изначально не было цели писать что-то в этом роде. Символы подбирал так, чтобы они в итоге сложились в прогресс-бар.
Главное — это для обычного приложения, для управляемого символов придумывать не надо 🙂
Клёво! Очень интересно наблюдать за появлением простых вещей — понимаешь, что она элементарная, и удивляешься — почему раньше до этого ни кто не додумался, в том числе и я. А потом начинается «copy-past»… На счет замедления правильно (и как было сказано, решается кратностью), но идея интересная.
Все гениальное- ПРОСТО!
Ничего сверхъестественного, но позитивно и информативно. Спасибо за идею, статью и код!
Обязательно буду использовать в личных наработках.
(1), Кого пакетный вывод интересует…
Показать
(8) cargobird,
я бы заменил
на
И быстрее и правильнее.
(9) век живи, век учись, не видел такой конструкции, спасибо)
Я так понимаю это для обычного приложения ?
Вот ссылка на публикацию, на более изящное решение:
http://infostart.ru/public/59581/
когда-то давным-давно, еще на 1С7.7 глобальную функцию делал… только вместо точек и восклицаний использовал ||||——————
(11) nSpirit2, Только для обычного.
(12) lrs, Ваше решение выводит только индикатор и процент. В моем варианте можно выводить так же и другую информацию.
(14) а кто подскажет, что с управляемым?
стандартную если честно даже включать не хочется … сразу тормоза..
Супер, Спасибо помогло
(6) rare-avis, уже не один раз писалось и в различных обработках встречается
(16) ЛеваРоскошный, Это только для толстого клиента. Для управляемых форм нужно придумывать что-то другое.
(19)
— там синтаксис помощник уже все придумал:
Состояние (Status)
Синтаксис:
Состояние(<ТекстСообщения>, <Прогресс>, <Пояснение>, <Картинка>)
— передаем в параметр <Прогресс> кратное 100 значение — получаем градусник в окне состояния…
(6), (7), вообще это лютый баян. Мы так ещё в ячейках таблиц значений на 7.7 делали имитацию прогресс-баров, вот как (13) пишет. Посему мне не вполне понятны восторги.
(21) Yashazz, А какже крутая анимация из Доса с меняющимися символами «-» » /» » |» » » » -» вот это сила прогресбара
красавчик
(21)
вполне понятны, если принимать людей такими какие они есть. пришло время, когда новое поколение не знает семерку… я начинал программировать в 2008 году и сразу на 8.1, так что я тоже отношу себя к новому поколению…
(22) nSpirit2,
Добавлю в код.