Загрузка, редактирование и установка цветовых схем (раскраски кода) в Конфигуратор и EDT

Публикация № 1236182

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

Цветовые схемы раскраска кода Конфигуратор EDT

В современных IDE и текстовых редакторах есть удобная работа с цветовыми схемами: их можно загружать из файлов, выбирать из списка и сразу устанавливать в оболочку. К сожалению, в Конфигураторе и EDT цвета кода можно настроить только вручную. Этой разработкой хочу исправить эту проблему.

Введение

Наверное, во мне умер один дизайнер, но меня хлебом не корми, дай с цветами поиграться. Я давно еще нашел набор цветов темы Solarized для конфигуратора, настроил себе и был счастлив. Но потом, когда начал работать в Android Studio из семейства IDEA, я увидел, сколько бывает разных цветов схем, нашел сайты, посвященные им, и пропал надолго. Вот бы такое в конфигураторе, подумал я, и взялся за разработку.

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

 

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

 

 
 Неважная информация о разработке

 

Описание функционала

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

Рассмотрим основное окно обработки:

В заголовке формы пишется название текущей цветовой схемы (1). При открытии будут выбраны схемы, которые сейчас установлены в Конфигураторе и EDT, и в заголовке будет указано <Default>.

Слева располагается три типа источников (2), при открытии выбрано расположение Локально. В данном случае в списке (4) появятся все подходящие файлы цветовых схем (с расширениями csi, jar, icls, xml, tmtheme), которые вы скачаете из Интернета (ссылки в конце статьи) и положите в папку (3).

Жирным выделены файлы *.csi, специального формата именно для этой обработки, которые создаются через кнопку (10). Используя эти файлы, вы можете сохранять в избранное понравившееся вам схемы, отредактированные вами схемы, переносить раскраску на другой компьютер, может, даже делиться с кем-то схемой.

Обработка предназначена как для конфигуратора, так и для EDT, поэтому правая часть экрана, относящаяся к конкретным IDE, переключается вкладками (5). Для каждой области используется свой функционал, за исключением кнопки (10), она сохраняет настройки сразу по обеим IDE.

При смене текущей строки в списке (4), тут же меняется пример кода на русском и английском в поле (6) и используемая палитра (7). В примере кода использованы, по возможности, все варианты лексем, чтобы можно было увидеть полную палитру цветов.

При клике на части кода в (6) можно спозиционироваться на соответствующем цвете в (7) и поменять его, если текущий вариант вас не устраивает. Можно задать цвет RGB вручную или выбрать один из веб-цветов. А можно вообще психануть и поменять все цвета на противоположные через кнопку (8).

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

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

После того, как вы выбрали и, может, подправили схему, ее можно загружать в Конфигуратор с помощью кнопки (9). После нажатия вам надо будет в качестве подтверждения выбрать файл настроек 1cv8.pfl. Он у вас будет отображаться один среди папок. Есть небольшая вероятность, что у вас настройки берутся из предыдущей версии 1С, и в открывшейся папке файла не будет. Тогда следует посмотреть файл в рядом лежащей папке 1Cv81 или 1Cv82. После записи нужно просто перезапустить Конфигуратор, и вы увидите код в новой цветовой схеме.

При первом запуске обработки, у вас, конечно, список (4) будет пуст, но можно даже ничего не качать, для этого есть еще две вкладки (2).

 

На этих вкладках идет подключение к сайтам (4) с цветовыми схемами для IDEA и Sublime, и динамическое получение списка схем по API. В списке (3) появляется оформление строк, так можно сразу понять, это будет светлая или темная схема.

В верху списка находятся кнопки сортировки (1). Можно отсортировать список по названию, по "светлости" и по популярности (количестве загрузок). Также можно искать схему по названию.

По умолчанию идет сортировка по популярности и выбирается TOP-100 схем (2). Вы можете изменить это число, всего на сайте сейчас представлено более 600 схем, однако при большом числе выборки будет более долгая загрузка.

Для сайта по Sublime все тоже самое, только произойдет загрузка сразу всех 600 - 700 схем, и не будет сортировки по популярности. Если сравнивать эти вкладки, то, вроде, удобней работать с IDEA, т.к. тут показываются сразу популярные схемы. Для Sublime же поиск будет сложнее, некоторые позиции даже не будут открываться, из-за удаленного репозитория или схемы неверного формата, однако там встречаются "жемчужины", которые идеально ложатся на 1С, особенно, EDT.

В правой части можно увидеть вариант для EDT. Здесь уже другой пример кода (5) и палитра (6), на которой столько цветов, что они не поместились в одном списке. И это не полный список, особо редкие случаи я еще не покрыл, думаю, добавлю их в следующих версиях.

Чтобы считывалась текущая цветовая схема, и можно было загружать новые, необходимо указать путь к рабочей области (Workspace) EDT (7). Дальше можно сохранять настройки (8). Вас попросят подтвердить перезапись двух файлов, но перед этим нужно будет закрыть саму EDT.

 

 
 Лирическое отступление на тему темных тем

 

Что дальше?

Надеюсь, это решение пригодится разработчикам, и вы сами предложите варианты развития обработки. Однако, что я вижу сейчас, это возможность играться не только с цветами, но и со шрифтами. В Конфигураторе можно выбрать шрифт только для всего кода, а в EDT можно настраивать стиль написания для каждой лексемы отдельно. Например, ключевые слова жирным, директивы - курсивом. Это также повышает визуальную составляющую кода. И хорошо, что в цветовых схемах, что я подключил, есть описание таких настроек, так что нужно будет добавить эти настройки и их загрузку из источников.

 

Благодарности

Конечно, моя разработка не является чем-то совсем уникальным и не родилась на пустом месте. Поэтому я хотел бы поблагодарить:

  • Автора с ником Ramz и его Визуальный редактор цветовых схем. У него я подсмотрел как можно распарсить файл настроек Конфигуратора и как оформить предпросмотр кода.
  • Никиту Грызлова и его разработку Подсветка синтаксиса 1С в текстовых редакторах. Благодаря плагину для Sublime, я увидел, как круто может выглядеть код 1С, когда его хорошенечко покрасишь, и окончательно загорелся своей разработкой.
  • Nakonechniy Dmitry, который разместил публикацию Приятная глазу цветовая схема, а именно Solarized. Здесь я впервые понял, что код в 1С можно раскрасить по-другому, и это будет круто.

 

Ссылки

Адреса сайтов, на которых можно скачать цветовые схемы для IDEA и Sublime, т.е. подходящие для этой обработки:

Скачать файлы

Наименование Файл Версия Размер
ColorSchemesInstaller
.epf 39,04Kb
14.05.20
42
.epf 1.1.1 39,04Kb 42 Скачать

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

Лучшие комментарии
14. CyberCerber 496 19.05.20 11:33 Сейчас в теме
(13)
В конфигураторе - половина окон белая осталась, например окно объектов конфигурации, сообщений, СКД

Да, конечно, это так и останется. Все эти окна не относятся к области кода. Это тема среды, а она в Конфигураторе только одна :-(

Прикрепляю файл с настройками цветовой схемы по умолчанию, если надо. А в pfl не JSON, там собственный 1Совский формат.
Прикрепленные файлы:
Default.csi
GOshaSaveiko; +1 Ответить
Остальные комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Snitkovski 87 14.05.20 18:28 Сейчас в теме
Константин = кр-р-расавчик!
LIKE однозначно!
и "Маней" проголосую! 8-)
2. user817897 14.05.20 23:45 Сейчас в теме
3. SirStefan 41 15.05.20 03:46 Сейчас в теме
Скачанные темы победительницы конкурса для IDEA за 2019 год не заработали. Оказалось, что программа ищет только в папке "/colors" архива, а в файлах они то в "/themes", то вообще в корне.
Изменение в процедуре ReadIDEAFile строки
	//if ZipItem.Path = "colors\" and ZipItem.Name <> "" then             
	if ZipItem.Path <> "META-INF\" and ZipItem.Name <> "" and ZipItem.Extension = "xml" then
поправило ситуацию.
Из пожеланий:
Неплохо было бы кнопку сохранения текущей схемы (конечно можно сохранить pfl вручную, но не каждый подумает об этом заранее).
В некоторых jar есть различные варианты раскраски (тот же Gradianto из победителей). Хотелось бы обрабатывать не первый файл из архива, а все и выводить как варианты.
TreeDogNight; +1 Ответить
4. CyberCerber 496 15.05.20 11:20 Сейчас в теме
(3) Да, забыл написать, что там файлы jar в другом формате, нужно вручную распаковывать. А, интересное решение, спасибо. Но там еще бывает несколько схем, верно. В общем, т.к. это формат архива редкий, я решил пока не делать для него парсер. Наверное, сделаю в будущих версиях
6. SirStefan 41 15.05.20 11:25 Сейчас в теме
(4), половинчатое решение оказалось. Есть архивы с *.xml без блока color. Похоже нужно все таки перебирать все xml в файле и проверять ещё, есть ли у них блок color.
5. CyberCerber 496 15.05.20 11:22 Сейчас в теме
(3) Когда только открыли обработку, в ней активна текущая тема, можете сохранить ее в файл csi, нажав кнопку снизу. Еще думаю сделать, чтобы эта тема была всегда в списке, а не только при открытии.
7. P_enemy 24 15.05.20 11:36 Сейчас в теме
Хороший инструмент.

Небольшой недочет: в темных темах "точку" плохо видно или совсем не видно, если фон почти черный. "Точка" не отнесена ни к одному классу в макете HTML и по умолчанию черная. Добавил ее в класс "Operators", стало на много лучше.
8. CyberCerber 496 15.05.20 11:37 Сейчас в теме
(7) Ммм, спасибо, вроде, разносил ее. Наверное, в процессе исправлений что-то потерялось. В новой версии сделаю
9. GOshaSaveiko 30 15.05.20 15:36 Сейчас в теме
Работает даже на платформе 8.3.13 в режиме совместимости 8.3.8
При запуске выдает ошибку:
{ВнешняяОбработка.ColorSchemesInstaller.Форма.Form.Форма(225,5)}: Процедура или функция с указанным именем не определена (StrStartsWith)
if <<?>>StrStartsWith(Item.Name, "Des") then (Проверка: Тонкий клиент)

Надо только вручную дорисовать функцию в хвост:
&AtClient
function StrStartsWith(SourceString, Substring)
	strl = StrLen(SourceString);
	return ?(Left(SourceString,strl) = Substring, true, false);
endfunction
10. CyberCerber 496 15.05.20 16:22 Сейчас в теме
(9) Да, из-за этой функции и написал про режим совместимости. Кстати, если написать просто СтрНачинаетсяС, должно и с 8.3.6 заработать, она тогда появилась. Наверное, просто английский аналог забыли добавить или назвали по-другому...
Но я рад, что вы не нарушили стиль :-) Можно даже еще короче: return Left(SourceString, strl) = Substring
А на платформе 8.3.13 не пропала кнопка сортировки по цвету? И отступы в примере кода остались?
13. GOshaSaveiko 30 19.05.20 09:35 Сейчас в теме
(10)
return Left(SourceString, strl) = Substring

Да, я иногда пользуюсь этим, хотел даже поправить, но коммент на редактирование уже был закрыт.

Кнопка сортировки по цвету отображается без иконки, но, вроде как, работает. Отступы в превьюхе отсутствуют.

Ещё не хватает кнопки "вернуть стандарт". Я купил обработку, попробовал, но мне результат не понравился. В конфигураторе - половина окон белая осталась, например окно объектов конфигурации, сообщений, СКД (я понимаю, что не всё зависит тут от вас). Просто удалил файл pfl, чтобы он пересоздался. Хотя можно было удалить кусок JSON из pfl - но лень разбираться.
14. CyberCerber 496 19.05.20 11:33 Сейчас в теме
(13)
В конфигураторе - половина окон белая осталась, например окно объектов конфигурации, сообщений, СКД

Да, конечно, это так и останется. Все эти окна не относятся к области кода. Это тема среды, а она в Конфигураторе только одна :-(

Прикрепляю файл с настройками цветовой схемы по умолчанию, если надо. А в pfl не JSON, там собственный 1Совский формат.
Прикрепленные файлы:
Default.csi
GOshaSaveiko; +1 Ответить
11. unichkin 1248 17.05.20 23:33 Сейчас в теме
Добрый день! Решается ли проблема раскраски областей в EDT? Я сколько не морочился с настройкой цвета - области воспринимаются как инструкции препроцессора, а идентификаторы областей - нет. И вот такая печальненькая картинка, в объемных текстах неудобно ориентироваться. Стал подкрашивать фон области, чтобы видеть отличие от метода.
Прикрепленные файлы:
12. CyberCerber 496 18.05.20 11:25 Сейчас в теме
(11) Да, к сожалению, это никак не решить. Почему-то отнесли название области к идентификаторам. Ну, оно-то и понятно, это и есть идентификатор, но в конфигураторе наглядней получается. Может, изменят подход в будущих версиях.
15. nicxxx 236 19.05.20 12:35 Сейчас в теме
Разработка огонь! Вдохнул второе дыхание в конфигуратор :) Я конечно и до этого пользовался своей цветовой схемой, но удобство настройки через данную обработку выше всяких похвал.
16. Synoecium 683 19.05.20 16:11 Сейчас в теме
Класс!
Кривовато работает диалог вывода цвета - приходится переводить фокус на числовые значения, потому что если просто выбирать цвет из списка, то он не применяется в обработке.
17. CyberCerber 496 19.05.20 16:21 Сейчас в теме
(16) Это стандартный диалог выбора цвета. Не работают только цвета стиля, веб-цвета в числовые превращаются
18. Synoecium 683 20.05.20 08:25 Сейчас в теме
(17) цвет стиля тоже можно выудить, насколько я знаю. Вот пример: https://infostart.ru/public/484812/
Сообщения про то, что цвет стиля не поддерживается у меня не видно, может стоит сделать через СообщениеПользователю?
19. CyberCerber 496 20.05.20 11:15 Сейчас в теме
(18) Спасибо за ссылку, посмотрю
Странно, у вас никаких сообщений не видно? А какая платформа?
20. frkbvfnjh 579 01.06.20 09:09 Сейчас в теме
Когда новую версию выложите со всеми правками? А то судя по датам, все замечания в комментах сделаны после последней даты обновления...
21. CyberCerber 496 01.06.20 11:24 Сейчас в теме
(20) Да у меня даже и не было обновления, только пока первоначальная версия. Хочу, конечно, выпустить, но не могу пока найти время из-за дел. Надеюсь, на следующей неделе. А чего не хватает в текущей версии?
22. frkbvfnjh 579 01.06.20 13:00 Сейчас в теме
(21) Ну вот к примеру в (3) сообщении вроде правки делали какие-то, плюс может совместимость с более низкими версиями платформы сделаете, дописав нужные функции.
23. CyberCerber 496 01.06.20 13:14 Сейчас в теме
(22) Вы как раз перечислили те функции, которые пока не ожидаются в следующем обновлении. В (3) рассказано об особых цветовых схемах, котрые составляют 1% от общего числа схем, и разархивировав их, они заработают.
По поводу функций, я не повлияю на саму платформу, только на режим совместимости. На более старой платформе заработает, но будет не так красиво.
Я это к тому, что вы можете скачать и текущую версию, она работает, как мне кажется, вполне хорошо.
А какая у вас версия платформы?
24. frkbvfnjh 579 01.06.20 13:37 Сейчас в теме
(23) Мы до сих пор активно используем 8.3.10 в силу определенных обстоятельств. Но думаю скачаю, т.к. Ваша разработка пока самая адекватная из всех, что встречал. И прикрепите файл Default.csi прям в статью, пока не добавили кнопку сброса темы, я думаю так было бы удобнее читателям.
25. CyberCerber 496 01.06.20 13:43 Сейчас в теме
(24) Т.е. у вас именно сама платформа 8.3.10 и новее нет? Сейчас открыл у себя, работает, только некоторое оформление сбилось.
Сделал пока ответ лучшим, он выделился и вверх поднялся.
26. frkbvfnjh 579 01.06.20 13:57 Сейчас в теме
(25) Все проблемы решаемы, конечно сама платформа новая есть, можно установить, просто хотелось бы иметь самую совершенную версию обработки :)
27. SirStefan 41 01.06.20 17:24 Сейчас в теме
(24), у меня с ходу все заработало на 8.3.9
Только в коде СтрНачинаетсяС заменил русским вариантом и все.
28. CyberCerber 496 01.06.20 17:27 Сейчас в теме
(27) Кстати, там прикол в том, что изначально функцию назвали StrStartWith, потом поняли, что есть грам. ошибка и переименовали в StrStartsWith.
Так что достаточно только одну s убрать.
Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

14.02.2015    99310    96    daMaster    88    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    3679    4    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    3982    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    7557    6    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

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

26.08.2013    260927    0    Evil Beaver    266    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    27966    1    CheBurator    61