Микрографики в табличной части

23.01.11

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

Пример использования микрографиков в табличной части

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Микрографики.epf
.epf 8,31Kb
497
497 Скачать (1 SM) Купить за 1 850 руб.

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

     Графическое представление находится ближе некуда, пользователь намного быстрее ощущает порядок цифр. Развивать идею каждый может относительно конкретной ситуации. Буду Smile, если кому - то пригодится.

См. также

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

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

5000 руб.

14.01.2016    55436    17    23    

43

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

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

6000 руб.

16.01.2015    63824    44    59    

82

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

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

2400 руб.

29.06.2020    19716    28    6    

44

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

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

20.08.2024    21821    mrXoxot    44    

128

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

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

27.05.2024    10932    smielka    37    

105

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

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

27.12.2023    17954    1225    elcoan    53    

125

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

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

3 стартмани

10.04.2023    12654    167    acces969    31    

126
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ish_2 1114 24.01.11 09:36 Сейчас в теме
Техника исполнения оставляет желать лучшего.
При каждом выводе строки мы имеем вычисления в цикле (набираем нужную длину полоски)
Для к = 1 по (Процент*Масштаб) Цикл 	ПроцентГраф = ПроцентГраф + "|";	КонецЦикла;


Можно обойтись без цикла, Например
Перем Заготовка;
........
Процедура ПриВыводеСтроки(....)
.....
ПроцентГраф= Лев(Заготовка,Процент*Масштаб);
КонецПроцедуры

Заготовка = "|||||||||||||||||||||||||||||||||||";

ybatiaev; DenSA; Istur; V_V_V; RustIG; +5 Ответить
6. an77 225 24.01.11 13:11 Сейчас в теме
(1) Согласен, техника хромает, учтем. Просто хотелось показать именно идею.
(4) www.planetaexcel.ru - отличный сайт, много интересного было почерпнуто, но микрографики использовал в excel еще до знакомства с данным ресурсом.
(5) Вариантов масса: и условное форматирование и отображение многомерных данных (допустим группы символов через пробел), вывод различных символов, разного шрифта и размера и т.д. Творческая работа.
ybatiaev; +1 Ответить
9. DrAku1a 1749 25.01.11 08:49 Сейчас в теме
(1) А если в твоей строке "Заготовка" не хватит символов - если их будет меньше, чем "Процент*Масштаб"? Вариант с циклом может и медленнее, зато надежен.
10. Ish_2 1114 25.01.11 09:51 Сейчас в теме
13. cool.vlad4 2 25.01.11 10:38 Сейчас в теме
(10) Не поленился я проверить, в общем каждый из наших способов имеет недостатки (про ваш сказал (9), а мой лучше только при маленьких строках), но если их объединить, то примерно в 1.5 раза лучше циклов -
надо моим способом сформировать заготовку

Перем Заготовка;
........
Процедура ПриВыводеСтроки(....)
.....
ПроцентГраф= Лев(Заготовка,Процент*Масштаб);
КонецПроцедуры

Заготовка = СтрЗаменить(Формат(0,"ЧЦ="+СколькоНадоЧерточек+";ЧН=; ЧВН=; ЧГ=0"),"0","|");
По всей видимости СколькоНадоЧерточек=Процент*Масштаб, где Процент=100%
ЗЫ СтрЗаменить(Формат(0,"ЧЦ="+СколькоНадоЧерточек+";ЧН=; ЧВН=; ЧГ=0"),"0","|") больше 127 не делает
14. cool.vlad4 2 25.01.11 11:23 Сейчас в теме
бухгалтер меня на мысль навел(очередными своими дурацкими числами) - можно умножать например 10 на любое число, затем СтрЗаменить (отсекаем 1, и заменяем нули)- это к вопросу (13) как формировать заранее заготовку нужной длины.
ЗЫ Люблю я поизвращатся.
11. cool.vlad4 2 25.01.11 09:56 Сейчас в теме
(9) Можно заготовку и заранее формировать в зависимости от Процент*Масштаб, все ж лучше чем для каждой строки в отдельности считать. Я плюсовал, действительно - оригинально, но я такой штукой все же пользоватся не буду - не нравится мне эти заморочки со строками привыводе строки, а тем более если пользователь начнет что-то менять - должно же пересчитыватся...для быстрой работы это явно не тянет... можно передавать число скриптовому движку, чтобы тот делал операцию побитого сдвига, а затем 1С делал СтрЗаменить, либо в 1С как-то формировать число, где в разрядах одно и тоже число, затем стрзаменить - но это так в порядке моего общего бреда, - в 1С очень медленно происходит сложение строк,через msscript быстрее наверное...
15. alexk-is 6544 25.01.11 11:27 Сейчас в теме
(1) (13) Вариант 1 самый быстрый, только Заготовка нужно собрать как в http://infostart.ru/public/71130/

// Получаем строку черточек длиной 10000 символов
Заготовка = СтрЗаменить(Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ="), "0",
СтрЗаменить(Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ="), "0", "|"));

Так как СтрЗаменить(Формат(0,"ЧЦ="+СколькоНадоЧерточек+";ЧН=; ЧВН=; ЧГ=0"),"0","|"); при СколькоНадоЧерточек больше 127 выдаст только 127 черточек
16. cool.vlad4 2 25.01.11 11:29 Сейчас в теме
(15) Согласен, как же близко я был от ответа :D
ЗЫ Про быстроту (1) я и сказал, но это условность - потому, что по хорошему формирование заготовки тоже надо брать в расчет.
18. cool.vlad4 2 25.01.11 11:35 Сейчас в теме
(15) А кстати при меньше 127 эта конструкция Заготовка = СтрЗаменить(Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ="), "0",
СтрЗаменить(Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ="), "0", "|")); действительно быстрее?
19. alexk-is 6544 25.01.11 11:37 Сейчас в теме
(18) Быстрее ПроцентГраф= Лев(Заготовка,Процент*Масштаб);
20. cool.vlad4 2 25.01.11 11:38 Сейчас в теме
(19) Вы помоему совершенно не читаете, что я пишу - посмотрите (13) - я не отрицаю, что Лев надо использовать - я спрашиваю, быстрее ли формирование заготовки при строках меньше 127 вашим способом.
22. alexk-is 6544 25.01.11 11:51 Сейчас в теме
(20) Нет, не быстрее, т.к. строка получается длиннее. Но ведь Заготовка формируется всего 1 раз, поэтому это не принципиально. 15 миллисекунд лишь незначительно скажутся на производительности при создании формы.

(21) Как-то так

Процедура ПриПолученииДанных()
...
ПроцентГраф = Лев(Заготовка, Процент*Масштаб);
// где Процент*Масштаб, например, 63
...
КонецПроцедуры

Заготовка = СтрЗаменить(Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ="), "0", СтрЗаменить(Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ="), "0", "|"));
25. cool.vlad4 2 25.01.11 11:54 Сейчас в теме
(22) Вы читаете вообще что я написал? (13) посмотрите
Перем Заготовка;
........
Процедура ПриВыводеСтроки(....)
.....
ПроцентГраф= Лев(Заготовка,Процент*Масштаб);
КонецПроцедуры

Заготовка = СтрЗаменить(Формат(0,"ЧЦ="+СколькоНадоЧерточек+";ЧН=; ЧВН=; ЧГ=0"),"0","|");


Я спрашиваю сейчас как быстро можно эту заготовку сформировать. Лев я не отрицаю.
При меньших 127 - ваш способ не уверен, что оптимален - два раза СтрЗаменить и округление могут испортить малину.
27. alexk-is 6544 25.01.11 12:00 Сейчас в теме
(25)
Заготовка = Лев(СтрЗаменить(Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ="), "0", СтрЗаменить(Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ="), "0", "|")), 1111);
28. cool.vlad4 2 25.01.11 12:03 Сейчас в теме
(27) Пардон, это самый быстрый способ?
31. alexk-is 6544 25.01.11 12:12 Сейчас в теме
(28) Придумаешь быстрее обязательно позвони мне. :)
32. cool.vlad4 2 25.01.11 12:14 Сейчас в теме
(31) Это несерьезно :) ...а ведь мне лень замеры делать, но придется... :)
40. DrAku1a 1749 26.01.11 02:39 Сейчас в теме
(22) Верная мысль.

Но ведь Заготовка формируется всего 1 раз, поэтому это не принципиально. 15 миллисекунд лишь незначительно скажутся на производительности при создании формы.

Да делайте вы ее хоть самым медленным циклом - это не принципиально. Это делается один раз и ДО показа формы. Скорость прорисовки формы при этом не уменьшится.
Кроме того, давайте не будем жертвовать читабельностью кода - ведь разбираться, что делает участок из 10 строк кода, с вызовом функции VBScript гораздо тяжелей, чем
СтоНолей = Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ=");
Заготовка = СтрЗаменить(СтоНолей, "0", СтрЗаменить(СтоНолей, "0", "|")); // 10 000 черточек

Но вот вопрос - а сколько нужно, чтобы точно хватило?
СтоНолей = Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ=");
Заготовка = СтрЗаменить(СтоНолей, "0", СтрЗаменить(СтоНолей, "0", СтрЗаменить(СтоНолей, "0", "|"))); // 1 000 000 черточек
42. cool.vlad4 2 26.01.11 10:05 Сейчас в теме
(40)(41) Да, это я так для затравки - думаете я сидел и озадачивался проблемой как это сделать быстрее всего - быстрее всего будет работать хорошо и специально написанная для этого функция на ассемблере, а для 1С хорошо, то что в 1С
(41) ничего вы не поняли - если у вас без ВК или без помощи других языков (на чистом 1С)получится сделать в 1С ASCII art, то в этот раз звоните вы мне(тобишь перевод из картинки в ASCII символы)
43. cool.vlad4 2 26.01.11 10:11 Сейчас в теме
(40) И если уж вы такие точные - то эта верная мысль прозвучала сначала в (1), а потом в (11)-(13), а VBScript я привел для разнообразия. Как если бы я привел powershell или f# скрипты - это была бы скорее экзотика, чем руководство к действию
21. cool.vlad4 2 25.01.11 11:46 Сейчас в теме
(19) И непонятно как формировать нечетные - к примеру мне нужно 63 черточек, как это сделать только с помощью такой конструкции СтрЗаменить(Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ="), "0",
СтрЗаменить(Формат(0, "ЧЦ=100; ЧН=; ЧВН=; ЧГ="), "0", "|"));
Точнее как формировать простые числа - 17 например, 11? Нечетные формируются произведением, если они не простые конечно.
23. CheBurator 2695 25.01.11 11:52 Сейчас в теме
24. cool.vlad4 2 25.01.11 11:53 Сейчас в теме
(23) Я это предвидел, потому и съехидничал
как это сделать только с помощью такой конструкции
17. Арчибальд 2709 25.01.11 11:33 Сейчас в теме
За идею плюс. Для семерки здесь http://infostart.ru/public/80691/. Но с циклом, что бы там в (1) ни злопыхали.
2. cool.vlad4 2 24.01.11 09:39 Сейчас в теме
Пожалуй в идее, что есть, за нее и плюс, а вот реализация по всей видимости действительно не очень.
3. madmpro 43 24.01.11 09:46 Сейчас в теме
4. RustIG 1836 24.01.11 10:41 Сейчас в теме
+ за идею!

очень похоже на:
http://www.planetaexcel.ru/tip.php?aid=71

но все равно за идею плюс! :)
5. hasp_x 156 24.01.11 11:30 Сейчас в теме
(0) можно индикатор подцветить вторым цветом после достижения, допустим, 100%
7. WKBAPKA 215 24.01.11 22:54 Сейчас в теме
+ за идею.. .вот за что люблю жизнь, это за то, что все лежит на поверхности, нужно только обратить свое внимание!
8. CheBurator 2695 24.01.11 23:02 Сейчас в теме
Сумму оплаты в отдельный столбец не выводит, отображать прямо на фоне индикатора оплаты, слева от процента.
12. cool.vlad4 2 25.01.11 10:14 Сейчас в теме
(0) (9) (10) А так интересно быстрее СтрЗаменить(Формат(0,"ЧЦ="+СколькоНадоЧерточек+";ЧН=; ЧВН=; ЧГ=0"),"0","|");?
26. cool.vlad4 2 25.01.11 11:59 Сейчас в теме
Наверное меня плохо поняли - я уже написал меня это не интересует, как сформировать строку и округлить я догадаюсь. Ради спортивного интереса, хочется узнать в данном случае самый быстрый и самый универсальный способ формирования Заготовки заранее. То, что ее надо заранее формировать заданной длины в зависимости от масштаба- вообще-то я первый подметил.
29. alexk-is 6544 25.01.11 12:03 Сейчас в теме
(26) Исходная длина строки не так принципиальна. Может быть любой, лишь бы не короче максимальной. В дальнейшем в Лев() передается ссылка, а 10 Кб RAM найдется.
30. cool.vlad4 2 25.01.11 12:09 Сейчас в теме
(29) Надо проверить - что это действительно быстро, а то может оказатся что и нет, тогда это будет похоже на индусский код ;) и во-вторых надо знать заранее, что в Лев(СтрЗаменить(Формат(0, "ЧЦ=A; ЧН=; ЧВН=; ЧГ="), "0", СтрЗаменить(Формат(0, "ЧЦ=B; ЧН=; ЧВН=; ЧГ="), "0", "|")), 1111); - произведение A*B больше 1111, их несложно подобрать, но как раз это тоже минус быстроте и универсальности.
33. Trise 139 25.01.11 17:26 Сейчас в теме
Заготовка = "||||||||||||||||||||||||||||||||||||||||||||||||..."; (100 в уме (=максимальный процент), при маштабе в 1)

//Больше чем 127*100 никто из бухгалтеров мне кажется точно смотреть не будет
Заготовка = СтрЗаменить(Заготовка,"|",Формат(0, "ЧЦ="+Маштаб+"; ЧН=; ЧВН=; ЧГ="));

//ИЛИ
НеобходимаяДлина = Маштаб*100;
Пока СтрДлина(Заготовка)<=Маштаб Цикл
Заготовка = СтрЗаменить(Заготовка,"|",Заготовка);
//После первой итерации у нас 100*100, после второй 10000*10000, тут уже по глаза хватит, правда зачем столько.
КонецЦикла;

//Даже как-то так бы написать, только времени нет:

ЗаготовкаМаштаб = "||||||||||||||||||||||||||||||||||||||||||||||||..."; (100 в уме, тут надо определиться с максимальным маштабом, или создать по какому-то из ранее придуманных алгоритмов)
Заготовка = СтрЗаменить(Заготовка,"|",Лев(ЗаготовкаМаштаб,Маштаб));

//Но в общем вариант alexk-is мне кажется самый быстрый, по крайней мере с наибольшим коэффициентом, у него возведение в кдадрат
35. alexk-is 6544 25.01.11 20:49 Сейчас в теме
(33)
Заготовка = СтрЗаменить(Заготовка,"|",Формат(0, "ЧЦ="+Маштаб+"; ЧН=; ЧВН=; ЧГ="));
Попробуйте при масштабе 0.8. Что будет в результате? 80 палочек? Нет, 100 ноликов.

НеобходимаяДлина = Маштаб*100;
Пока СтрДлина(Заготовка)<=Маштаб Цикл
Заготовка = СтрЗаменить(Заготовка,"|",Заготовка);
//После первой итерации у нас 100*100, после второй 10000*10000, тут уже по глаза хватит, правда зачем столько.
КонецЦикла;

Попробуйте при маштабе 0.8. Что будет в результате? Правильно 100 палочек. А при масштабе 99? Опять 100 палочек.

Вот третий вариант вполне рабочий. Его можно упростить и записать одной командой, вместо 3.
Заготовка = СтрЗаменить("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||", "|", Лев("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||", Масштаб));
Ну, что тут сказать. Кому как нравится, тот так и записывает. В данном случае строка формируется всвего 1 раз и выжимать здесь что-то не имеет особого смысла.
36. cool.vlad4 2 26.01.11 00:00 Сейчас в теме
(35) :D Меня все таки удивиляет, почему в 1С отсутствует такая простая функция как конструктор строки, которая есть во многих языках, в Delphi я бы использовал функцию StringOfChar, а в C# вообще строка объектный тип string str = new string ("|",5) , для VBScript есть string (кстати ее можно использовать )-
в vbscript -
TextScript="
|Function Run
| run = String(""" + Count + """, ""|"")
|End Function
|";

ScrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language = "vbscript";
ScrptCtrl.AddCode(TextScript);
Сообщить( ScrptCtrl.Run("Run"));
еще можно сформировать строку извне, а потом передать указатель 1С, потому что ВК делать ради такой фигни не имеет смысла. Естественно для таких случаев есть dynwrapx.dll, и тут я узнал, что у нее уже есть функция
Space( Count [, Char] ) - создание строки (BSTR) заданной длины. Возвращает строковую переменную. Count - число символов (двухбайтных). Char - необязательный параметр: символ, которым будет заполнена строка. По умолчанию строка заполняется пробелами - так же, как это делает функция Space в VBScript. Чтобы заполнить строку двоичными нулями, нужно задать Char как пустую строку ("").

wrap = Новый COMОбъект("DynamicWrapperX");
str = wrap.Space( Count, "|");
Сообщить(str);
А Затем можно и Лев( делать
PS не принимайте сильно всерьез - просто пытался врапером некоторые api функции вызывать и тут заметил функ. space, на которую раньше внимания не обращал.
34. Pashkaa 16 25.01.11 20:12 Сейчас в теме
37. cool.vlad4 2 26.01.11 00:15 Сейчас в теме
ЗЫ Насчет быстроты это я так...никто ж не измерял...
38. cool.vlad4 2 26.01.11 00:22 Сейчас в теме
по скорости com все таки проигрывает...
39. cool.vlad4 2 26.01.11 01:07 Сейчас в теме
Наврал это я все...скорость нормальная...конечно, через весь батальон средств 1С - формат,стрзаменить,лев - быстрее, но зато так мы формируем строку заданной длины(до ограничения по типу BSTR), и это заставило меня пустится во все тяжкие - эти стройные ряды черточек, напомнили мне чем-то фракталы, теперь надо в 1С это сделать...через Сообщить, так интереснее, а еще ASCII art...надо ВК сделать что ли...
41. alexk-is 6544 26.01.11 06:31 Сейчас в теме
(39) Теперь нужно всё загнать в ВК?
1С как интерпретатор всегда будет проигрывать компилятору. Вывод: хочешь чтобы работало, ну, очень быстро - не используй 1С вообще, пиши сразу на ассемблере для своего процессора.
44. cool.vlad4 2 26.01.11 10:16 Сейчас в теме
Конечно текст в 1С сделать особого труда не составит
45. AskhabovMA 06.12.11 11:00 Сейчас в теме
Просто и со вкусом. Автор молодец
46. mikhailv 20 22.12.11 12:05 Сейчас в теме
Классная идея! Мне очень понравилась. Автору респект!

Прикрутил к УТ 10, в табличных частях теперь показывается так сумма и отклонение от плановой.
Сразу видно визуально, что занимает по сумме и по марже "львиную" долю в документе.
47. ms200999 25.01.12 08:38 Сейчас в теме
Познавательно, спасибо.
Оставьте свое сообщение