Раскраска кода 1С [онлайн]

Опубликовал Дмитрий Башинский (bashinsky) в раздел Программирование - Инструментарий

Еще одна раскраска кода 1С онлайн для вставки в html-страницу

Алгоритм раскраски взят из стандартной 1Совской обработки РаскраскаКода.epf, переписан на php, с небольшими доработками по раскраске кода, чего не хватает в обработке.  Код для раскрашивания ограничен 30000 символами, так как этого, я думаю, выше крыши. По крайней мере, я не видел статьи, где кода 1С было свыше 3000 строк. Если кому понадобится раскрасить больше, то код для html-страницы можно вручную отредактировать и соединить в один общий код.  Онлайн раскраску писал для себя, так как постоянно иметь под рукой обработку раскраски не получалось. Предупреждаю сразу, что код 1С раскрашивается, если он написан синтаксически верно. И не надо проверять ее (онлай раскраску) на незакрытые кавычки, код из других языков и т.п. и потом в комментариях писать про эти ошибки. Ведь в статьи вставляют уже готовый, работающий код. Если же будут существенные ошибки в алгоритме раскраски верного кода, буду рад, если напишите в комментариях, можно здесь, можно на сайте раскраски.

Об раскраске: 

На станице раскраски имеются два поля: для кода, который надо раскрасить и для кода который получяется после раскраски, который можно сразу вставлять в html-страницу. 

Справа выводится результат раскрашивания, здесь можно стазу посмотреть как раскрасился код.

Ссылка на сайт раскраски http://likion.ru/color1c/index.php

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

Наименование Файл Версия Размер
php скрипт для сайта
.zip 3,88Kb
02.10.16
3
.zip 3,88Kb 3 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Дмитрий Башинский (bashinsky) 85 06.05.14 09:27 Сейчас в теме
возникшие ошибки раскраски рабочего кода буду исправлять по мере возможности
2. Виталий Барилко (Diversus) 2209 06.05.14 11:09 Сейчас в теме
(1) Было бы удобно на свой сайт скопировать и пользоваться когда нужно и не искать в интернете, где же я встречал онлайн раскраску.
Если не трудно и не жалко, выложите пожалуйста php-скрипт.
u_n_k_n_o_w_n; +1 Ответить 2
3. Дмитрий (gislink) 34 07.05.14 11:41 Сейчас в теме
Внутри чисел точка красная, а должна быть черная ;-)
4. Дмитрий (gislink) 34 07.05.14 11:45 Сейчас в теме
Символы "#" и "&" красят строку в коричневый, только если они являются первым значащим символом в строке, а у Вас - где угодно.
5. Дмитрий (gislink) 34 07.05.14 11:52 Сейчас в теме
про "enddo" забыл ;-)
все, 3 косячка нашел, пойду покурю.
6. Дмитрий (gislink) 34 07.05.14 12:07 Сейчас в теме
А вот вопрос еще гложет: по-моему лишнего там span-ов открывается/закрывается. Если одно слово красным, и другое за ним красным - зачем перед пробелом закрывать старый span, а после открывать новый точно такой же, пробел то пофиг каким цветом рисовать.
7. Дмитрий (gislink) 34 07.05.14 12:13 Сейчас в теме
хехе, а если в строках попадаются спецсимволы HTML (типа "&" или " ") - то ваще беда, да...
8. Дмитрий (gislink) 34 07.05.14 12:14 Сейчас в теме
+(7) похоже и у Инфостарта та же проблема, я писал &a_m_p; и &n_b_s_p; ;-)
9. Дмитрий (gislink) 34 07.05.14 12:20 Сейчас в теме
с датами в одинарных кавычках беда.
10. Вадим Латышев (pro1c@inbox.ru) 154 07.05.14 12:44 Сейчас в теме
Возьмите CopyPaster1C, там все раскрашено!
http://infostart.ru/public/199364/
11. Роман Ложкин (webester) 21 08.05.14 13:58 Сейчас в теме
(2)Используйте на своем сайте highlight.js он раскрашивает как нужно, без каких либо ограничений(код раскрашивается на клиенте, поэтому серверу наплевать на объем кода). Еще есть питоновская библиотека pygments очень удобная. Если есть необходимость, можно запилить статическую страничку, для раскраски кода. Делов не очень много. Я баловался когда тоже раскраской кода, написал пастебин 1с.
12. Дмитрий Башинский (bashinsky) 85 10.05.14 22:32 Сейчас в теме
(5) gislink,
про "enddo" забыл ;-)

Это исправил, лишний пробел был в проверочной строке
13. Дмитрий Башинский (bashinsky) 85 10.05.14 22:56 Сейчас в теме
(4) gislink,
Символы "#" и "&" красят строку в коричневый, только если они являются первым значащим символом в строке, а у Вас - где угодно.

Если эти символы попадаются и они стоят не в кавычках, то после них все остальное красится в коричневый - так у меня. В 1С - если они стоят с начала. Но если в 1С поставить эти символы в середину строки, то будет ошибка.
Для примера.
Правильно:
а=1;
#Если Клиент Тогда
#КонецЕсли

Неправильно:
а=1;#Если Клиент Тогда
#КонецЕсли

Повторюсь, раскраска выполняется синтаксически верного текста, а не идет проверка его на синтаксис.
14. Дмитрий Башинский (bashinsky) 85 10.05.14 22:57 Сейчас в теме
(7) gislink,
хехе, а если в строках попадаются спецсимволы HTML (типа "&" или " ") - то ваще беда, да...

Можно пример?
15. Дмитрий Башинский (bashinsky) 85 10.05.14 22:58 Сейчас в теме
(9) gislink,
с датами в одинарных кавычках беда.

Исправлено
16. Дмитрий Башинский (bashinsky) 85 10.05.14 23:03 Сейчас в теме
(3) gislink,
Внутри чисел точка красная, а должна быть черная ;-)

Это косяк 1Совской обработки, который перешел сюда. Позже исправлю.
17. Дмитрий Башинский (bashinsky) 85 10.05.14 23:15 Сейчас в теме
(11) webester, будет время, разберусь и с JavaScript.
18. Дмитрий Башинский (bashinsky) 85 10.05.14 23:38 Сейчас в теме
(2) Diversus,
Было бы удобно на свой сайт скопировать и пользоваться когда нужно и не искать в интернете, где же я встречал онлайн раскраску.
Если не трудно и не жалко, выложите пожалуйста php-скрипт.

Пока выкладывать исходники я не планирую, но можно сделать свою страницу, при открытии которой будет редирект на мою.
Можно использовать написанную мной страницу редиректа http://likion.ru/color1c/color1c.zip, в архиве лежит html файл, его можно запускать хоть с рабочего стола
19. Роман Ложкин (webester) 21 11.05.14 13:38 Сейчас в теме
(17)Это было не вам. Там разбираться не надо просто подключил библиотеку, она сама раскрасит, код в блоке определенном для этого.
20. Дмитрий (gislink) 34 12.05.14 11:31 Сейчас в теме
(14) bashinsky,

ну например такой код (символы подчеркивания надо убрать):

а = "<html>&n_b_s_p;</html>";

переведет как:

а = "<html> </html>";

что конечно же неправильно.

21. Дмитрий (gislink) 34 12.05.14 11:33 Сейчас в теме
+(21) и заодно в поле "
Код 1С для раскраски (мах 30000 символов):" текст тоже изменится.
У меня есть код 1С, который формирует HTML текст, и для такого кода Ваш сервис не годится.
22. Дмитрий (gislink) 34 12.05.14 11:40 Сейчас в теме
(15) bashinsky,

ну может и исправлено, конечно, если такой код

а = "'20140505'";

должен раскрашиваться так, как он это делает у Вас.
23. Дмитрий Башинский (bashinsky) 85 12.05.14 12:51 Сейчас в теме
(22) gislink, это поправил.
И добавил возможность использовать html-код спецсимволов в строках. В "Результат" выводится пока не правильно, а вот если "Код для вставки" вставить в исходную страницу, то будет все норм.
24. Дмитрий (gislink) 34 12.05.14 13:17 Сейчас в теме
(23) bashinsky,

теперь с переносом строк фигня:

а = "20140505
|";

точка с запятой черная.
25. Роман Ложкин (webester) 21 14.05.14 10:01 Сейчас в теме
Харе ерундой заниматься http://26226.selcdn.ru/paint_1c/ буквально пару часов. Включая гугл, чтение документации и тд. Вот тебе и исходники и регулярные выражения(хочешь подсвети к примеру параметры в функции желтеньким или свои копирайты оранжевым). А еще на офсайте 17тем оформления. Спасибо andrewks он дописал правила до идеальных у него там еще для 77 и для запросов есть. Какой смысл велосипеды городить?
26. Дмитрий Башинский (bashinsky) 85 14.05.14 11:58 Сейчас в теме
(25) webester, Вот тебе и альтернатива. Что же вы раньше это не написали, а то пришлось свое выдумывать.
27. Роман Ложкин (webester) 21 14.05.14 15:50 Сейчас в теме
Мне казалось любой благородный дон, должен провести в гугле какое то время прежде чем начать писать велосипед. Если пошерстить гугл хотя бы полчасика, решение всплывает. Еще есть Pygments и SyntaxHighlighter для последних двух правда синтаксис написан энтузиастами, но он есть.
28. Дмитрий Башинский (bashinsky) 85 15.05.14 09:42 Сейчас в теме
(27) webester, провел не один час в гугле в поисках истины, но нашел только заготовки, а сидеть и разбираться в чужом коде, да еще на неизвестном мне пока языке, как-то не хотелось, пришлось делать свое. Да и в дальнейшем внести изменения туда будет проще.
29. Роман Ложкин (webester) 21 15.05.14 13:53 Сейчас в теме
(28)странно, очень странно я прям так и написал "подсветка синтаксиса 1с", получил очень много постов как прикрутить расцветку к Notepad++, убрал из выдачи все результаты где есть слово "Notepad++" по третьей ссылке получил нужный результат. Через 15 минут у меня на руках был модуль который раскрашивает код 1С. Результат меня не удовлетворил. Родные правила не раскрашивали скобки и еще какой то был глюк. Через 15минут я нашел сайт где andrewks дает ссылку на свой форк этого проекта. Там все работает как надо, ну или почти как надо. Собственно все. Страничка уже дело техники.
30. Александр (kg_am) 74 16.06.14 17:54 Сейчас в теме
Спасибо. Не слушайте тех, кто выступает против изобретения велосипедов. Как только люди перестанут изобретать велосипеды, почти сразу придётся пересаживаться на самокаты :)

Вот бы ещё раскраску для языка запросов...
31. Роман Ложкин (webester) 21 22.07.14 07:25 Сейчас в теме
(30)Ну ну, и вместо 1с у вас самописка, конечно же да? На тему раскраски языка запросов, по ссылкам выше, раскраска языка запросов есть, ее просто надо прикрутить. Сколько потратил бы времени автор, что бы это реализовать? Достаточно много, что бы свести к нулю смысл этого действия.
32. Александр Тупикин (dark_wolf) 7 05.08.14 10:06 Сейчас в теме
Параметры в запросах "&Параметр" при раскраске делает "& amp;Параметр".
А так суперская штука, не раз выручала.
33. Дмитрий Башинский (bashinsky) 85 29.08.14 16:31 Сейчас в теме
(32) dark_wolf, в итоговой странице должно выводится правильно без amp
34. V. L. (Vladal) 409 25.08.15 13:11 Сейчас в теме
Автор уже много собрал интересных алгоритмов и решения, которые раскрашивали онлайн?
Поделись, а?
35. Владислав Теут (darkmessiahan) 9 03.02.16 14:24 Сейчас в теме
Happy end
Сайт заблокирован хостинг-провайдером.
36. Вадим Латышев (pro1c@inbox.ru) 154 03.02.16 23:43 Сейчас в теме
вот вам и облака!
у знакомых также crm систему облачную рубанули!
не буду говорить какую, чтобы не рекламировать!
37. serg__k (serg__k) 78 13.07.16 10:41 Сейчас в теме
К сожалению "бобик сдох"...
пользуюсь этим
https://softonit.ru/free/highlights1c/
38. Дмитрий Башинский (bashinsky) 85 02.10.16 11:31 Сейчас в теме
Выложил скрипт раскраски. Пользуйтесь кому надо.
39. Олег Шалимов (CaSH_2004) 341 31.10.16 21:46 Сейчас в теме
(37) Походу еще один "бобик сдох"?
Зашел, вставил код и получил вот это:
Сообщить("тест");

Код получил весь синим - по тегам видно что он и не пытался ничего раскрасить. Или я что то не так понял? Кнопка одна, режима 2 - проверил оба - результат все тот же синий текст.

В общем программисты не справились с попыткой упростить жизнь другим программистам через онлайн :( Оффлайн продолжает рулить!
Если у кого есть еще варианты просьба поделится.

Пока что пользуюсь тут вставкой кода для получения текста :)
40. Юрий Пермитин (YPermitin) 586 15.01.17 12:32 Сейчас в теме
(39) попробуйте вот это: http://www.develplatform.ru/OneC/Online-instruments/1C-Syntax-Highlighter

Баги еще есть, если найдете еще ошибки, то прошу написать сюда
https://github.com/YPermitin/Brush-and-theme-of-1C-Enterprise-for-SyntaxHighlighter/issues

Рано или поздно исправлю =)
Ну или кидайте pull-request'ы со своим решением.