Цвет индикатора в зависимости от значения

29.08.17

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

Функция, которая выдает значение цвета, в зависимости от передаваемого значения и максимально возможного значения.

Скачать исходный код

Наименование Файл Версия Размер
Цвет индикатора в зависимости от значения:
.epf 7,39Kb
6
.epf 1 7,39Kb 6 Скачать

Очень часто, для лучшего восприятия, необходимо окрасить индикатор в зависимости от значения.
Данная обработка является оберткой для демонстрации работы функции ПолучитьОттенок.
Фактически нужен градиент от красного(255,0,0) до зеленого(0,255,0) или от 0 до 120 H в HSV шкале.

Функция ПолучитьОттенок на входе получает текущее Значение и Максимальное значение, а на выход выдает цвет.
 

Функция ПолучитьОттенок(ТекущееЗначение,Максимум) экспорт // зеленый -максимальный, красный - минимальный
	
//Определяем часть
часть=ТекущееЗначение/максимум;
шаг=510/максимум; //сквозной шаг

//зеленый (0,255,0)
//желтый  (255,255,0)
//красный(255,0,0)
// фактически это движение в HSV, где меняется только Hue в пределах от 0 до 120
компонентR=0;
компонентG=0;
//определяем к какой половине спектра отностится наше число
Если часть > 0.5 тогда
	компонентR=цел(255-((ТекущееЗначение-0.5*максимум)*шаг));
	компонентG=255;
	
Иначе	
	компонентR=255;
	компонентG=цел(ТекущееЗначение*шаг);
		
КонецЕсли;	
	
возврат Новый Цвет(компонентR,компонентG,0);
	
КонецФункции

 

Индикатор цвет

См. также

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

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

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

6000 руб.

16.01.2015    61971    43    59    

81

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

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

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

5000 руб.

14.01.2016    54599    16    21    

42

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

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

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

2400 руб.

29.06.2020    16849    21    4    

35

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2233    25    progmaster    8    

3

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

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

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

1 стартмани

05.07.2022    3867    kalyaka    4    

29

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

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

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

3600 руб.

29.04.2022    12228    1    5    

10

Условное оформление элементов форм в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)

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

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

6000 руб.

18.01.2022    8901    1    2    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. webester 26 30.08.17 05:05 Сейчас в теме
Еще надо параметр "Инвертировать" в функцию, что бы она выдавала красный ближе к концу :)
+
2. kc-ropa 42 30.08.17 08:58 Сейчас в теме
Функция ПолучитьОттенок(ТекущееЗначение,Максимум,инвертировать=ложь) экспорт // зеленый -максимальный, красный - минимальный
	
//Определяем часть
часть=ТекущееЗначение/максимум;
шаг=510/максимум; //сквозной шаг

//зеленый (0,255,0)
//желтый  (255,255,0)
//красный(255,0,0)
// фактически это движение в HSV, где меняется только Hue в пределах от 0 до 120
компонентR=0;
компонентG=0;
//определяем к какой половине спектра отностится наше число
Если часть > 0.5 тогда
	компонентR=цел(255-((ТекущееЗначение-0.5*максимум)*шаг));
	компонентG=255;
	
Иначе	
	компонентR=255;
	компонентG=цел(ТекущееЗначение*шаг);
		
КонецЕсли;	
Если инвертировать тогда возврат Новый Цвет(компонентG,компонентR,0);	
				   иначе возврат Новый Цвет(компонентR,компонентG,0);
КонецЕсли;	
	
КонецФункции
Показать
itriot11; +1
3. artbear 1522 30.08.17 16:50 Сейчас в теме
А Управляемые формы?
+
7. kc-ropa 42 31.08.17 09:05 Сейчас в теме
(3) Нет необходимости.
+
4. Fragster 1139 30.08.17 19:34 Сейчас в теме
Не интересно. Например в https://infostart.ru/public/551431/ начальные и конечные цвета задаются, а далее получается плавный градиент между ними.
+
6. kc-ropa 42 31.08.17 09:04 Сейчас в теме
(4) Спасибо, я его не видел.
+
5. DrAku1a 1715 31.08.17 04:41 Сейчас в теме
Немножко математической магии:
компоненты = ТекущееЗначение / Максимум * 510;
компонентR = Мин(510 - компоненты, 255);
компонентG = Мин(компоненты, 255);
возврат Новый Цвет(компонентR,компонентG,0)

Для того, чтобы инвертировать - меняем местами R и G
TreeDogNight; +1
8. kc-ropa 42 31.08.17 09:06 Сейчас в теме
(5) Красота! Так гораздо компактней и быстрее, но менее очевидно.
+
9. DrAku1a 1715 31.08.17 17:09 Сейчас в теме
(8) На самом деле - всё становится очевидно, если нарисовать графики изменения цвета.
Кстати, из этого графика становится примерно ясен алгоритм перехода из одного произвольного цвета в другой произвольный цвет.
Прикрепленные файлы:
TreeDogNight; +1
10. DrAku1a 1715 01.09.17 08:33 Сейчас в теме
(9)
Функция ПолучитьКомпонентОттенка(КомпонентНач, КомпонентКон, Коэффициент)
	Если КомпонентКон=КомпонентНач Тогда
		Возврат КомпонентНач;
	ИначеЕсли КомпонентКон>КомпонентНач Тогда
		Возврат КомпонентНач + 2 * (КомпонентКон - КомпонентНач) * Коэффициент;
	Иначе
		Возврат КомпонентНач + 2 * (КомпонентНач - КомпонентКон) * (1-Коэффициент);
	КонецЕсли;
КонецФункции

Функция ПолучитьОттенокЦвета(ЦветНач, ЦветКон, ТекущееЗначение, МаксЗначение, МинЗначение=0)
	Если МаксЗначение<=МинЗначение или ТекущееЗначение<МинЗначение Тогда
		Возврат ЦветНач;
	ИначеЕсли ТекущееЗначение>МаксЗначение Тогда
		Возврат ЦветКон;
	КонецЕсли;
	Коэффициент = ТекущееЗначение / (МаксЗначение - МинЗначение);
	КомпонентКрасный = ПолучитьКомпонентОттенка(ЦветНач.Красный, ЦветКон.Красный, Коэффициент);
	КомпонентЗеленый = ПолучитьКомпонентОттенка(ЦветНач.Зеленый, ЦветКон.Зеленый, Коэффициент);
	КомпонентСиний = ПолучитьКомпонентОттенка(ЦветНач.Синий, ЦветКон.Синий, Коэффициент);
	Возврат Новый Цвет(КомпонентКрасный, КомпонентЗеленый, КомпонентСиний);
КонецФункции
Показать
TreeDogNight; +1
11. TreeDogNight 22 17.11.17 20:51 Сейчас в теме
(10)

Сделал обработку на основании вашего алгоритма
Прикрепленные файлы:
ГенераторЦветов.epf
mammadov.zaur.77; +1
12. DrAku1a 1715 19.11.17 09:33 Сейчас в теме
(11) Нужно подправить "ПолучитьКомпонентОттенка": добавить ограничения максимума и минимума возвращаемого значения, и когда цвет темнеет (третья формула условия) - нужно вместо КомпонентНач брать КомпонентКон:
Функция ПолучитьКомпонентОттенка(КомпонентНач, КомпонентКон, Коэффициент)
    Если КомпонентКон=КомпонентНач Тогда
        Возврат КомпонентНач;
    ИначеЕсли КомпонентКон>КомпонентНач Тогда
        Возврат Макс(Мин(КомпонентНач + 2 * (КомпонентКон - КомпонентНач) * Коэффициент, КомпонентКон), КомпонентНач);
    Иначе
        Возврат Макс(Мин(КомпонентКон + 2 * (КомпонентНач - КомпонентКон) * (1 - Коэффициент), КомпонентНач), КомпонентКон);
    КонецЕсли;
КонецФункции
Показать

По-хорошему, ещё можно бы округлять результат или отбрасывать дробную часть, но 1С отрабатывает и так.
Прикрепленные файлы:
TreeDogNight; +1
Оставьте свое сообщение