Прогресс-бар в поле динамического списка

27.05.24

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

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

Нашла похожую статью, и там интересный вариант с использованием символа "|"

Он очень компактный, так что можно вывести детализацию до 1% (сто символов "|" подряд) довольно короткой "полоской".

Но всё портит то, что нет отображения оставшегося до 100% объёма, и прогресс из-за этого визуально не очень показателен.

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

 

Однако, в Arial существуют и другие интересные символы:

ВЫБРАТЬ
	ВЫРАЗИТЬ(ПОДСТРОКА("U+2588", 1, ВЫРАЗИТЬ(ПолеПроцент/4-0.5 КАК Число (3))) КАК СТРОКА(25)) +
	ВЫРАЗИТЬ(ПОДСТРОКА("U+2591", 1, 25-ВЫРАЗИТЬ(ПолеПроцент/4-0.5 КАК Число (3))) КАК СТРОКА(25)) КАК ПолеПроцентГраф
ИЗ (ВЫБРАТЬ 27 КАК ПолеПроцент) Т

К сожалению, Infostart (в отличие от 1С) не позволяет корректно отобразить символы, вместо "U+2588" вставьте 25 символов "U+2588 Full Block" (скопируйте из таблицы символов)
Соответственно вместо "U+2591" вставьте 25 символов "U+2591 Light Shade"

Символы довольно широкие, и чтобы сократить длину поля, я уменьшила его в 4 раза.
Если вас не напрягает точность отображения в 4%, то этот вариант для вас!

Так же, деля процент не на 4, а например на 8, вы можете ещё уменьшить (или наоборот, увеличить) размер поля, с потерей точности отображения (или увеличения), конечно.

 

 

На скриншоте-примере показаны 2 поля, каждое из которых - группа полей из ПолеПроцентГраф и ПолеПроцент, вида "в ячейке", чтобы показать заодно и числовое значение процента.

См. также

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63109    44    59    

82

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

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

2400 руб.

29.06.2020    18974    26    6    

41

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

1500 руб.

06.10.2020    10332    7    7    

10

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

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

20.08.2024    17719    mrXoxot    43    

121

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

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

27.12.2023    15274    973    elcoan    49    

117

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

10.04.2023    12029    163    acces969    31    

124

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

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

1 стартмани

05.07.2022    6079    kalyaka    6    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. insurgut 208 27.05.24 17:46 Сейчас в теме
▉▉▉▉▒▒▒▒░░░░▉▉▉▉▉▐▐▐▐▐
starik-2005; SerVer1C; +2 Ответить
3. insurgut 208 27.05.24 18:19 Сейчас в теме
(1) интересно получается :) Есть в этом что-то аналоговое.
Прикрепленные файлы:
ПроверкаПрогрессБара.epf
dimanich70; +1 Ответить
5. Raideres 8 27.05.24 22:19 Сейчас в теме
6. Неопределено 91 28.05.24 07:28 Сейчас в теме
(5) Да.
Прикрепленные файлы:
PUBID_856605-Часы.epf
PlatonStepan; user1316759; +2 Ответить
8. PlatonStepan 38 28.05.24 10:48 Сейчас в теме
(6) Что вы там прячете в модуле обработки, мистер Брукс? :)

И что за жуткие преобразования из строки в число, если можно:

ТекДата = ТекущаяДата();
ТекущийЧас = Час(ТекДата);
ТекущаяМинута = Минута(ТекДата);
ТекущаяСекунда = Секунда(ТекДата);

УголЧасовой = ТекущийЧас * 30 + ТекущаяМинута / 2;
УголМинутной = ТекущаяМинута * 6;
УголСекундной = ТекущаяСекунда * 6;
9. SerVer1C 816 28.05.24 11:03 Сейчас в теме
(8)
Что вы там прячете в модуле обработки

Там только пустой метод
Процедура Игра(Форма) Экспорт

КонецПроцедуры
17. Неопределено 91 29.05.24 03:17 Сейчас в теме
(9) Рудимент, оставшийся от змейки, из которой была переделана обработка.
16. Неопределено 91 29.05.24 03:16 Сейчас в теме
(8) Это обработка из старой публикации. Она была написана с целью представить исключительно геометрический интерес.
7. smielka 246 28.05.24 10:16 Сейчас в теме
(1) В комментариях выводится, а в статье замена стоит, не получилось поместить.
2. SerVer1C 816 27.05.24 18:19 Сейчас в теме
𐰣𐰯 ,𐰹𐰫𐰝𐰻𐰙𐰊!
tpkpsd; Ingraf; Teplotrassamen; +3 Ответить
4. iolko 321 27.05.24 19:01 Сейчас в теме
Можно пример в обработке .. или я туплю или одно из 2х
10. PlatonStepan 38 28.05.24 11:10 Сейчас в теме
Вот:

ВЫБРАТЬ
	ВЫРАЗИТЬ(ПОДСТРОКА("█████████████████████████", 1, ВЫРАЗИТЬ(ПолеПроцент/4-0.5 КАК Число (3))) КАК СТРОКА(25)) +
	ВЫРАЗИТЬ(ПОДСТРОКА("░░░░░░░░░░░░░░░░░░░░░░░░░", 1, 25-ВЫРАЗИТЬ(ПолеПроцент/4-0.5 КАК Число (3))) КАК СТРОКА(25)) КАК ПолеПроцентГраф
ИЗ (ВЫБРАТЬ 27 КАК ПолеПроцент) Т


Кстати, получить строку повторений строки любой длины :
Фрагмент = "!";
Длина = 5;
Строка = СтрЗаменить(Формат(0, СтрШаблон("ЧЦ=%1; ЧН=; ЧВН=; ЧГ=", XMLСтрока(Длина))), "0", Фрагмент);
12. user1880116 28.05.24 12:21 Сейчас в теме
(10)
Строка = СтрЗаменить(Формат(0, СтрШаблон("ЧЦ=%1; ЧН=; ЧВН=; ЧГ=", XMLСтрока(Длина))), "0", Фрагмент);
Вывих мозга какой-то.

Строка = СтрСоединить(Новый Массив(Длина + 1), Фрагмент);
EvgeTrofi; klaus38; JohnyDeath; triviumfan; obmailok; SerVer1C; starik-2005; +7 Ответить
14. PlatonStepan 38 28.05.24 15:04 Сейчас в теме
15. starik-2005 3090 28.05.24 17:06 Сейчас в теме
(12)
Вывих
Надо статью собрать с такими фрагментами кода - зайдет на ура!
18. PlatonStepan 38 29.05.24 08:39 Сейчас в теме
(15)
да ладно язвить, после
s = 'a' * 100

весь 1С - сплошной вывих )
11. dogma90 28.05.24 11:47 Сейчас в теме
На бейсике так окна рисовал в 90-х спецсимволами :) Ну и прогресс бары тоже...
13. acces969 362 28.05.24 14:39 Сейчас в теме
Это гениально! Спасибо, возьму на вооружение.
19. obmailok 190 30.05.24 09:40 Сейчас в теме
ВЫБРАТЬ
	(ВЫРАЗИТЬ(ПОДСТРОКА(&Бар, 1, ВЫРАЗИТЬ(Т.ПолеПроцент / 2 - 0.5 КАК ЧИСЛО(3, 0))) КАК СТРОКА(50))) + (ВЫРАЗИТЬ(ПОДСТРОКА("ˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈ", 1, 25 - (ВЫРАЗИТЬ(Т.ПолеПроцент / 4 - 0.5 КАК ЧИСЛО(3, 0)))) КАК СТРОКА(25))) КАК Поле1,
	(ВЫРАЗИТЬ(ПОДСТРОКА(&Бар, 1, ВЫРАЗИТЬ(Т.ПолеПроцент * 2 КАК ЧИСЛО(3, 0))) КАК СТРОКА(200))) + (ВЫРАЗИТЬ(ПОДСТРОКА("ˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈˈ", 1, 100 - (ВЫРАЗИТЬ(Т.ПолеПроцент КАК ЧИСЛО(3, 0)))) КАК СТРОКА(100))) КАК Поле2,
	(ВЫРАЗИТЬ(ПОДСТРОКА("█████████████████████████", 1, ВЫРАЗИТЬ(Т.ПолеПроцент / 4 - 0.5 КАК ЧИСЛО(3, 0))) КАК СТРОКА(25))) + (ВЫРАЗИТЬ(ПОДСТРОКА("░░░░░░░░░░░░░░░░░░░░░░░░░", 1, 25 - (ВЫРАЗИТЬ(Т.ПолеПроцент / 4 - 0.5 КАК ЧИСЛО(3, 0)))) КАК СТРОКА(25))) КАК ПолеПроцентГраф,
	Т.ПолеПроцент КАК ПолеПроцент
ИЗ
	(ВЫБРАТЬ
		27 КАК ПолеПроцент

	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		100
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		95
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		1
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		75
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		9
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		55) КАК Т
Показать


Бар = (2 * сто символов "|" подряд) => с точностью до процента, но можно масштабировать.
Использовал Символ(712) и Символ(124) в отношении 2 к 1
20. bulpi 217 31.05.24 08:13 Сейчас в теме
А почему это нужно делать именно запросом?
21. JohnyDeath 302 31.05.24 10:05 Сейчас в теме
(20) наверное чтобы сразу выводит в дин списке без подключения обработчика ПриПолученииДанных
22. SlavaKron 31.05.24 11:24 Сейчас в теме
(21) Учитывая, что по такому полю не нужны никакие отборы, то реализовывать это в запросе — бессмысленная трата ресурсов СУБД.
23. JohnyDeath 302 31.05.24 11:28 Сейчас в теме
(22) вы серьезно думаете, что такое поле запроса хоть как-то значимо нагружает СУБД ))
Как вы бы выводили прогресс-бар в колонке Динамического списка? Через обработчик "ПриПолученииДанных"?
24. SlavaKron 31.05.24 11:30 Сейчас в теме
(23) Думаю, что нагружает. Вопрос значимости спорный. Нужно делать лучше, если можно сделать лучше.
Разумеется, через ПриПолученииДанных.
25. JohnyDeath 302 31.05.24 11:32 Сейчас в теме
(24) я вот не считаю, что ПриПолученииДанных - это лучше.
И это точно БОЛЬШЕ нагрузить сервер, чем поле в запросе.
26. SlavaKron 31.05.24 11:37 Сейчас в теме
(25) Не готов переубеждать. Останемся каждый при своём мнении.
27. JohnyDeath 302 31.05.24 11:40 Сейчас в теме
(26) не готов переубеждать наверное потому что аргументов нет.
Я просто даже не представляю откуда могла возникнуть мысль, что поле запроса
ВЫРАЗИТЬ(ПОДСТРОКА("█████████████████████████", 1, ВЫРАЗИТЬ(ПолеПроцент/4-0.5 КАК Число (3))) КАК СТРОКА(25)) 
хоть как-то нагружает СУБД. С радостью посмотрю на замеры запроса с этим полем и без него. Ес-но на более-менее реальных запросах, которые используются в динамических списках
28. SlavaKron 31.05.24 11:45 Сейчас в теме
(27)
Ес-но на более-менее реальных запросах, которые используются в динамических списках
К чему это условие? Как раз реальные запросы "загрязнят" результаты замеров. Единственный значимый аргумент в данном споре – реальные замеры. А убежденность имею исходя из личной практики.
29. JohnyDeath 302 31.05.24 11:50 Сейчас в теме
(28) а ты думаешь, что это поле выводить будут в запросе, состоящим только из этого поля?
Но хорошо, давай пример замеров на любых запросах
30. SlavaKron 31.05.24 11:51 Сейчас в теме
(29)
давай пример замеров на любых запросах
Давай.
31. JohnyDeath 302 31.05.24 11:52 Сейчас в теме
(30) так это вроде бы ты сказал, что такое поле будет нагружать СУБД, а не я
32. SlavaKron 31.05.24 11:54 Сейчас в теме
(31) так это вроде бы ты сказал, что такое поле не будет нагружать СУБД, а не я =)
Вообще-то я сразу сказал. что не готов переубеждать.
33. JohnyDeath 302 31.05.24 11:57 Сейчас в теме
(32) ок, я сделал замеры. С этим полем и без него запрос отработал меньше одной миллисекунды.
Ваш выход!
34. gLebusD 03.06.24 06:42 Сейчас в теме
35. obmailok 190 03.06.24 14:36 Сейчас в теме
36. madonov 259 04.06.24 16:05 Сейчас в теме
(34)
||||||||||
!!!!!!!!!!
в обоих рядах по 10шт.

ps. ИС искажает, но в Arial они тоже не равны
37. Serg2000mr 691 06.06.24 06:15 Сейчас в теме
Я бы не размещал символы псевдографики в коде. Например в Соглашения при написании кода: В текстах модулей не допускается использовать букву "ё".

Лучше в параметр запроса передать
СимволПсевдографики = Символ(9608);
СтрокаПсевдографики = СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов(СимволПсевдографики , ДлинаСтроки);
Запрос.УстановитьЗначениеПараметра("СтрокаПсевдографики", СтрокаПсевдографики);


И было бы здорово, если бы привели скриншот, как это смотрится в контексте динамического списка.
Оставьте свое сообщение