Преобразование RGB to HEX, HEX to RGB через функции работы с двоичными данными

05.07.18

Разработка - Универсальные функции

В платформе 8.3.11 появились новые функции ПобитовоеИ, ПобитовоеИли и т.д. Хочу на их примере показать, как можно преобразовать цвет RGB в HEX и обратно.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Преобразование RGB to HEX, HEX to RGB:
.epf 6,50Kb
2 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Обработка конвертирует цвет RGB (155, 25, 34) в формат HEX (#9B1922) и обратно.

В обработке используются новые функции работы с двоичными данными платформы 8.3.11 (ПобитовоеИли, ПобитовыйСдвигВлево, ЧислоИзШестнадцатеричнойСтроки).

Тестирование проводилось на платформае: 1С:Предприятие 8.3 (8.3.11.2954).

Важно! У конфигурации установить режим совместимости не ниже 8.3.11 или "Не использовать".

&НаКлиенте
Процедура ВыполнитьПреобразование()
	
	HEX = RGB_HEX(Red, Green, Blue);
	
	RED   = ЧислоИзШестнадцатеричнойСтроки("0x" + Сред(HEX, 2, 2)); 	
	GREEN =	ЧислоИзШестнадцатеричнойСтроки("0x" + Сред(HEX, 4, 2));
	BLUE  = ЧислоИзШестнадцатеричнойСтроки("0x" + Сред(HEX, 6, 2));
	
	RGB   = Строка(RED) + ", " + Строка(GREEN) + ", " + Строка(BLUE);
	
КонецПроцедуры

&НаКлиенте
Функция RGB_HEX(Знач Red, Знач Green, Знач Blue)
	
	Возврат "#" + Сред(DecToAny(ПобитовоеИли(ПобитовоеИли(ПобитовоеИли(Blue, ПобитовыйСдвигВлево(Green, 8)), ПобитовыйСдвигВлево(Red, 16)), ПобитовыйСдвигВлево(1, 24)), 16), 2);
	
КонецФункции

&НаКлиенте
Функция DecToAny(Знач тЗначение, тОснование)
	
	тРезультат = "";
	
	Пока тЗначение > 0 Цикл
		тРезультат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", тЗначение%тОснование + 1, 1) + тРезультат;
		тЗначение = Цел(тЗначение/тОснование) ;
	КонецЦикла;
	
	Возврат тРезультат;
	
КонецФункции

Функцию преобразования из 10 в любую систему исчисления взял отсюда:

https://1c-programmer-blog.ru/programmirovanie/konvertaciya-chisla-v-razlichnye-sistemy-ischisleniya-v-1s.html

Вступайте в нашу телеграмм-группу Инфостарт

Программный код пример преобразования RGB to HEX

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    3822    Abysswalker    9    

46

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

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

14.05.2025    7196    DeerCven    15    

60

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    51175    dimanich70    83    

172

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7517    7    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    64843    atdonya    31    

70

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    9399    ke.92@mail.ru    17    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. skyadmin 80 01.12.22 16:02 Сейчас в теме
Добавлю перевод из десятичной (Excel хранит цвет в таком формате) в RGB

Функция DEC_RGB(DEC)Экспорт
	RED = (DEC% 65536) % 256;
	GREEN = Цел((DEC% 65536) / 256);
	BLUE = Цел(DEC/ 65536);
	Возврат Новый Цвет(RED, GREEN, BLUE);
КонецФункции
2. asoiko 11 21.07.23 17:58 Сейчас в теме
Спасибо, но у вас ошибка. Правильно так.
RED = ЧислоИзШестнадцатеричнойСтроки("0x" + Сред(HEX, 1, 2));
GREEN = ЧислоИзШестнадцатеричнойСтроки("0x" + Сред(HEX, 3, 2));
BLUE = ЧислоИзШестнадцатеричнойСтроки("0x" + Сред(HEX, 5, 2));
Для отправки сообщения требуется регистрация/авторизация