|
Как получить цифровое значение цвета из стиля? | ☑ | ||
---|---|---|---|---|
0
Nzzzz
14.08.20
✎
08:06
|
Нужно сделать так, чтобы пользователи по нажатию кнопки появлялся диалог с выбором цвета.
Вроде подходит этот вариант: Диалог = Новый ДиалогВыбораЦвета; Если Диалог.Выбрать() Тогда ВыбранныйЦвет = Диалог.Цвет; КонецЕсли; НО есть большое НО! Мне нужно получить выбранный цвет в формате значение: "200,0,0" Но с помощью метода выше у меня выбранный пользователем цвет получаю в формате стиля "стиль: Отрицательное число". (Кстати, если в этом диалоге я выбираю цвет не из списка, а снизу в полях "Зеленый", "Красный", "Синий" пишу цифры, то возвращаются цифры, а не стиль в случае когда я выбираю из списка) |
|||
1
Гипервизор
14.08.20
✎
08:28
|
||||
2
Волшебник
14.08.20
✎
08:28
|
Цвет.Красный
Цвет.Зеленый Цвет.Синий |
|||
3
Nzzzz
14.08.20
✎
08:30
|
(2)
-1 -1 -1 |
|||
4
Nzzzz
14.08.20
✎
08:31
|
Сделала так:
&НаКлиенте Процедура Команда1(Команда) Диалог = Новый ДиалогВыбораЦвета; Если Диалог.Выбрать() Тогда ВыбранныйЦвет = Диалог.Цвет; КонецЕсли; Если Диалог.Цвет.Вид = ВидЦвета.ЭлементСтиля Тогда Команда1НаСервере(ВыбранныйЦвет); КонецЕсли; КонецПроцедуры &НаСервере Процедура Команда1НаСервере(ВыбранныйЦвет) ОбъектМетаданныхСтиля = Метаданные.ЭлементыСтиля.Найти(Сред(Строка(ВыбранныйЦвет), 8)); Если ОбъектМетаданныхСтиля <> Неопределено Тогда Цвет = ОбъектМетаданныхСтиля.Значение; КонецЕсли; КонецПроцедуры НО вот здесь не находит ничего: "ОбъектМетаданныхСтиля = Метаданные.ЭлементыСтиля.Найти(Сред(Строка(ВыбранныйЦвет), 8));" |
|||
5
Гипервизор
14.08.20
✎
08:31
|
(2) Если бы ((
"Если цвет задан не абсолютным, то содержит -1" |
|||
6
Волшебник
14.08.20
✎
08:32
|
Надо проверить ВидЦвета и если там АвтоЦвет или ЭлементСтиля, то лезть в метаданные
|
|||
7
Nzzzz
14.08.20
✎
08:33
|
(6) ЭлементСтиля
|
|||
8
Nzzzz
14.08.20
✎
08:33
|
(5) Вот вот((
|
|||
9
Волшебник
14.08.20
✎
08:35
|
А это работает? Взято из (1)
// // Add_ComM_ОАС_КС.ПолучитьАбсолютныйЦвет(ИсходныйЦвет); // Функция ПолучитьАбсолютныйЦвет(ИсходныйЦвет) Экспорт Если ИсходныйЦвет.Вид = ВидЦвета.Абсолютный Тогда Возврат ИсходныйЦвет; КонецЕсли; ТабДок = Новый ТабличныйДокумент; ТабДок.Область("R1C1").ЦветФона = ИсходныйЦвет; ТабДок.Записать("ПреобразованиеЦвета.mxl", ТипФайлаТабличногоДокумента.MXL7); ТабДок.Прочитать("ПреобразованиеЦвета.mxl"); АЦвет = ТабДок.Область("R1C1").ЦветФона; Возврат АЦвет; КонецФункции // // Add_ComM_ОАС_КС.ПолучитьСтроку10АбсолютногоЦвета(АЦвет); // Функция ПолучитьСтроку10АбсолютногоЦвета(АЦвет) Экспорт // Форматная строка составляющей цвета ФсСц = "ЧЦ=3; ЧН=; ЧВН=; ЧГ="; // Допустим, что АЦвет равен (0, 0, 0) или (24, 15, 255). Где составляющие цвета - это числа RGB10 = Формат(АЦвет.Красный, ФсСц) + "," + Формат(АЦвет.Зеленый, ФсСц) + "," + Формат(АЦвет.Синий , ФсСц); // Для примера выше получим строки "000,000,000" или "024,015,255", т.е. строго фиксированные строки. Возврат RGB10; КонецФункции |
|||
10
Nzzzz
14.08.20
✎
08:38
|
(9) Попробую сейчас
|
|||
11
Nzzzz
14.08.20
✎
08:41
|
(9)
Ошибка при вызове метода контекста (Записать) ТабДок.Записать("ПреобразованиеЦвета.mxl", ТипФайлаТабличногоДокумента.MXL7); по причине: Ошибка доступа к файлу 'ПреобразованиеЦвета.mxl' |
|||
12
Nzzzz
14.08.20
✎
08:50
|
(11) Куда мне этот файл надо? что с ним сделать?
|
|||
13
youalex
14.08.20
✎
08:53
|
(12) без разницы. Идея в том, что при записи табдока цвет стиля в его ячейке становится абсолютным.
|
|||
14
Nzzzz
14.08.20
✎
08:57
|
(13) ну это понятно, что при записи становится абсолютным)
Но от ошибки то как избавиться?) |
|||
15
youalex
14.08.20
✎
09:01
|
(14) например:
ИмяФайла = ПолучитьИмяВременногоФайла("epf"); ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.MXL7) ну или в Поток можно попробовать записать/прочитать |
|||
16
Nzzzz
14.08.20
✎
09:05
|
Получииилось!!!
Спасибо каждому!!))) |
|||
17
lucbak
14.08.20
✎
09:08
|
&НаСервере
Функция АбсолютныйЦвет(Цвет) Экспорт Если Цвет.Вид=ВидЦвета.Абсолютный Тогда Возврат Цвет; КонецЕсли; Поток=Новый ПотокВПамяти; ТабличныйДокумент=Новый ТабличныйДокумент; ТабличныйДокумент.Область("R1C1").ЦветФона=Цвет; ТабличныйДокумент.Записать(Поток, ТипФайлаТабличногоДокумента.MXL7); ТабличныйДокумент.Прочитать(Поток.ЗакрытьИПолучитьДвоичныеДанные().ОткрытьПотокДляЧтения(), СпособЧтенияЗначенийТабличногоДокумента.Значение); Возврат ТабличныйДокумент.Область("R1C1").ЦветФона; КонецФункции |
|||
18
Nzzzz
14.08.20
✎
09:16
|
(17) Спасибо)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |