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

23.01.11

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

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

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

Наименование Файл Версия Размер
Микрографики.epf
.epf 8,31Kb
497
.epf 8,31Kb 497 Скачать

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

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

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

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

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

6000 руб.

16.01.2015    61793    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

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

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

5000 руб.

14.01.2016    54399    16    21    

42

Управление дашбордами

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

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

2400 руб.

29.06.2020    16695    21    4    

35

Новогоднее оформление для 1С

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

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

27.12.2023    10734    750    elcoan    45    

106

Конструктор HTML, CSS и javascript

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

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

2 стартмани

10.04.2023    9609    151    acces969    31    

118

Модель состояния для MVC

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

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

1 стартмани

05.07.2022    3665    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12078    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Ish_2 1104 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 1679 25.01.11 08:49 Сейчас в теме
(1) А если в твоей строке "Заготовка" не хватит символов - если их будет меньше, чем "Процент*Масштаб"? Вариант с циклом может и медленнее, зато надежен.
10. Ish_2 1104 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 6533 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 6533 25.01.11 11:37 Сейчас в теме
(18) Быстрее ПроцентГраф= Лев(Заготовка,Процент*Масштаб);
20. cool.vlad4 2 25.01.11 11:38 Сейчас в теме
(19) Вы помоему совершенно не читаете, что я пишу - посмотрите (13) - я не отрицаю, что Лев надо использовать - я спрашиваю, быстрее ли формирование заготовки при строках меньше 127 вашим способом.
22. alexk-is 6533 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 6533 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 6533 25.01.11 12:12 Сейчас в теме
(28) Придумаешь быстрее обязательно позвони мне. :)
32. cool.vlad4 2 25.01.11 12:14 Сейчас в теме
(31) Это несерьезно :) ...а ведь мне лень замеры делать, но придется... :)
40. DrAku1a 1679 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 3119 25.01.11 11:52 Сейчас в теме
24. cool.vlad4 2 25.01.11 11:53 Сейчас в теме
(23) Я это предвидел, потому и съехидничал
как это сделать только с помощью такой конструкции
17. Арчибальд 2706 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 1351 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 214 24.01.11 22:54 Сейчас в теме
+ за идею.. .вот за что люблю жизнь, это за то, что все лежит на поверхности, нужно только обратить свое внимание!
8. CheBurator 3119 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 6533 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 6533 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 6533 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 19 22.12.11 12:05 Сейчас в теме
Классная идея! Мне очень понравилась. Автору респект!

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