Протестировано на пустой БД с версией платформы 1С 8.3.17.1549.
Предназначено для использования в любой базе данных 1С.
Возможности:
Преобразование цвета любого вида в цвет любого другого вида при помощи следующих методов:
- ОпределитьАбсолютныйЦвет(Цвет) - преобразует переданный цвет любого вида в абсолютный цвет;
- НайтиWebЦвет(Цвет) - ищет переданный цвет любого вида среди набора WebЦвета;
- НайтиЦветСтиля(Цвет) - ищет переданный цвет любого вида среди набора ЦветаСтиля;
- НайтиWindowsЦвет(Цвет) - ищет переданный цвет любого вида среди набора WindowsЦвета.
Получение массива Web-цветов, Цветов стиля или Windows-цветов без использования макетов или заранее предопределённых списков соответствующими методами:
- ПолучитьWebЦвета()
- ПолучитьЦветаСтиля()
- ПолучитьWindowsЦвета()
Описание:
Основной принцип преобразования цветов из одного вида в другой в данной обработке заключается в использовании методов ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр().
Так, например, внутренние значения цветов WebЦвета.Белый и WebЦвета.Черный соответственно выглядят следующим образом:
{"#",9cd510c7-abfc-11d4-9434-004095e12fc7,2,{3,2,{143}}}
{"#",9cd510c7-abfc-11d4-9434-004095e12fc7,2,{3,2,{8}}}
Как видно, в структуре полученных данных содержится внутренний индекс цвета: 143 - для белого цвета, и 8 - для чёрного цвета. Опытным путём было обнаружено, что для каждой коллекции существует свой диапазон внутренних индексов:
- WebЦвета: от 1 до 146
- ЦветаСтиля: от -1 до -47 (значения цветов для некоторых индексов оказались пустыми)
- WindowsЦвета: от -2 до 28 (кроме 25)
Таким образом, зная внутренний индекс цвета, можно получить цвет из любого набора путем подстановки этого индекса во внутреннюю строку.
Например, внутренний индекс жёлтого цвета для набора WebЦвета равен 145, следовательно внутренняя строка имеет вид:
ВнутренняяСтрока = "{""#"",9cd510c7-abfc-11d4-9434-004095e12fc7,2,{3,2,{" + 145 + "}}}";
Теперь, чтобы получить цвет набора WebЦвета необходимо воспользоваться методом ЗначениеИзСтрокиВнутр():
ЖелтыйЦвет = ЗначениеИзСтрокиВнутр(ВнутренняяСтрока);
В результате в переменной "ЖелтыйЦвет" будет содержаться значение WebЦвета.Желтый. Аналогичным образом получаются цвета для других наборов (ЦветаСтиля и WindowsЦвета).