Конвертация относительных цветов в абсолютные (RGB)

Публикация № 1304206 04.10.20

Разработка - Работа с интерфейсом

WebЦвет WindowsЦвет АвтоЦвет ЭлементСтиля RGB HTML XSLT XDTO

Способ конвертации палитры относительных цветов 1С в абсолютные с помощью механизмов HTML, XSLT и XDTO.

Выражаю огромную благодарность автору AlexxSys за его публикацию Получение RGB (HEX) цвета.

 

Как известно в 1С цвета делятся по следующим видам:

  • WebЦвет (WebColor) - задается палитрой Web-цветов. Самая богатая палитра в которой можно найти цвета практически на любой вкус.
  • WindowsЦвет (WindowsColor) - задается палитрой операционной системы. Интересно на linux она пустая?)
  • АвтоЦвет (AutoColor) - контекстоно-зависимый цвет, который определятся платформой в зависимости от свойства объекта для которого он задается.
  • ЭлементСтиля (StyleItem) - Задается палитрой цветов стиля, которую определяет разработчик конфигурации.
  • Абсолютный (Absolute) -Произвольный цвет, который задается абсолютным значением сочетания красного, зеленого и синего компонента.

Проблема заключается в том, что только объект цвета с абсолютным видом содержит значения RGB компонент. По работе с столкнулся с проблемой, что нужно получить из любого вида цвета абсолютные значения RGB компонент. Очень помогла статья AlexxSys с выбором объекта, который умеет вытаскивать HEX значение переданного цвета. В начале экспериментировал с форматированной строкой, но выяснилось, что она не умеет доставать HEX из палитры Windows-цветов.

 

Представляю на суд общественности метод, который позволяется с помощью HTML, XSLT и XDTO получить массив цветов с абсолютными значениями RGB компонент. 

 

Немного о костылях

Почему-то цвет фона элемента форматированного документа не устанавливается первого раза. Так же обратил внимание, что автор оригинальной публикации тоже извращался с установкой цвета "ФорматированныйДокумент.Элементы[0].Элементы[0].ЦветФона = Цвет", возможно по той же причине. Если знаете, как победить эту напасть просьба написать в комментарии.

 

Процедура КонвертироватьСистемыеЦветаВАбсолютные(ПалитраЦветов)Экспорт 
	
	КонвертируемыеСтроки = Новый Массив;
	ФорматированныйДокумент = Новый ФорматированныйДокумент;
	
	// Подготовим список цветов
	Для Каждого СтрокаСписка Из ПалитраЦветов Цикл  
		
		Цвет = СтрокаСписка.Значение;
		Если Цвет.Вид = ВидЦвета.Абсолютный Тогда 
			Продолжить;
		КонецЕсли;
		
		Если ПустаяСтрока(СтрокаСписка.Представление) Тогда 
			СтрокаСписка.Представление = Строка(Цвет);
		КонецЕсли;
				
		Если Цвет.Вид = ВидЦвета.АвтоЦвет Тогда 
			
			// Авто цвет, можно узнать только из контекста использования
			СтрокаСписка.Значение = Новый Цвет(0, 0, 0);
			Продолжить;
			
		КонецЕсли;
		
		КонвертируемыеСтроки.Добавить(СтрокаСписка);
		
		Элемент = ФорматированныйДокумент.Добавить("Текст", Тип("ТекстФорматированногоДокумента"));
		Элемент.ЦветФона = Цвет;
		
		// Ошибка а платформе 8.3.15.1830, так же ошибка воспроизводится и на платформе 8.3.17.1549
		// Цвет устанавливается только со второго раза.
		Элемент.ЦветФона = Цвет;
		
	КонецЦикла;
				
	// Получим массив цветов
	ТаблицаСтилей = 
	"<xsl:stylesheet version=""1.0""  xmlns=""http://v8.1c.ru/8.1/data/core"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">   
	|	<xsl:output method=""xml"" version=""1.0"" encoding=""UTF-8"" indent=""yes""/>
	|	<xsl:template match=""/"">
	|		<Array xsi:type=""Array"">
	|		<xsl:for-each select=""/html/body//span"">
	|			<xsl:if test=""substring-after(@style, '#') != ''"">
	|				<Value  xmlns:d2p1=""http://v8.1c.ru/8.1/data/ui"" xsi:type=""d2p1:Color"">
	|				<xsl:text>#</xsl:text>
	|				<xsl:value-of select=""substring(substring-after(@style, '#'), 1, 6)""/>
	|				</Value>
	|			</xsl:if>
	|		</xsl:for-each>
	|		</Array>
	|	</xsl:template>
	|</xsl:stylesheet>";
	
	Процессор = Новый ПреобразованиеXSL;
	Процессор.ЗагрузитьТаблицуСтилейXSLИзСтроки(ТаблицаСтилей);
	
	СтрокаHTML = "";
	ФорматированныйДокумент.ПолучитьHTML(СтрокаHTML, Новый Структура);
	
	КонвертируемыеЦвета = Процессор.ПреобразоватьИзСтроки(СтрокаHTML);
	КонвертируемыеЦвета = ОбщегоНазначения.ЗначениеИзСтрокиXML(КонвертируемыеЦвета);
	
	// Заместим исходные цвета
	Индекс = 0;
	Для Каждого СтрокаСписка Из КонвертируемыеСтроки Цикл 
		
		СтрокаСписка.Значение = КонвертируемыеЦвета[Индекс];
		Индекс = Индекс + 1;
		
	КонецЦикла;
	
КонецПроцедуры

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ShiningPhoenix 25 04.10.20 10:02 Сейчас в теме
Полезный финт.
Делал что-то подобное лет 7 назад через раскрашенный таб. док. сохраненный в HTML и то подсмотрел у кого-то.
2. Diversus 2288 04.10.20 12:16 Сейчас в теме
(0) Недавно выложил свою разработку на эту тему
Универсальные функции для работы с цветом в 1С
Там есть функция, которая конвертирует любой цвет (HEX, WebЦвет, WindowsЦвет) в абсолютный цвет.
Да и вообще там много чего есть.
3. An-Aleksey 63 30.07.21 17:03 Сейчас в теме
Оставьте свое сообщение

См. также

Чистка пользовательских настроек динамического списка после удаления полей

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

После программной модификации, а именно удаления полей динамического списка, в пользовательском режиме, если у пользователя по этим полям были свои настройки списка (отборы, сортировки и т.д.) получаем ошибку о недоступности Полей: Параметры отбора, сортировки, группировки или список отображаемых полей заданы неверно.

20.02.2023    562    dovolos    0    

15

Использование языковой модели GPT3 для создания интерфейса 1С на естественном языке

Работа с интерфейсом Платформа 1С v8.3 1С:Управление торговлей 11 Бесплатно (free)

Я взял типовую конфигурацию УТ редакции 11.5 Немного доработал запрос к языковой модели GPT-3 и получил возможность обращаться к учетной системе на естественном языке

15.01.2023    9178    mkalimulin    121    

73

Визуализация таблицы значений на управляемой форме

Универсальные функции Работа с интерфейсом Платформа 1С v8.3 Россия Бесплатно (free)

Данная публикация описывает способ отражения на управляемой форме таблицы значений, с произвольным составом колонок, полученной на сервере. Как частный случай рассматривается отражение двумерного массива, с преобразованием его в таблицу значений.

02.11.2022    1352    bvb    2    

9

Разбор ошибок заполнения реквизитов формы объекта (мой топ-3)

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Идея статьи родилась в момент исправления очередной ошибки с заполнением реквизитов формы и особенно реквизитов табличных частей. Решил накидать небольшую шпаргалку и отсылаться к ней при необходимости.

30.08.2022    1848    zeltyr    4    

18

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

{UI/UX} Свой всплывающий информер у элемента формы

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Питничная фантазия на возможности в разработке интерфейсов формы с помощью Платформы 1С - делаем свою подсказку. Публикация содержит готовую библиотеку программного формирования данной подсказки.

12.08.2022    4529    rpgshnik    36    

81

Динамическая кнопка VS Комбинация клавиш

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Часто требуется ко всем формам или к списку форм привязать новые действия. Но как это сделать не меняя каждую форму и в идеале не меняя конфигурацию? Ниже будет описано, как запрограммировать новые действия через расширение (т.е. не меняя конфигурации) и сделать это универсально (не меняя каждую форму).

08.08.2022    5406    sapervodichka    33    

76

Программный вывод таблицы значений в таблицу на управляемой форме

Работа с интерфейсом Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Функционал данного механизма служит для программного вывода "Таблицы значений" в реквизит управляемой  формы с типом "ДанныеФормыКоллекция". Может быть полезен в задачах, где состав колонок выгружаемой таблицы значений может меняться.

15.04.2022    4962    ns_bulatov    5    

11

Восстановление пропавшего меню в интерфейсе с обычными формами без полной чистки кеша

Работа с интерфейсом Платформа 1С v8.3 Украина Бесплатно (free)

Как многим известно, пользователь в обычных формах может убрать любую панель из интерфейса так, что восстановить ее можно только чисткой кеша. Но как быть, если кеш жалко :?

21.12.2021    1580    bulpi    4    

13

Программный интерфейс для доработки форм

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Реализовал простой способ программного создания новых элементов, команд и реквизитов на форме.

25.11.2021    6349    AtamanovYS    19    

119

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Программно свернуть/развернуть узел динамического списка (с основной таблицей). Жирная точка над всеми "i".

Работа с интерфейсом Универсальные функции Платформа 1С v8.3 Бесплатно (free)

Какой пользователь не мечтал поменьше тыркать кнопкой? Особенно в малюсенькие +/- в "древесных" динамических списках. Если вас тоже озадачили, чтобы, при выборе узла дерева сами развернулись все его вложенные элементы , а при выборе другого узла - так же автоматом свернулась ранее развернутая ветка (причем эти узлы могут находится в разных "отношениях" друг с другом)... То вам - сюда.

08.10.2021    3540    e-9    13    

21

Как читать чужой код? Часть 4. Программный интерфейс. Исправление чужих доработок

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Во всех вакансиях есть требование - умение читать чужой код. Но ни на одних курсах специально этому не учат. Чтобы устранить это противоречие, пишу данную статью. Рассмотрю случаи, в которых нам необходимо разбирать чужой код, поймём, чей код мы пытаемся разобрать, зачем и, главное, как. В статье описан личный опыт длиною в 18 лет начиная с версии платформы 7.7. Статья будет большой, набираемся терпения). Статья содержит в себе описание сценариев разбора кода, т.е. набор шагов. В статье не получится показать это на практике. Для этого планирую сделать онлайн или оффлайн курс, где на примерах будет показан разбор незнакомого кода. Статья разбита на 4 публикации для удобства изучения.

20.09.2021    4476    biimmap    9    

51

Перенос расшифровки в пользовательские настройки

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Как перенести данные расшифровки в пользовательские настройки.

11.08.2021    1050    scientes    1    

9

Изменение размера картинок "на лету" с помощью NGINX

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Пример использования nginx и image_filter для сжатия картинок.

26.05.2021    2864    malikov_pro    21    

29

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Динамический список и поиск... неприятностей

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Страх и ненависть в поиске по динамическому списку, или "Кое-что о неоптимальном отборе".

17.03.2021    10370    Yashazz    37    

50

Пример работы с диаграммой Ганта в 1С

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Пример работы с очень нужным и важным, по моему мнению, объектом в 1С «Диаграммой Ганта».

24.02.2021    13196    JIEX@    4    

32

Программное условное оформление динамического списка, раскраска строк списка по цветам справочника или любым другим условиям (условное оформление)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Большое количество динамических списков на форме, большое количество условий, долгое интерактивное добавление условий, оформление по значению элементов справочников - всё это не позволяет использовать интерактивный режим назначения условного оформления динамического списка. В публикации с открытым кодом детально разберем программное решение назначения условного оформления, создадим универсальную функцию для оформления списка.

30.11.2020    15134    SizovE    6    

45

[mobile] Переносим HTML интерфейс на 1С

Работа с интерфейсом Мобильная разработка Платформа 1С v8.3 Мобильная платформа Конфигурации 1cv8 Бесплатно (free)

Разберем методы переноса HTML интерфейса на 1С на примере реализации нижнего меню для мобильного приложения. Сравним методы между собой. Данные методы можно применять не только для мобильной разработки, но и для веб-клиента и т.д

02.11.2020    12992    leobrn    82    

105

Быстрая кодогенерация программной доработки форм

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Данная статья является описанием идеи по быстрому получению кода для программной доработки форм. А также приглашением к участию в реализации данной идеи (даже звездочке на гите буду рад).

12.10.2020    3035    huxuxuya    29    

21

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

В курсе обобщен опыт работы аналитика на проектах в течение пяти лет, в нескольких фирмах. Подходы к написанию документов унифицированы и по возможности не привязаны к конфигурациям 1С.

3 500 рублей

Цветовая схема конфигуратора в стиле OneScript

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Цветовая схема конфигуратора 1С максимально приближенная к стандартной цветовой схеме OneScript в VS Code.

01.10.2020    2124    DmitrySinichnikov    4    

11

Рендеринг элементов управляемого интерфейса

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Россия Бесплатно (free)

Реализация отображения всего состояния формы проще, чем работа по изменениям. Однако использование идеи разделения алгоритмов на программные слои MVC и построения реактивных систем позволяет получить не только простые и масштабируемые решения, но и производительные интерфейсы. Рассмотрим примеры таких реализаций на основе использования фреймворка «Управление состоянием»: Информационная надпись, Заголовок формы, Свертываемая группа, Отключаемые панели.

22.09.2020    4919    kalyaka    5    

39

[Общий модуль] Динамическое формирование интерфейса

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Библиотека готовых функций для разработки интерфейса формы и размещения на нём элементов формы с помощью программного кода.

28.08.2020    28439    rpgshnik    87    

274

Медленно формируются отчеты в БП 3, способ исправления

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

При формировании любых отчетов, но в особенности оборотно-сальдовой ведомости в бухгалтерии 3, очень долго формировался отчет, ПОЯВЛЯЛСЯ ЖЕЛТЫЙ КОТ, разумеется у бухгалтера невроз, да и у меня тоже. Что только ни делал: тестирование и исправление с пересчетом итогов, настройка SQL, отключение фоновых заданий, обновление платформы и конфигурации, а толку нет, регламентные операции по скулю тоже сделал. И что же сделал, а вот что:

21.07.2020    4877    VID1234    10    

10

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Программное открытие отчета

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Памятка, как быстро создать простенький отчет, открываемый программно и с расшифровкой. Толстый/тонкий клиент.

28.06.2020    9535    da_1c    4    

9

Форма выбора (подбор) в управляемых формах

Универсальные функции Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    165012    user5300    37    

275

Форма выбора для реквизита с составным типом данных

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Возник вопрос: как открыть форму выбора для реквизита, имеющего составной тип данных, да еще и отображаемый в виде надписи?

11.03.2020    10628    rule_2    6    

20

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Предлагается ознакомиться с редким способом графического представления иерархических данных. Приводится алгоритм формирования и пример реализации.

18.02.2020    8277    randomus    20    

75

[Шпаргалка] Предустановка типа для составного реквизита

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Для реквизита составного типа необходимо ограничить список выбора типов.

18.02.2020    12684    rpgshnik    6    

25

СКД. Шаг 3. Используем макеты для оформления отчета

Работа с интерфейсом Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

В данной публикации рассмотрим базовый подход к использованию собственных макетов в СКД на примере формирования небольшого отчета.

13.01.2020    67082    aximo    23    

195

Добавление собственного поля и состояния в настройки доступности по состоянию в 1С:Документооборот

Работа с интерфейсом Платформа 1С v8.3 1С:Документооборот Бесплатно (free)

В данной публикации я хочу описать процесс добавления собственного поля и состояния в функционал настройки доступности по состоянию в 1С:Документооборот.

30.12.2019    8865    pavelpribytkin96    2    

23

Добавление собственного виджета в 1С:Документооборот

Работа с интерфейсом Платформа 1С v8.3 1С:Документооборот Бесплатно (free)

В данной публикации я хочу описать процесс добавления собственного виджета для функционала отсутствий в 1С документооборот.

14.12.2019    7416    pavelpribytkin96    2    

34

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

[СКД] Вывод картинки в результат любого отчета на СКД

Работа с интерфейсом Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Если у вас в справочнике Номенклатура (или другом справочнике) заполнена картинка, то ее можно легко вывести для наглядности отчета.

09.12.2019    15606    John_d    17    

119

Лайфхаки 1С. Настройка списков (Часть 3)

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Новая порция лайфхаков по работе с интерфейсом 1С. На этот раз разбираем работу со списками - учимся их упорядочивать, сортировать, создавать новые и перемещать старые. Это очень полезное дополнение к уже имеющимся знаниям по интерфейсу 1С.

03.12.2019    28766    VachKirp    14    

22

В новой платформе пропала кнопка "Печать". Имитируем БСП

Работа с интерфейсом Платформа 1С v8.3 Россия Бесплатно (free)

"Приятным" сюрпризом для многих пользователей 1С стало то, что при обновлении платформы (начиная с 8.3.15) полностью поменялся интерфейс. Можно долго спорить о целесообразности этого новшества, но самым главным минусом стало то, что пропали стандартные кнопки на панели инструментов. Разработчики предполагают повсеместное использование БСП, но что делать тем, кто давно и успешно использует самописные конфигурации, в которых формирование печатной формы происходит по ТабДок.Показать(), и не желает их "утяжелять"? Добавим общую форму с нужными нам кнопками.

03.12.2019    12075    Vlan    44    

24

Управляемые формы. Изменение формы списка или формы объекта без внесения изменений в типовые формы (без использования расширений)

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Вносим изменения в типовые формы объектов (документы, справочники, журналы, обработки, общие формы). Не снимая с поддержки эти формы. Создаем программно элементы из общего модуля. Для примера рассмотрю добавление колонки "Скрепка" в форму списка документа. Если к документу привязан файл, то в списке в новой колонке должна отображаться "скрепка".

12.11.2019    20652    John_d    29    

122

Локализация интерфейсов конфигураций. Практика и инструментарий 1Ci

Работа с интерфейсом Локализация решений Платформа 1С v8.3 Бесплатно (free)

В последнее время компания 1С International все увереннее заявляет о себе на международном рынке. Но для успешного продвижения в этом направлении необходима локализация интерфейсов конфигураций 1С. О том, как выглядит процесс перевода, какие инструменты для этого есть, где брать переводчиков и как проверять их работу, на конференции Infostart Event 2018 Education рассказал руководитель группы локализации компании 1Ci Сергей Поликарпов.

05.11.2019    7291    user1069006    2    

15