|
Где хранить цвет? | ☑ | ||
---|---|---|---|---|
0
bebibo
14.08.20
✎
16:25
|
Есть диалог, в котором пользователь выбирает цвет. Данный цвет сохраняется в справочнике.
Далее я его буду вытаскивать и окрашивать. Вопрос, в каком типе реквизита мне его хранить? тремя реквизитами RGB не подходит. А просто если создаю реквизит "Выбранный цвет" с типом число, то в дальнейшем при передаче этого реквизита в оформление нужной мне формы, пишет: "несоответствие типов". (Оно и понятно, число передаю) Вот как мне выкрутиться тут? |
|||
1
polosov
14.08.20
✎
16:27
|
Определяемый тип не хочешь?
|
|||
2
Kigo_Kigo
14.08.20
✎
16:28
|
а набор цветов какой и откуда вы его будете брать?
|
|||
3
bebibo
14.08.20
✎
16:29
|
(1) что это? не работала с таким
|
|||
4
bebibo
14.08.20
✎
16:30
|
(2) буду брать из справочника
Хранится в абсолютном виде, а не в стиле |
|||
5
polosov
14.08.20
✎
16:31
|
(3) Найди в дереве метаданных "ОпределяемыеТипы", создай свой тип с типом "цвет" и устанавливай своим реквизитам этот тип
|
|||
6
bebibo
14.08.20
✎
16:36
|
(5) Попробую
|
|||
7
polosov
14.08.20
✎
16:38
|
(6) Хотя не, цвет не хотит.
|
|||
8
bebibo
14.08.20
✎
16:38
|
(6) При сохранении пишет что мой реквизит - недопустимый тип))
|
|||
9
bebibo
14.08.20
✎
16:41
|
может есть функция или метод, которая число преобразовывает в цвет)) Ну число в тип "Цвет"
|
|||
10
arsik
гуру
14.08.20
✎
16:42
|
А чем число не подходит?
типа 123 123 123 |
|||
11
bebibo
14.08.20
✎
16:44
|
(10) то место куда я передаю, нужно передавать числовое значение с типом ЦВЕТ
А я получается передаю числовое значение цвета с типом число И мне пишет - несоответствие типа |
|||
12
программистище
14.08.20
✎
16:45
|
Хранил в строковом виде R;G;B
&НаКлиенте Процедура ЦветПриИзмененииПосле(Элемент) Объект.Цвет = "" + Цвет.Вид + ";" + Формат(Цвет.Красный, "ЧЦ=3; ЧН=; ЧВН=") + ";" + Формат(Цвет.Зеленый, "ЧЦ=3; ЧН=; ЧВН=") + ";" + Формат(Цвет.Синий, "ЧЦ=3; ЧН=; ЧВН=");//RGB КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) МассивЦветов = СтроковыеФункции.МассивИзСтроки(Объект.Цвет, ";");//RGB Если Не МассивЦветов.Количество() = 0 И Не МассивЦветов.Количество() = 1 И МассивЦветов[0] = "Абсолютный" Тогда Цвет = Новый Цвет(Число(МассивЦветов[1]), Число(МассивЦветов[2]), Число(МассивЦветов[3])); КонецЕсли; КонецПроцедуры Функция ОтделитьРазделителем(Стр, Знач Разделитель, Режим=0) ПраваяЧасть = ""; ПозРазделителя = СтрНайти(Стр, Разделитель); ДлинаРазделителя = СтрДлина(Разделитель); Если ПозРазделителя > 0 Тогда ПраваяЧасть = Сред(Стр, ПозРазделителя + ?(Режим=2, 0, ДлинаРазделителя)); Стр = СокрЛП(Лев(Стр, ПозРазделителя - ?(Режим=1, -ДлинаРазделителя + 1, 1))); КонецЕсли; Возврат(ПраваяЧасть); КонецФункции |
|||
13
программистище
14.08.20
✎
16:46
|
Функция МассивИзСтроки(Знач Стр, Разделитель=",") Экспорт
Массив = Новый Массив; ПраваяЧасть = ОтделитьРазделителем(Стр, Разделитель); Пока Не ПустаяСтрока(Стр) Цикл Массив.Добавить(СокрЛП(Стр)); Стр = ПраваяЧасть; ПраваяЧасть = ОтделитьРазделителем(Стр, Разделитель); КонецЦикла; Возврат(Массив); КонецФункции |
|||
14
arsik
гуру
14.08.20
✎
16:47
|
(11) Я не могу понять, что значит "числовое значение с типом ЦВЕТ"
|
|||
15
arsik
гуру
14.08.20
✎
16:48
|
Может тебе нужно в 16-ричном формате передавать? Например #15E5D8
|
|||
16
bebibo
14.08.20
✎
16:48
|
(14) Есть типы: строка, дата, число, цвет
у типа число - в значении цифры у типа цвет - в значении тоже цифры |
|||
17
VladZ
14.08.20
✎
16:48
|
(0) Храни в одном реквизите в виде строки: как пример "255,0,0".
|
|||
18
VladZ
14.08.20
✎
16:49
|
+17 Через "выполнить" приводи к типу Цвет.
|
|||
19
bebibo
14.08.20
✎
16:50
|
(18) это как?
|
|||
20
VladZ
14.08.20
✎
16:52
|
ЦветВажный = "";
ПараметрыЦвета = "255,0,0"; // вот тут твой цвет. Выполнить("ЦветВажный = Новый Цвет(" + ПараметрыЦвета + ");"); сообщить(ЦветВажный); |
|||
21
vde69
14.08.20
✎
16:53
|
чем не устраивает
Новый ХранилищеЗначений(ТвойЦвет) |
|||
22
bebibo
14.08.20
✎
16:57
|
(20) Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
Конструктор не найден ЦветВажный = Новый <<?>>Цвет(0) |
|||
23
Жан Пердежон
14.08.20
✎
17:02
|
(0)
Чем "тремя реквизитами RGB не подходит"? или срокой? |
|||
24
VladZ
14.08.20
✎
17:05
|
(22) Цвет задается тремя значениями, см. (20). А у тебя просто "0". Косяк!
|
|||
25
ГдеСобака Зарыта
14.08.20
✎
17:09
|
Помниться я хранил цвета в строке через ЗначениеВСтрокуВнутр()
|
|||
26
Kesim
14.08.20
✎
17:11
|
(0) вроде как цвет как тип работает:
&НаСервере Процедура Команда1НаСервере() Элементы.Полепокраски.ЦветФона = реквизит1; КонецПроцедуры &НаКлиенте Процедура Команда1(Команда) //реквизит1 - реквизит формы с типом цвет Команда1НаСервере(); КонецПроцедуры |
|||
27
Kesim
14.08.20
✎
17:16
|
(0) варианты создания цвета:
ЦветВажнойКнопки = Новый Цвет(255, 0, 0); ЦветОбычнойКнопки = ЦветаСтиля.ЦветФонаКнопки; ЦветВеб = WebЦвета.Аквамарин; дальше сам, хочешь цифрами , хочешь строкой, хочешь цветом сп: Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер. Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/ui}. Имя типа XDTO: Color. |
|||
28
Tatitutu
14.08.20
✎
17:45
|
Идея или как сохранить ЦВЕТ, ШРИФТ, ОФОРМЛЕНИЕ пользователя
http://catalog.mista.ru/1c/articles/370554/ |
|||
29
acht
14.08.20
✎
19:25
|
(27) > Сериализуется. Данный объект может быть сериализован в/из XML
Практически готовый ответ. ХранилищеЗначений или строка. В обоих случаях надо чуть-чуть пританцовывать при присвоении и извлечении, но ХранилищеЗначений проще. |
|||
30
Ёпрст
14.08.20
✎
20:14
|
Можно и условноеОфоррмление сериализовать, там и цвет и шрифт и усё на свете
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |