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

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

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

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

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

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

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

40 Comments

  1. bashinsky

    возникшие ошибки раскраски рабочего кода буду исправлять по мере возможности

    Reply
  2. Diversus

    (1) Было бы удобно на свой сайт скопировать и пользоваться когда нужно и не искать в интернете, где же я встречал онлайн раскраску.

    Если не трудно и не жалко, выложите пожалуйста php-скрипт.

    Reply
  3. gislink

    Внутри чисел точка красная, а должна быть черная 😉

    Reply
  4. gislink

    Символы «#» и «&» красят строку в коричневый, только если они являются первым значащим символом в строке, а у Вас — где угодно.

    Reply
  5. gislink

    про «enddo» забыл 😉

    все, 3 косячка нашел, пойду покурю.

    Reply
  6. gislink

    А вот вопрос еще гложет: по-моему лишнего там span-ов открывается/закрывается. Если одно слово красным, и другое за ним красным — зачем перед пробелом закрывать старый span, а после открывать новый точно такой же, пробел то пофиг каким цветом рисовать.

    Reply
  7. gislink

    хехе, а если в строках попадаются спецсимволы HTML (типа «&» или » «) — то ваще беда, да…

    Reply
  8. gislink

    +(7) похоже и у Инфостарта та же проблема, я писал &a_m_p; и &n_b_s_p; 😉

    Reply
  9. gislink

    с датами в одинарных кавычках беда.

    Reply
  10. pro1c@inbox.ru

    Возьмите CopyPaster1C, там все раскрашено!

    http://infostart.ru/public/199364/

    Reply
  11. webester

    (2)Используйте на своем сайте highlight.js он раскрашивает как нужно, без каких либо ограничений(код раскрашивается на клиенте, поэтому серверу наплевать на объем кода). Еще есть питоновская библиотека pygments очень удобная. Если есть необходимость, можно запилить статическую страничку, для раскраски кода. Делов не очень много. Я баловался когда тоже раскраской кода, написал пастебин 1с.

    Reply
  12. bashinsky

    (5) gislink,

    про «enddo» забыл 😉

    Это исправил, лишний пробел был в проверочной строке

    Reply
  13. bashinsky

    (4) gislink,

    Символы «#» и «&» красят строку в коричневый, только если они являются первым значащим символом в строке, а у Вас — где угодно.

    Если эти символы попадаются и они стоят не в кавычках, то после них все остальное красится в коричневый — так у меня. В 1С — если они стоят с начала. Но если в 1С поставить эти символы в середину строки, то будет ошибка.

    Для примера.

    Правильно:

    а=1;

    #Если Клиент Тогда

    #КонецЕсли

    Неправильно:

    а=1;#Если Клиент Тогда

    #КонецЕсли

    Повторюсь, раскраска выполняется синтаксически верного текста, а не идет проверка его на синтаксис.

    Reply
  14. bashinsky

    (7) gislink,

    хехе, а если в строках попадаются спецсимволы HTML (типа «&» или » «) — то ваще беда, да…

    Можно пример?

    Reply
  15. bashinsky

    (9) gislink,

    с датами в одинарных кавычках беда.

    Исправлено

    Reply
  16. bashinsky

    (3) gislink,

    Внутри чисел точка красная, а должна быть черная 😉

    Это косяк 1Совской обработки, который перешел сюда. Позже исправлю.

    Reply
  17. bashinsky

    (11) webester, будет время, разберусь и с JavaScript.

    Reply
  18. bashinsky

    (2) Diversus,

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

    Если не трудно и не жалко, выложите пожалуйста php-скрипт.

    Пока выкладывать исходники я не планирую, но можно сделать свою страницу, при открытии которой будет редирект на мою.

    Можно использовать написанную мной страницу редиректа http://likion.ru/color1c/color1c.zip, в архиве лежит html файл, его можно запускать хоть с рабочего стола

    Reply
  19. webester

    (17)Это было не вам. Там разбираться не надо просто подключил библиотеку, она сама раскрасит, код в блоке определенном для этого.

    Reply
  20. gislink

    (14)

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

    а = «<html>&n_b_s_p;</html>»;

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

    а = «<html> </html>»;

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

    Reply
  21. gislink

    +(21) и заодно в поле »

    Код 1С для раскраски (мах 30000 символов):» текст тоже изменится.

    У меня есть код 1С, который формирует HTML текст, и для такого кода Ваш сервис не годится.

    Reply
  22. gislink

    (15)

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

    а = «‘20140505′»;

    должен раскрашиваться так, как он это делает у Вас.

    Reply
  23. bashinsky

    (22) gislink, это поправил.

    И добавил возможность использовать html-код спецсимволов в строках. В «Результат» выводится пока не правильно, а вот если «Код для вставки» вставить в исходную страницу, то будет все норм.

    Reply
  24. gislink

    (23)

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

    а = «20140505

    |»;

    точка с запятой черная.

    Reply
  25. webester

    Харе ерундой заниматься http://26226.selcdn.ru/paint_1c/ буквально пару часов. Включая гугл, чтение документации и тд. Вот тебе и исходники и регулярные выражения(хочешь подсвети к примеру параметры в функции желтеньким или свои копирайты оранжевым). А еще на офсайте 17тем оформления. Спасибо andrewks он дописал правила до идеальных у него там еще для 77 и для запросов есть. Какой смысл велосипеды городить?

    Reply
  26. bashinsky

    (25) webester, Вот тебе и альтернатива. Что же вы раньше это не написали, а то пришлось свое выдумывать.

    Reply
  27. webester

    Мне казалось любой благородный дон, должен провести в гугле какое то время прежде чем начать писать велосипед. Если пошерстить гугл хотя бы полчасика, решение всплывает. Еще есть Pygments и SyntaxHighlighter для последних двух правда синтаксис написан энтузиастами, но он есть.

    Reply
  28. bashinsky

    (27) webester, провел не один час в гугле в поисках истины, но нашел только заготовки, а сидеть и разбираться в чужом коде, да еще на неизвестном мне пока языке, как-то не хотелось, пришлось делать свое. Да и в дальнейшем внести изменения туда будет проще.

    Reply
  29. webester

    (28)странно, очень странно я прям так и написал «подсветка синтаксиса 1с», получил очень много постов как прикрутить расцветку к Notepad++, убрал из выдачи все результаты где есть слово «Notepad++» по третьей ссылке получил нужный результат. Через 15 минут у меня на руках был модуль который раскрашивает код 1С. Результат меня не удовлетворил. Родные правила не раскрашивали скобки и еще какой то был глюк. Через 15минут я нашел сайт где andrewks дает ссылку на свой форк этого проекта. Там все работает как надо, ну или почти как надо. Собственно все. Страничка уже дело техники.

    Reply
  30. kg_am

    Спасибо. Не слушайте тех, кто выступает против изобретения велосипедов. Как только люди перестанут изобретать велосипеды, почти сразу придётся пересаживаться на самокаты 🙂

    Вот бы ещё раскраску для языка запросов…

    Reply
  31. webester

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

    Reply
  32. dark_wolf

    Параметры в запросах «&Параметр» при раскраске делает «& amp;Параметр».

    А так суперская штука, не раз выручала.

    Reply
  33. bashinsky

    (32) dark_wolf, в итоговой странице должно выводится правильно без amp

    Reply
  34. v.l.

    Автор уже много собрал интересных алгоритмов и решения, которые раскрашивали онлайн?

    Поделись, а?

    Reply
  35. darkmessiahan

    Happy end

    Сайт заблокирован хостинг-провайдером.

    Reply
  36. pro1c@inbox.ru

    вот вам и облака!

    у знакомых также crm систему облачную рубанули!

    не буду говорить какую, чтобы не рекламировать!

    Reply
  37. serg__k

    К сожалению «бобик сдох»…

    пользуюсь этим

    https://softonit.ru/free/highlights1c/

    Reply
  38. bashinsky

    Выложил скрипт раскраски. Пользуйтесь кому надо.

    Reply
  39. CaSH_2004

    (37) Походу еще один «бобик сдох»?

    Зашел, вставил код и получил вот это:

    Сообщить(«тест»);

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

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

    Если у кого есть еще варианты просьба поделится.

    Пока что пользуюсь тут вставкой кода для получения текста 🙂

    Reply
  40. YPermitin

    (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’ы со своим решением.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *