gifts2017

Обработка для выбора цвета.

Опубликовал - - (Rebelx) в раздел Программирование - Работа с интерфейсом

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

Получить объект "Цвет" по его имени потом можно следующей срокой:

Вычислить

("WebЦвета." +

ИмяЦвета

)

При необходимости можно даже потом ставить условия на значение цвета в запросах, например:
Запрос =

Новый 

Запрос

;

Запрос.

Текст 

= "ВЫБРАТЬ

|	Номенклатура

.

Ссылка
               |ИЗ
               |	Справочник

.

Номенклатура КАК Номенклатура
               |ГДЕ
               |	Номенклатура

.

Цвет 

= &

Цвет

"; Запрос.

УстановитьПараметр

("Цвет", "БледноЗолотистый")

;

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

Наименование Файл Версия Размер
ВыборЦвета.epf 208
.1224836310 14,24Kb
27.02.13
208
.1224836310 14,24Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
0. - - (Rebelx) 24.10.08 12:30
Иногда требуется выбрать цвет, и сохранить его в базе.
предлагаемое решение позволяет решить эту задачу.
Обработка возвращает выбранный цвет в виде строки - имя Web цвета


Перейти к публикации

1. LRS (lrs) 24.10.08 12:30
А чем лучше стандартного механизма:

ДиалогВыбораЦвета = Новый ДиалогВыбораЦвета;
Если ДиалогВыбораЦвета.Выбрать() тогда
Возврат ДиалогВыбораЦвета.Цвет;
КонецЕсли;

lomok; Душелов; +2 Ответить
2. - - (Rebelx) 24.10.08 12:44
Тем, что в результате выбора получается строка с именем цвета, которую можно сохранить в базе, и фильтровать данные по цвету.


3. Василий Демидов (Душелов) 24.10.08 12:55
(2)

Код
ДиалогВыбораЦвета = Новый ДиалогВыбораЦвета;
Если ДиалогВыбораЦвета.Выбрать() тогда
   Сообщить(ДиалогВыбораЦвета.Цвет);
КонецЕсли;
Показать полностью
4. - - (Rebelx) 24.10.08 12:59
а как обратно? из строки
Код
Сообщить(ДиалогВыбораЦвета.Цвет)
Показать полностью

получить цвет?
5. Василий Демидов (Душелов) 24.10.08 13:01
Код
ЦветВажнойКнопки = Новый Цвет(255, 0, 0); // красный
ЦветОбычнойКнопки = ЦветаСтиля.ЦветФонаКнопки;
Показать полностью

6. - - (Rebelx) 24.10.08 13:03
так в базе что хранить? 255, 0, 0?

по мне так лучше "БледноЗолотистый"
7. Василий Демидов (Душелов) 24.10.08 13:05
(6) Так ты выбери цвет из закладки WebЦвета - и будет тебе бледнозолотистый.
8. - - (Rebelx) 24.10.08 13:08
таки мене не надо ни какой цвет, я жо не пользователь

так ты не ответил, что в базе хранить?
9. Poppy (poppy) 24.10.08 13:13
(6)
Цвет можно хранить в реквизите типа ХранилищеЗначений.
Например:
Код
Если Диалог.Выбрать() Тогда
   Объект.Цвет = Новый ХранилищеЗначения(Диалог.Цвет, Новый СжатиеДанных(9));
КонецЕсли;                                  
Показать полностью
10. Василий Демидов (Душелов) 24.10.08 13:22
+9, а в отчете можно закрашивать ячейку этим цветом.
11. - - (Rebelx) 24.10.08 13:27
(9)можно, а отобрать все зеленые товары как?

вообще я не притендую, что это решение самое лучшее и самоее универсальное, но:

а) оно простое
б) оно удобное для пользователя - по значению реквизита, пользователь может понять что за цвет, не надо его даже рисовать на эране. а когда надо - можно и нарисовать
в) легко можно сделать отбор. в том числе и похожих цветов:
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Цвет ПОДОБНО &Цвет";
Запрос.УстановитьПараметр("Цвет", "%Зелен%");


12. Василий Демидов (Душелов) 24.10.08 13:29
(11) Так никто и не говорит, про лучшее и универсальное.
Просто конструктивная беседа, с примерами и прочим :)
Просто в приведенных случаях список цветов шире, чем веб-цвета.
13. - - (Rebelx) 24.10.08 13:31
а часто ли надо вся гамма?
14. Василий Демидов (Душелов) 24.10.08 13:33
(13) Продакты вводят цвет - их, честно, ломает сидеть и выбирать, какой это цвет, как называется и прочее - просто с дизайн-макета лупой снимают цвет и заносят в базу.
15. Poppy (poppy) 24.10.08 13:40
(11)
Может для этого использовать свойства номенклатуры? Зачем создавать новый реквизит?
16. - - (Rebelx) 24.10.08 13:50
(14) возможна и такая ситуация, но не всегда
(15) можно и свойства, а можно и не для номенклатуры. суть не в этом, а в том, как выбирать и хранить цвет

вообще это было сделано, когда земля была огненым шаром и в платформе небыло диалога выбора цвета
17. Сергей Старовойтов (AVARY) 24.10.08 19:14
Если известно RGB цвета, то хранить его можно одним числом:
Код
RGB = 256*256*R + 256*G + B
Показать полностью

Обратное преобразование тоже не составит проблем:
Код
B = RGB % 256;
G = ((RGB - B) / 256) % 256;
R = ((((RGB - B) / 256) - G) / 256);
Показать полностью

В запросе можно делать выборку по оттенкам, например, красного, указывая соответствующий диапазон для RGB, или непосредственно в запросе расчитывая составляющие RGB, делать проверку на вхождение в требуемый диапазон.
18. Сергей Старовойтов (AVARY) 24.10.08 19:16
К (17):
Код
RGB = 256*256*R + 256*G + B
Показать полностью
19. Сергей Старовойтов (AVARY) 24.10.08 19:17
Хе.. я уж решил, что это я накосячил, а это тег code глючит
20. - - (Rebelx) 24.10.08 19:32
(19) я дал решение, как сделать выборку по оттенкам цвета - в примере (11) отенки зеленого.
ИМХО очень просто.

в твоем решении - представь :)

теоретически конечно можно все, но см.(11)
21. Zloy1C (Zloy1C) 29.10.08 08:42
22. Максим (Fuego) 12.12.08 21:27
Выражение Вычислить("WebЦвета." + ИмяЦвета) не очень правильно. Чем меньше пользуемся Функцией "Вычислить", тем лучше.

Лучше так: WebЦвета[ИмяЦвета]

А отбор по оттенкам можно организовать и так: выбирая зеленные тона проверяем, чтобы составляющая зеленого цвета была больше других. И т.д.
23. Виталий Гуляев (vital1c) 08.03.11 17:33
Еще вариант может кому полезен будет, можно ПолеВвода назначить ТипЗначения Цвет, и по кнопке выбора будет открыватся диалог выбора цвета
26. Alex Nikulin (Al-77) 06.03.13 12:33
Для управляемых форм не планируете доделать?