Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Где хранить цвет?

Где хранить цвет?
Я
   bebibo
 
14.08.20 - 16:25
Есть диалог, в котором пользователь выбирает цвет. Данный цвет сохраняется в справочнике.
Далее я его буду вытаскивать и окрашивать.
Вопрос, в каком типе реквизита мне его хранить? тремя реквизитами RGB не подходит.
А просто если создаю реквизит "Выбранный цвет" с типом число, то в дальнейшем при передаче этого реквизита в оформление нужной мне формы, пишет: "несоответствие типов". (Оно и понятно, число передаю)
Вот как мне выкрутиться тут?
   polosov
 
1 - 14.08.20 - 16:27
Определяемый тип не хочешь?
   Kigo_Kigo
 
2 - 14.08.20 - 16:28
а набор цветов какой и откуда вы его будете брать?
   bebibo
 
3 - 14.08.20 - 16:29
(1) что это? не работала с таким
   bebibo
 
4 - 14.08.20 - 16:30
(2) буду брать из справочника
Хранится в абсолютном виде, а не в стиле
   polosov
 
5 - 14.08.20 - 16:31
(3) Найди в дереве метаданных "ОпределяемыеТипы", создай свой тип с типом "цвет" и устанавливай своим реквизитам этот тип
   bebibo
 
6 - 14.08.20 - 16:36
(5) Попробую
   polosov
 
7 - 14.08.20 - 16:38
(6) Хотя не, цвет не хотит.
   bebibo
 
8 - 14.08.20 - 16:38
(6) При сохранении пишет что мой реквизит - недопустимый тип))
   bebibo
 
9 - 14.08.20 - 16:41
может есть функция или метод, которая число преобразовывает в цвет)) Ну число в тип "Цвет"
   arsik
 
10 - 14.08.20 - 16:42
А чем число не подходит?
типа 123 123 123
   bebibo
 
11 - 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
Функция МассивИзСтроки(Знач Стр, Разделитель=",") Экспорт

    Массив      = Новый Массив;
    ПраваяЧасть = ОтделитьРазделителем(Стр, Разделитель);
    
    Пока Не ПустаяСтрока(Стр) Цикл
        Массив.Добавить(СокрЛП(Стр));
        Стр         = ПраваяЧасть;
        ПраваяЧасть = ОтделитьРазделителем(Стр, Разделитель);
    КонецЦикла; 

    Возврат(Массив);
    
КонецФункции
   arsik
 
14 - 14.08.20 - 16:47
(11) Я не могу понять, что значит "числовое значение с типом ЦВЕТ"
   arsik
 
15 - 14.08.20 - 16:48
Может тебе нужно в 16-ричном формате передавать? Например #15E5D8
   bebibo
 
16 - 14.08.20 - 16:48
(14) Есть типы: строка, дата, число, цвет
у типа число - в значении цифры
у типа цвет -  в значении тоже цифры
   VladZ
 
17 - 14.08.20 - 16:48
(0) Храни в одном реквизите в виде строки: как пример "255,0,0".
   VladZ
 
18 - 14.08.20 - 16:49
+17 Через "выполнить" приводи к типу Цвет.
   bebibo
 
19 - 14.08.20 - 16:50
(18) это как?
   VladZ
 
20 - 14.08.20 - 16:52
ЦветВажный = "";
ПараметрыЦвета = "255,0,0";  // вот тут твой цвет.

Выполнить("ЦветВажный = Новый Цвет(" + ПараметрыЦвета + ");");
сообщить(ЦветВажный);
   vde69
 
21 - 14.08.20 - 16:53
чем не устраивает 

Новый ХранилищеЗначений(ТвойЦвет)
   bebibo
 
22 - 14.08.20 - 16:57
(20) Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
Конструктор не найден
ЦветВажный = Новый <<?>>Цвет(0)
   Жан Пердежон
 
23 - 14.08.20 - 17:02
(0)
Чем "тремя реквизитами RGB не подходит"? или срокой?
   VladZ
 
24 - 14.08.20 - 17:05
(22) Цвет задается тремя значениями, см. (20).  А у тебя просто "0". Косяк!
   ГдеСобакаЗарыта
 
25 - 14.08.20 - 17:09
Помниться я хранил цвета в строке через ЗначениеВСтрокуВнутр()
   Kesim
 
26 - 14.08.20 - 17:11
(0) вроде как цвет как тип работает:
&НаСервере
Процедура Команда1НаСервере()
    Элементы.Полепокраски.ЦветФона = реквизит1;
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
    //реквизит1 - реквизит формы с типом цвет

    Команда1НаСервере();
КонецПроцедуры
   Kesim
 
27 - 14.08.20 - 17:16
(0) варианты создания цвета:
ЦветВажнойКнопки = Новый Цвет(255, 0, 0); 
ЦветОбычнойКнопки = ЦветаСтиля.ЦветФонаКнопки;
ЦветВеб = WebЦвета.Аквамарин;

дальше сам, хочешь цифрами , хочешь строкой, хочешь цветом

сп:
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/ui}. Имя типа XDTO: Color.
   Tatitutu
 
28 - 14.08.20 - 17:45
Идея или как сохранить ЦВЕТ, ШРИФТ, ОФОРМЛЕНИЕ пользователя
http://catalog.mista.ru/1c/articles/370554/
   acht
 
29 - 14.08.20 - 19:25
(27) > Сериализуется. Данный объект может быть сериализован в/из XML

Практически готовый ответ. ХранилищеЗначений или строка. В обоих случаях надо чуть-чуть пританцовывать при присвоении и извлечении, но ХранилищеЗначений проще.
   Ёпрст
 
30 - 14.08.20 - 20:14
Можно и условноеОфоррмление сериализовать, там и цвет и шрифт и усё на свете
 
 Рекламное место пустует


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.