|
Цвет в реквизит типа ХранилищеЗначения? | ☑ | ||
---|---|---|---|---|
0
prazdnik4334
06.02.13
✎
00:22
|
Помогите пожалуйста. Как поместить Цвет в реквизит и этот цвет отобразить на форме? (Нужно квалификационный уровень в отчёте отображать своим цветом)
Начал делать так: &НаКлиенте Процедура ПриОткрытии(Отказ) Диалог=Новый ДиалогВыбораЦвета; Диалог.Выбрать(); ПомЦвет(Диалог.Цвет); //Сообщить(Пров()); КонецПроцедуры Процедура ПомЦвет(Цвет) Об=РеквизитФормыВЗначение("Объект"); Об.Цвет=Новый ХранилищеЗначения (Новый Цвет(Цвет)); ЗначениеВРеквизитФормы(Об, "Объект"); КонецПроцедуры Выдаёт ошибку: "Новый ?? Цвет" конструктор не найден. |
|||
1
DrShad
06.02.13
✎
00:26
|
Об=РеквизитФормыВЗначение("Объект");
Об.Цвет=Новый ХранилищеЗначения (Новый Цвет(Цвет)); ЗначениеВРеквизитФормы(Об, "Объект"); зачем это все? |
|||
2
H A D G E H O G s
06.02.13
✎
00:28
|
Сделай отдельную, годную настройку Оформления строк в СКД, будь мужиком!
|
|||
3
prazdnik4334
06.02.13
✎
00:34
|
(2). По условию задачи, в справочнике должен быть реквизит Цвет с типом ХранилищеЗначения.
|
|||
4
prazdnik4334
06.02.13
✎
00:36
|
По поводу отображения на форме, можно какой-то текст покрасить в соответствующий цвет (сам себе ответил). Но хотелось бы что-то типа небольшого цветного квадрата или как-то по-другому. Если знаете, подскажите.
|
|||
5
DrShad
06.02.13
✎
00:38
|
ДиалогВыбораЦвета (ColorChooseDialog)
Цвет (Color) Использование: Только чтение. Описание: Тип: Цвет. Содержит цвет, устанавливаемый при открытии диалога. После выбора содержит выбранный цвет. Доступность: Тонкий клиент, толстый клиент, внешнее соединение. |
|||
6
DrShad
06.02.13
✎
00:38
|
т.е. у тебя уже есть Цвет, зачем его еще раз создавать?
|
|||
7
prazdnik4334
06.02.13
✎
00:40
|
(6). Это я только пробовал его в реквизит поместить и не получилось.
|
|||
8
Вуглускр1991
06.02.13
✎
00:42
|
Помещай массив из трех чисел rgb.
|
|||
9
prazdnik4334
06.02.13
✎
00:43
|
Облазил весь Инет, как работать с файлами и Хранилищем много инфо, а с цветом - ничего.
|
|||
10
DrShad
06.02.13
✎
00:44
|
Цвет (Color)
Конструктор по умолчанию Синтаксис: Новый Цвет() Описание: Создает значение цвета, которое будет использоваться как значение по умолчанию (цвет "Авто"). Пример: Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок) Если Элемент.ТекущаяСтрока=Неопределено Тогда Возврат; КонецЕсли; Для Каждого Офр Из ОформленияСтрок Цикл Если Офр.ДанныеСтроки.Важно Тогда Офр.ЦветФона = Новый Цвет(197, 255, 185); Иначе Офр.ЦветФона = Новый Цвет(); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
11
prazdnik4334
06.02.13
✎
00:44
|
(8). Можно так, но в 1С есть же тип Цвет. Чё не получается его поместить в Хранилище?
|
|||
12
DrShad
06.02.13
✎
00:45
|
+(10) и нигде нет такой конструкции как у тебя
|
|||
13
prazdnik4334
06.02.13
✎
00:47
|
(10). У меня ж выдаёт ошибку на "Новый Цвет()". Выходит, что диалог выбора цвета возвращает цвет не в формате (Число, Число, Число).
|
|||
14
DrShad
06.02.13
✎
00:47
|
еще раз спрашиваю - у тебя есть уже Цвет в первой процедуре - зачем ты его пихаешь в конструктор создания цвета?
|
|||
15
DrShad
06.02.13
✎
00:48
|
это как из масла создавать масло
|
|||
16
prazdnik4334
06.02.13
✎
00:52
|
(14). Да, тот код, что я написал, это я попробовал, как всё работает. Выбрать цвет->записать в реквизит->пользоваться цветом из реквизита. А по поводу (13) проверил, действительно диалог выдаёт цвет не в формате (число, число, число), а - название стиля.
|
|||
17
prazdnik4334
06.02.13
✎
00:56
|
Диалог выбора цвета возвращает и R, G, B, вот только при выборе любого цвета выдаёт (-1, -1, -1)???
|
|||
18
DrShad
06.02.13
✎
01:01
|
продолжайте наблюдения
|
|||
19
prazdnik4334
06.02.13
✎
11:01
|
В Инете нашёл с другим диалогом выбора цвета:
Процедура Реквизит1ПриИзменении(Элемент) ШелСкрипт=Новый COMОбъект("WScript.Shell"); ШелСкрипт.RegWrite("HKLM\SOFTWARE\Classes\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905\","gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj"); Диалог=Новый COMОбъект("MSComDlg.CommonDialog"); Диалог.ShowColor(); Скрипт=Новый COMОбъект("MSScriptControl.ScriptControl"); Скрипт.language="javascript"; Скрипт.AddObject("Диалог",Диалог); Цвет = РазложитьRGB(Скрипт.Eval("Диалог.Color")); КонецПроцедуры Функция РазложитьRGB(ЗначениеЧислом) ЦветRGB = ЗначениеЧислом; R = ЦветRGB%256; G = (Цел(ЦветRGB/256))%256; B = (Цел(ЦветRGB/(256 * 256)))%256; Возврат Новый Цвет(R,G,B); КонецФункции |
|||
20
vde69
06.02.13
✎
11:04
|
давно делал сабж на ПВХ, правда не помню уже что именно сохранял цвет или его представления...
|
|||
21
Reset
06.02.13
✎
11:05
|
(0)
Об.Цвет=Новый ХранилищеЗначения (Новый Цвет(Цвет)); ==> Об.Цвет=Новый ХранилищеЗначения(Цвет); Об этом тебе всю тему твердят |
|||
22
Ns33
06.02.13
✎
11:06
|
1. Реквизит Цвет, строка , 100
2. Реквизит формы Цвет, тип - Цвет 3. Поле формы цвет, путь данным Форма.Цвет, тип поле ввода. 4. &НаСервере Процедура ВосстановитьЦвет() Если Объект.Цвет="0" Тогда Возврат; КонецЕсли; Если НЕ ЗначениеЗаполнено(Объект.Цвет) Тогда Возврат; КонецЕсли; Цвет= ЗначениеИзСтрокиВнутр(Объект.Цвет); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ВосстановитьЦвет(); // Вставить содержимое обработчика. КонецПроцедуры 5. &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Объект.Цвет=значениевстрокувнутр(цвет); ТекущийОбъект.Цвет=значениевстрокувнутр(цвет); КонецПроцедуры |
|||
23
prazdnik4334
06.02.13
✎
14:33
|
(22). Спасибо, во многом помогло.
|
|||
24
Михаил Козлов
06.02.13
✎
14:36
|
(23) Цвет можно хранить в 16-ом виде, т.е. без хранилища.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |