Шкала в строке состояния

31.08.15

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

Простая шкала, не требующая дополнительных форм и элементов управления

Шкала прогресса нужна там, где есть массовая обработка данных. Ранее всегда просто выводил в строку статуса номер текущего объекта и количество объектов для обработки. Немного подумав, придумал вот это, просто вставьте процедуру в общий модуль и вызывайте оттуда (код простой, думаю, что разжевывать его не нужно):

Процедура ШкалаВСтрокеСостояния(ТекЗапись, Записей, ПоказыватьПроцент = Истина, ПоказыватьПозицию = Истина, СвойТекстВКонце = "") Экспорт
	Текст = СокрЛП(СвойТекстВКонце);
	Если НЕ Текст = "" Тогда Текст = " " + Текст; КонецЕсли;
	Точки = "....................................................................................................";
	Черточки = "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
	Процент = ТекЗапись/Записей * 100;
	Если ПоказыватьПроцент = Истина Тогда
		ПроцентТекст = Формат(Процент, "ЧДЦ=1; ЧН=0,0");
	Иначе
		ПроцентТекст = "";
	КонецЕсли;
	Если ПоказыватьПозицию = Истина Тогда
		Позиция = Формат(ТекЗапись, "ЧН=0; ЧГ=") + "/" + Формат(Записей, "ЧН=0; ЧГ=");
	Иначе
		Позиция = "";
	КонецЕсли;
	Шкала = Лев(Лев(Черточки, Цел(Процент)) + Точки, 100);
	Если ПоказыватьПозицию И ПоказыватьПроцент Тогда
		Состояние(Шкала + " (" + ПроцентТекст + "% - " + Позиция + ")" + Текст);
	ИначеЕсли ПоказыватьПозицию Тогда
		Состояние(Шкала + " (" + Позиция + ")" + Текст);
	ИначеЕсли ПоказыватьПроцент Тогда
		Состояние(Шкала + " (" + ПроцентТекст + "%)" + Текст);
	Иначе
		Состояние(Шкала + Текст);
	КонецЕсли;
КонецПроцедуры

шкала прогресс прогрессбар

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55457    17    23    

43

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    19740    28    6    

44

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    22003    mrXoxot    44    

128

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    11084    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    17988    1225    elcoan    53    

125

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

3 стартмани

10.04.2023    12678    167    acces969    31    

126

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    7446    kalyaka    6    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. cargobird 308 31.08.15 21:01 Сейчас в теме
(0), еще бы пакетный вывод сюда (по 50, по 500 и т.д.). При большом количестве значений постоянный вывод информации в строку состояния замедляет работу, а так бы в самой процедуре решать, выводить на данном значении строку состояния или нет.
madonov; gubanoff; ogre2007; +3 Ответить
3. Ivon 676 31.08.15 22:51 Сейчас в теме
(1) cargobird, Вообще это можно сделать и вне процедуры, а на процедуру подавать значения, кратные нужным. Хотя код несложный, можно самому доделать.
8. cargobird 308 01.09.15 10:22 Сейчас в теме
(1), Кого пакетный вывод интересует...
Процедура СчетчикВСостояние(Нумератор, Делитель = 500, Всего = 0) Экспорт
	// предназначена для вызова из любого цикла
	// выводит в строку состояния значение Нумератора, если Нумератор нацело делится на Делитель
	// когда задан параметр Всего дополнительно выводится текущий процент выполнения от Всего
	// обязательно! перед циклом задать значение нумератора равное 0 (Нумератор = 0;)
	// Вариант вызова 1: СчетчикВСостояние(Нумератор); - вывод в строке состояния числа с шагом 500
	// Вариант вызова 2: СчетчикВСостояние(Нумератор, 200); - вывод в строке состояния числа с шагом 200
	// Вариант вызова 3: СчетчикВСостояние(Нумератор, 300, ТЗ.Количество()); - вывод в строке состояния числа с шагом 300 и процента от количества строк ТЗ
	#Если Клиент Тогда
	Если Делитель < 0 Тогда
		Возврат;
	КонецЕсли;
	Нумератор = Нумератор + 1;
	Если Цел(Нумератор / Делитель) = Нумератор / Делитель Тогда
		Состояние(Строка(Нумератор) + ?(Всего = 0, "", " (" + Формат((Нумератор / Всего) * 100, "ЧДЦ=2") + "%)"));
	КонецЕсли;
	#КонецЕсли
КонецПроцедуры
Показать
9. Ivon 676 01.09.15 14:53 Сейчас в теме
(8) cargobird,
я бы заменил
Цел(Нумератор / Делитель) = Нумератор / Делитель

на
Нумератор % Делитель = 0

И быстрее и правильнее.
ojiojiowka; cargobird; +2 Ответить
10. cargobird 308 01.09.15 15:26 Сейчас в теме
(9) век живи, век учись, не видел такой конструкции, спасибо)
2. Diversus 2331 31.08.15 22:50 Сейчас в теме
Давно, давно делал обработку пример микрографики в динамическом списке
Советую использовать не восклицательный знак, а как в обработке красивые спецсимволы.
4. Ivon 676 31.08.15 22:53 Сейчас в теме
(2) Diversus, Сама идея пришла спонтанно, изначально не было цели писать что-то в этом роде. Символы подбирал так, чтобы они в итоге сложились в прогресс-бар.
5. Alex_E 2382 31.08.15 23:17 Сейчас в теме
Главное - это для обычного приложения, для управляемого символов придумывать не надо :-)
13jaguar; +1 Ответить
6. rare-avis 732 01.09.15 02:15 Сейчас в теме
Клёво! Очень интересно наблюдать за появлением простых вещей - понимаешь, что она элементарная, и удивляешься - почему раньше до этого ни кто не додумался, в том числе и я. А потом начинается "copy-past"... На счет замедления правильно (и как было сказано, решается кратностью), но идея интересная.
altu71; adhocprog; +2 Ответить
18. denis_aka_wolf 79 03.09.15 05:46 Сейчас в теме
(6) rare-avis, уже не один раз писалось и в различных обработках встречается
21. Yashazz 4804 03.09.15 11:59 Сейчас в теме
(6), (7), вообще это лютый баян. Мы так ещё в ячейках таблиц значений на 7.7 делали имитацию прогресс-баров, вот как (13) пишет. Посему мне не вполне понятны восторги.
22. nSpirit2 03.09.15 13:57 Сейчас в теме
(21) Yashazz, А какже крутая анимация из Доса с меняющимися символами "-" " /" " |" " \" " -" вот это сила прогресбара
25. Ivon 676 10.03.16 14:52 Сейчас в теме
24. RustIG 1836 06.09.15 19:10 Сейчас в теме
(21)
Посему мне не вполне понятны восторги

вполне понятны, если принимать людей такими какие они есть. пришло время, когда новое поколение не знает семерку... я начинал программировать в 2008 году и сразу на 8.1, так что я тоже отношу себя к новому поколению...
cargobird; +1 Ответить
7. Igorro82IT 77 01.09.15 07:32 Сейчас в теме
Все гениальное- ПРОСТО!
Ничего сверхъестественного, но позитивно и информативно. Спасибо за идею, статью и код!
Обязательно буду использовать в личных наработках.
11. nSpirit2 01.09.15 17:22 Сейчас в теме
Я так понимаю это для обычного приложения ?
14. Ivon 676 01.09.15 18:38 Сейчас в теме
(11) nSpirit2, Только для обычного.
16. hillsnake 36 02.09.15 11:10 Сейчас в теме
(14) а кто подскажет, что с управляемым?
стандартную если честно даже включать не хочется ... сразу тормоза..
19. Ivon 676 03.09.15 10:28 Сейчас в теме
(16) ЛеваРоскошный, Это только для толстого клиента. Для управляемых форм нужно придумывать что-то другое.
20. Alex_E 2382 03.09.15 10:46 Сейчас в теме
(19)
Для управляемых форм нужно придумывать что-то другое.
- там синтаксис помощник уже все придумал:
Глобальный контекст (Global context)
Состояние (Status)
Синтаксис:

Состояние(<ТекстСообщения>, <Прогресс>, <Пояснение>, <Картинка>)
- передаем в параметр <Прогресс> кратное 100 значение - получаем градусник в окне состояния...
life-wayfarer; RustIG; +2 Ответить
12. lrs 27 01.09.15 17:40 Сейчас в теме
Вот ссылка на публикацию, на более изящное решение:
http://infostart.ru/public/59581/
15. Ivon 676 01.09.15 18:41 Сейчас в теме
(12) lrs, Ваше решение выводит только индикатор и процент. В моем варианте можно выводить так же и другую информацию.
13. 3.14159 94 01.09.15 18:06 Сейчас в теме
когда-то давным-давно, еще на 1С7.7 глобальную функцию делал... только вместо точек и восклицаний использовал ||||-----------------
17. Tilirxs 03.09.15 00:26 Сейчас в теме
Супер, Спасибо помогло
23. dnikolaev 179 03.09.15 15:57 Сейчас в теме
Оставьте свое сообщение