Имя: Пароль:
1C
 
Как сохранить цвета в БД
0 ХочуСпец
 
17.06.11
14:46
Задача: форма списка в зависимости от значения некоторого реквизита необходимо раскрасить как пожелает пользователь.

Где хранить пользовательские цвета?
Была идея запихать все это в типовой ПВХ Настройки пользователя, но вот с каким типом?

Или можно как то по другому
спс
1 dimoff
 
17.06.11
14:48
Тип ХранилищеЗначения
2 butterbean
 
17.06.11
14:49
разложи на 3 числовых реквизита - RGB
3 Maxus43
 
17.06.11
14:49
да и строка сойдёт имхо
4 dimoff
 
17.06.11
14:50
"разложи на 3 числовых реквизита - RGB"

Системные и вэб-цвета не раскладываются
5 ХочуСпец
 
17.06.11
14:51
(1) такого типа нет в ПВХ

а вот со строкой можно

слышал что кто то как то через макет делал
6 Blast
 
17.06.11
14:51
(0)
Решал подобную задачу буквально пару недель назад и решил так:
Тоже хранил пользовательские цвета в ПВХ Настройки пользователя.
Тип данных выберал Строка с длиной 11.
Формат строки ххх,ууу,zzz
где ххх - красный; ууу - зеленый, zzz - синий.
7 ХочуСпец
 
17.06.11
14:51
(4) да не раскладываются
как быть
8 ХочуСпец
 
17.06.11
14:52
(6) а как раскладывал системные цвета?
9 Blast
 
17.06.11
14:52
(7) Как это не раскладываются?

// Преобразует строку в формате RBG в объект цвет
//
// Параметры:
//            СтрокаРГБ - строка, содержащая цветовые составляющие в формате: "красный:тип число,зеленый:тип число,синий:тип число"
//
Функция ПреобразоватьСтрокуRGBвЦвет(СтрокаРГБ) Экспорт
   
   Если Не ЗначениеЗаполнено(СтрокаРГБ) Тогда
       Возврат Неопределено;
   КонецЕсли;
   ПозицияРазделителя = Найти(СтрокаРГБ,",");
   Красный = Число(Лев(СтрокаРГБ,ПозицияРазделителя-1));
   СтрокаРГБ = Сред(СтрокаРГБ,ПозицияРазделителя+1);
   ПозицияРазделителя = Найти(СтрокаРГБ,",");
   Зеленый = Число(Лев(СтрокаРГБ,ПозицияРазделителя-1));
   Синий = Число(Сред(СтрокаРГБ,ПозицияРазделителя+1));        
   Возврат Новый Цвет(Красный,Зеленый,Синий);
   
КонецФункции // ПреобразоватьСтрокуRGBвЦвет()

// Преобразует объект цвет в строку формата RGB: "красный:тип число,зеленый:тип число,синий:тип число"
//
// Параметры:
//            Цвет - объект типа Цвет
//
Функция ПреобразоватьЦветВСтрокуRGB(Цвет) Экспорт
   
   Если ТипЗнч(Цвет) <> Тип("Цвет") Тогда
       Возврат Неопределено;
   КонецЕсли;
   Красный = Цвет.Красный;
   Зеленый    = Цвет.Зеленый;
   Синий    = Цвет.Синий;
   Возврат Строка(Красный)+","+Строка(Зеленый)+","+Строка(Синий);
   
КонецФункции // ПреобразоватьЦветВСтрокуRGB()
10 ХочуСпец
 
17.06.11
14:53
в отладчике смотрю у цвета системного как у и всех
где (-1) - красный; (-1) - зеленый, (-1) - синий.
11 Maxus43
 
17.06.11
14:53
ЗначениеВСтрокуВнутр кстати цвет обработает? так и хранитиь может? потом ЗначениеИзСтроки и все дела
12 Blast
 
17.06.11
14:54
(10) (-1) - красный; (-1) - зеленый, (-1) - синий
это цвет по умолчанию (белый)
13 ХочуСпец
 
17.06.11
14:55
(12) все выбранные цвета с этим значением!
14 ХочуСпец
 
17.06.11
14:55
ТекущийЦвет = Элемент.ЦветФона;
   
   Диалог = Новый ДиалогВыбораЦвета;
   
   Диалог.Цвет = ТекущийЦвет;
   
   Диалог.Выбрать();
   
   ВыбранныйЦвет = Диалог.Цвет;

Красный, Синий, Зеленый во всех случаях возвращает -1
15 Blast
 
17.06.11
14:56
(11) Кстати согласен, наверное эти функции использовать более эффективно, чем мой разбор строки
16 Живой Ископаемый
 
17.06.11
14:56
17 ХочуСпец
 
17.06.11
14:58
Зеленый (G)
Использование:
Из синтаксиса

Зеленый (G)

Только чтение.
Описание:

Тип: Число. Содержит зеленую составляющую цвета.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

Если цвет задан не абсолютным, то содержит -1

Как задать абсолютным?
18 Blast
 
17.06.11
14:58
(14) Цвет выбирал так:
п_Настройка = ЭлементыФормы.ДеревоНастроек.ТекущаяСтрока.Настройка;
   Если (п_Настройка = ПланыВидовХарактеристик.упНастройкиПользователей.асаЦветФонаСтрокиЗадание) Или
        (п_Настройка = ПланыВидовХарактеристик.упНастройкиПользователей.асаЦветФонаСтрокиРейс) Тогда
       ДиалогЦвет = Новый ДиалогВыбораЦвета();
       
       ЗначениеЦвета = ЭлементыФормы.ДеревоНастроек.ТекущаяСтрока.Значение;
       Если ЗначениеЗаполнено(ЗначениеЦвета) Тогда            
           ДиалогЦвет.Цвет = ПреобразоватьСтрокуRGBвЦвет(ЗначениеЦвета);
       КонецЕсли;
       Если ДиалогЦвет.Выбрать() Тогда            
           ЭлементыФормы.ДеревоНастроек.ТекущаяСтрока.Значение = ПреобразоватьЦветВСтрокуRGB(ДиалогЦвет.Цвет);
       КонецЕсли;
   КонецЕсли;
19 Maxus43
 
17.06.11
14:59
(17) > (11) проверь, имхо прокатит
20 ХочуСпец
 
17.06.11
14:59
(19) аха попробую
21 Живой Ископаемый
 
17.06.11
15:00
уже попробовали:
http://screencast.com/t/cwoAgFZLBC
22 Maxus43
 
17.06.11
15:02
(21) норм же? так и хранить, удобно
23 Живой Ископаемый
 
17.06.11
15:03
по-моему, да...
24 ХочуСпец
 
17.06.11
15:03
(22) отлично! сработало, спасибо
25 Maxus43
 
17.06.11
15:04
определится с максимальной длинной только надо
26 Blast
 
17.06.11
15:10
(25) Да можно указать и 255, главное чтобы тип длины был переменная
27 Maxus43
 
17.06.11
15:14
можно конечно, но по феншую будет вычислить точную!)
28 ХочуСпец
 
17.06.11
15:15
А сохранить в строку мн-во цветов можно?

Н-р, цвет1 = Лиловый, цвет2 = Бирюзовый ... цвет n

СЗ = новый СписокЗначение;
Сз.Добавить(цвет1)
Сз.Добавить(цвет2)
.....
Сз.Добавить(цветn)

ЗначениеВСтрокуВнутр(Сз)


При восстановлении настроек в данном случае
ЗначениеИзСтрокиВнутр()

нормально отработает?
29 Maxus43
 
17.06.11
15:16
(28) да, хоть ТЗ туда загони, главно чтоб месиа в строке хватило
30 Живой Ископаемый
 
17.06.11
15:16
2(28) дядька ты чего? не понял как вызвать Табло чтобы попробовать в нем реализовать свои фантазии?
31 ptiz
 
17.06.11
15:18
(28) +100
32 Tapo4ek
 
17.06.11
15:18
Да бред, через хранилище надо делать восстановление и сохранение - в одну строчку кода делается, а на форме элемент не связанный с данными типа "Цвет" и все.
33 Maxus43
 
17.06.11
15:20
(32) он ПВХ хочет (5)
34 Живой Ископаемый
 
17.06.11
15:22
хотя нет, Табло не справиться
http://screencast.com/t/2QXG23y8
35 ХочуСпец
 
17.06.11
15:28
(33) вообще такая задача в ПВХ появилась когда у пользователей могут быть разные колонки. Хранилище значений справится с этой задачей?
36 ХочуСпец
 
17.06.11
15:28
ведь на компьютере могут работать разные пользователи теоретически
37 Maxus43
 
17.06.11
15:29
(35) > (32) Туда вопросы, там ответы. Я не заморачивался)
38 ХочуСпец
 
17.06.11
15:30
к тебе говорят (32)
39 Maxus43
 
17.06.11
15:44
кстати минус:

Доступность:

Сервер, толстый клиент, внешнее соединение.
40 lxs
 
17.06.11
15:53
р = ЗначениеВСтрокуВнутр(Новый Цвет(234,0,0));

ЭлементыФормы.Кнопка1.ЦветФонаКнопки = ЗначениеИзСтрокиВнутр(р);

прекрасно отрабатывает
41 Tapo4ek
 
17.06.11
16:00
(37) Хранилище может все, даже фильмы хранить.
42 GenV
 
17.06.11
16:04
(39)+1 Для тонкого клиента только если заранее список создать с именами и значениями цветов.
43 Domovoi
 
17.06.11
16:23
А что такое ПВХ? И что решили, где хранить пользовательские цвета?
44 Blast
 
17.06.11
16:32
(43) План видов характеристик :-))
Варианты хранения представлены выше, а где Вы будете хранить дело Ваше.
45 Domovoi
 
17.06.11
16:33
Варианты то я знаю, мне интересно что решили, в чем лучше?
46 Maxus43
 
17.06.11
16:34
про ХранилищеЗначения тема не раскрыта немного, точнее не раскрыто как разные юзеры будут получать свои настройки
47 Blast
 
17.06.11
16:37
(45) Скажем так. Поскольку я конфу с нуля не писал и там уже был ПВХ настройки пользователей, то я и решил добавить настройки цветов именно туда. Как реализовал написал в (9) и (18).
48 Domovoi
 
17.06.11
16:55
(47)Меня просто мучает вопрос, что лучше регистр сведений или ПВХ?
49 dimoff
 
17.06.11
17:02
(48) Этот вопрос не одно столетие занимает умы ученых и философов, но к окончательному ответу они так и не пришли, недостаточно знаний о вселенной.
50 Domovoi
 
17.06.11
17:16
Может голосовалку прикрутят, и народ просто проголосует кто как делает? А то эта хрень уже нужна(по крайней мере клиентам с которыми я работаю - всем), а как ее делать не определился еще, пока на регистре делаю, но вот хотелось бы узнать пока сильно не нагрузили базу этими раскрасками, чем же лучше, чтоб если что переделать, пока не так много.
51 Tapo4ek
 
17.06.11
17:18
(49) Этот вопрос не одно столетие занимает умы ученых и философов, но к окончательному ответу они так и не пришли, недостаточно знаний о вселенной. - бредятину говорите-с.
52 Domovoi
 
17.06.11
17:19
(51)И каков же ответ?
53 Tapo4ek
 
17.06.11
17:20
(49) Вообще непохожие друг на друга объекты, все равно что регистр накопления и справочник. Какая вселенная? Какие философы?
54 Живой Ископаемый
 
17.06.11
17:21
вселенная обычная, философы - различные...
55 Domovoi
 
17.06.11
17:22
(53)Ну так в чем лучше делать?
56 dimoff
 
17.06.11
17:23
Или наоборот, различная вселенная и обычные философы...Впрочем это тоже вопрос обсуждения
57 Tapo4ek
 
17.06.11
17:23
Есть только один философский вопрос подобного плана "Справочник или регистр сведений", а ПВХ имеет другое назначение, только потому что умеет хранить типы.
58 Domovoi
 
17.06.11
17:23
+(55)и желательно сказать чем лучше в данном случаем чем в другом.
59 Tapo4ek
 
17.06.11
17:26
(55) Зависит от контекста, чего цвет надо хранить, чего красить будем?
60 dimoff
 
17.06.11
17:26
В данном случае абсолютно по барабану где хранить эти цвета: в справочнике, РС или ПВХ. Точка. Печать. На исполнение.
61 Tapo4ek
 
17.06.11
17:28
(60) Елки, ПВХ цвета хранить не может. О чем вы говорите?
62 Domovoi
 
17.06.11
17:28
(57)Нее справочник для меня отпал, на каждую раскраску справочник, а если в один впихнуть, то по регистру поиск будет быстрее чем по такому справочнику.
(59)А какой может быть контекст? Цвет нужно хранить, любой который доступен 1с.
63 Domovoi
 
17.06.11
17:29
(61)Почему?
64 Maxus43
 
17.06.11
17:29
Для РС - Измерение Юзер, Ресурс Строка, и всё. если только толстый клиент - то ЗначениеВСтрокуВнутр и пофиг
65 Maxus43
 
17.06.11
17:30
(61) По большому счету ХранилищеЗначение = ЗначениеВСтрокуВнутр. разница в где хранить
66 Domovoi
 
17.06.11
17:31
(64)Ну вот так и делаю, тока измерений по больше. А тут собирались в ПВХ хранить, вот мне интересно есть ли в чем то преимущество?
67 Maxus43
 
17.06.11
17:32
(66) ПВХ настройки пользователей просто в типовой уже изобретено. Зачем создавать новые объекты если они уже есть
68 Domovoi
 
17.06.11
17:34
Ну а еслиб надо было создавать новый, то в чем луше? или все равно?
69 Maxus43
 
17.06.11
17:35
в данном случае имхо - РС. более подходит
70 dimoff
 
17.06.11
17:35
(61) ПВХ может хранить ссылку на справочник, которых может хранить хранилище значения
71 Maxus43
 
17.06.11
17:35
подходит по смыслу, ибо хранит состояние измерения (юзера)
72 Живой Ископаемый
 
17.06.11
17:36
2(68) ну... ПВХ клевый еще тем, что в нем как и в справочнике можно использовать предопределенные элементы... А в РС - нельзя.. но если таковых не будет - то и...
73 Domovoi
 
17.06.11
17:37
+(68)Да и эти настройки разрастуться из-за раскраски ппц как, вплане пользования будет не удобвно наверно.
(72)Тока предопределнные использовать, как то не очень)
74 Domovoi
 
17.06.11
17:39
Ясно, в обшем РС, ну и слава богу)
75 Живой Ископаемый
 
17.06.11
17:42
(74) капец, дядька, с такой рефлексией ты спать нормально не сможешь... тебя ждет ментальное истощение
76 Domovoi
 
17.06.11
17:44
(75)Всмысле?
Я еще хлопчик) да и сплю я нормально, кто бы дал.
77 Domovoi
 
17.06.11
17:54
ментальное истощение - а это что? нашел только: истощение разума противника.
78 Живой Ископаемый
 
17.06.11
17:59
а что такое физическое истощение?
79 Domovoi
 
17.06.11
18:03
(78)упадок сил, резкое исхудание, повышение утомляемости, отсутствие аппетита, ослабление организма и т.д.
80 Живой Ископаемый
 
17.06.11
18:04
ну а что такое ментальное истощение по-твоему? не истощение же ментов, верно?
81 Domovoi
 
17.06.11
18:09
(80)Так я хз, вот и спрашиваю, теоретически конечно могу предположить что мозга. Погуглил, там тока про линейку 2 как я описал в (77), ну думаю вы не это имели ввиду. Ну а если вы про истощение мозга? Из-за чего оно у меня произовйдет, из-за того что сплю мало? Ну если я буду 10 лет учить 1с то думаю повешусь до истощения мозга)
82 Живой Ископаемый
 
17.06.11
18:12
похоже ментальное истощение уже наступило...

проиллюстрирую цепочкой:
если тебя так мучают вопросы - чтоже лучше ПВХ или РС, что аж прямо мучают, и если этих вопросов много, то пытаясь их все решить и обдумать ты станешь плохо спать, а из-за этого мозг начинает работать не очень хорошо... ему для здоровья нужен здоровый сон, а раз сна не будет - то есть он не будет этим сном в достаточном количестве питаться, если тебе угодно - то стало быть начнется истощение... но ментальное, потому что вес ты конечно же терять не станешь.
83 Domovoi
 
17.06.11
18:17
(82)О как, ну теперь ясно) Вообще не особо мучался этим вопрсом пока тут не заговорили, но многие вопросы мучают.
А как же не думать? Иначе быдлокодер и позор на всю жизнь) Да и переделывать потом сложнее чем сразу норм писать.
84 Domovoi
 
17.06.11
18:20
(82)Кстате хотелось бы прервать вашу цепочку. После плохо спать от обдумывания, начиняет осинять, короче становишься гением.
85 Живой Ископаемый
 
17.06.11
18:24
да вот хрен там... я практиковал депривацию - никаких осинений.
===
начинает осенять когда обдумывание происходит в фоне;
схематично это выглядит так.. представь что у тебя в черепе - два чувак, один умный и нахрапистый, а второй - креативный и застенчивый.. и вот они вдвоем затеяли типа мозговой штурм - что лучше ПВХ или РС... угадай чей только голос будет слышен? что нужно сделать, чтобы вступил в действие креативный и застенчивый? правильно, отвлечь просто умного и наглого какой-то задачкой - кроссвордом или судоку, или просто скажем пробежать 10 километров, чтобы он успокоился... вот тогда креативный и скромный выходит вперед и произносит осинение...