Подсистема "Редактор Markdown 1C"

15.06.21

Разработка - Инструментарий разработчика

Подсистема для быстрого встраивания в форму редактора языка разметки markdown

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

Наименование Файл Версия Размер
Подсистема "Редактор Markdown 1C":
.cf 1,95Mb
26
.cf 1.0.2.0 1,95Mb 26 Скачать

Мне довелось достаточно много работать на таких системах, как redmine, gitlab и github. И когда встала задача перехода на учет задач в 1С,  альтернатив markdown в удобстве использования и легкости перехода обнаружено не было. 

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

Нужно было сделать модуль, на основании которого можно было построить подобную функциональность. 

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

 

Что умеет

  • Быстрое размещение на форме всех необходимых элементов для редактирования и предпросмотра результата в поле HTML. Примеры приведены ниже по тексту
  • Автопривязка к существующему реквизиту формы или объекта
  • Полноценный редактор с быстрыми кнопками, облегчающий форматирование

  • Присоединение файлов 
  • Вставка картинки из буфера обмена. Подвязано по умолчанию на клавиши (ctrl+shift+z), а также на кнопку 
  • Быстрая вставка присоединенной ранее картинки
  • Быстрый просмотр результата

  • Возможность на одну форму вставлять несколько редакторов, привязанных к разным реквизитам
  • Быстрый доступ к ранее присоединенным файлам

  • Подсветка синтаксиса всех основный языков. Полный список можно тут посмотреть https://highlightjs.org/static/demo/
  • Разные стили подсветки синтаксиса. Список вариантов взят отсюда
  • Возможность налету изменять вариант подсветки синтаксиса для каждого редактора, размещенного в системе
  • Краткая справка по всем основным командам markdown с примерами 
  • Возможность размещать на форме не весь редактор, а только часть для просмотра.

 

 

Размещение редактора на форме

1. В процедуру ПриСозданииНаСервере нужно вставить код. 

РМ_MarkdownСервер.ВставитьПолеРедактированияТекстаНаФорму(ЭтаФорма, ГруппаКудаНужноВставитьРедактор,
		ПутьКДанным, ВариантПодсветкиСинтаксиса);
 
Примеры

2. В модуль формы вставить блок процедур для отлова событий добавляемых элементов формы. 

 
 
 Блок процедур

Как разместить только элементы просмотра на вашей форме

1. В процедуре вставки редактора нужно указать параметр ТолькоПросмотр в значение Истина.

РМ_MarkdownСервер.ВставитьПолеРедактированияТекстаНаФорму(ЭтаФорма, Элементы.ГруппаТолькоПросмотр,
		"ТекстТолькоПросмотр", ВариантПодсветкиСинтаксиса, Истина);

2. В модуль формы нужно вставить только процедуры из области Просмотр

 
 Блок процедур для вставки только поля просмотра

 

#Область ПодключаемыеКоманды

#Область Просмотр

//@skip-warning
&НаКлиенте
Процедура РМ_Подключаемый_ПриНажатииПоляПросмотраКомментария(Элемент, ДанныеСобытия, СтандартнаяОбработка)
	РМ_MarkdownКлиент.ПриНажатииПоляПросмотраКомментария(ЭтаФорма, Элемент, ДанныеСобытия, СтандартнаяОбработка);
КонецПроцедуры

//@skip-warning
&НаКлиенте
Процедура РМ_Подключаемый_ДокументСформированПоляПросмотраКомментария(Элемент)
	РМ_MarkdownКлиент.ДокументСформированПоляПросмотраКомментария(ЭтаФорма, Элемент);
КонецПроцедуры

#КонецОбласти
#КонецОбласти

 

 

Ниже приведен код формы для описания синтаксиса markdown и ее представление

 
 Код формы
 
 То как выглядит в предприятии

 

Режим просмотра удобен для вывода информации, на форматирование которой не тратится много времени

 

Использованные библиотеки

  • Библиотека работы с буфером обмена из 1С https://github.com/cpr1c/clipboard_1c
  • Конвертер markdown в HTML и обратно Showdownjs http://showdownjs.com/. Была выбрана, т.к. ее можно расширять своими плагинами, а это необходимо, если захочется расширить функциональность своими командами
  • Библиотека подсветки кода highlightjs https://highlightjs.org/

 

Где работает

Windows

Linux, 

ВебКлиент

 

Проверялось на платформе 8.3.15.1700 в Windows и linux. 

На обычных формах не проверялось, но по идее должно работать.

 

Новое в версии

 

1.0.0.2

  • Добавлен вариант подсветки синтаксиса ones, сделанный на основании цветов конфигуратора.
  • Вариант подсветки синтаксиса ones сделал используемым по-умолчанию

редактор markdown быстрая встройка

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121630    670    389    

711

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7266    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8000 руб.

10.11.2023    3512    11    1    

33

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177729    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99342    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18104    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28099    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23598    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Nikola23 696 20.04.20 13:20 Сейчас в теме
Лайк за интересную. плюшку.
2. cprit 874 20.04.20 13:56 Сейчас в теме
3. Mi4man 173 21.04.20 07:39 Сейчас в теме
А можно подсвечивать код 1С в стандартных цветах? в списке https://highlightjs.org/static/demo/ конечно же не нашел
4. cprit 874 21.04.20 09:05 Сейчас в теме
(3) На текущий момент стили оформления подсветки только те, что были в https://highlightjs.org.

Идея хорошая, думаю сделать еще два стиля- конфигуратор и EDT
5. Mi4man 173 21.04.20 09:11 Сейчас в теме
(4) отлично! как раз подбираю решение для внутренней базы знаний.
9. cprit 874 26.04.20 17:52 Сейчас в теме
(5) В новом релизе добавлен вариант подсветки синтаксиса ones. Он теперь по умолчанию
6. webester 26 21.04.20 14:57 Сейчас в теме
(3)
в списке https://highlightjs.org/static/demo/ конечно же не нашел

https://github.com/andrewks777/highlight.js как работает можно посмотреть вот здесь
7. azhilichev 213 22.04.20 08:37 Сейчас в теме
Подскажите, сталкивались ли с какими-либо проблемами при подключении Snowdown?
Тоже реализую опенсорсный маркдаун-редактор для 1С, но выбранный мной js-конвертор не очень нравится.
8. cprit 874 22.04.20 08:59 Сейчас в теме
(7) проблемы были когда не до конца разобрался. А так вроде все хорошо для моих текущих задач.
Отсмотрел их много. Смотрел правда чтобы и в nodejs можно было использовать и на клиенте использовать, и чтобы опенсорсный был и с плагинами, чтобы можно было дорабатывать.
10. milanse 38 08.07.20 13:08 Сейчас в теме
Отличная разработка, а не планируется ли выкладывать ее в общий доступ? хотелось бы использовать в разработке по учету задач https://github.com/BlizD
11. cprit 874 08.07.20 15:48 Сейчас в теме
(10) Думал над таким. Собственно для собственной системы задач и делали. Эту смотрели https://github.com/BlizD/Tasks, но там совсем интерфейс не устроил. После redmine, gitlab и github хочется чего то подобного, хотя функционально она отличная. Если подсистема поможет развитию интерфейса во что-то более удобное, почему нет
12. user1145156 29.04.21 13:56 Сейчас в теме
На 8.3.6 будет работать?
13. cprit 874 29.04.21 14:07 Сейчас в теме
(12) Добрый день! Теоретически должно, если режим совместимости конфигурации будет 8.3.6 и выше. Если полеHTMLДокумента переварит нормально отобразит документ, то все остальное можно быстро адаптировать. Проект доступен на гитхабе https://github.com/cpr1c/markdowneditor1c. Можно скачать и проверить.
14. user1145156 29.04.21 14:22 Сейчас в теме
(13) а готовой конфигурации нету, случайно?
у меня EDT нету
15. cprit 874 29.04.21 14:23 Сейчас в теме
(14) Вот тут можно скачать с гитхаба https://i.imgur.com/Tk3Fx97.png
16. user1145156 29.04.21 15:26 Сейчас в теме
(15) Спасибо большое! Уже использую для https://infostart.ru/public/656758/
17. user1145156 18.05.21 21:46 Сейчас в теме
(13) может быть проблема с присоединением изображений из-за режима совместимости 8.3.6?
18. cprit 874 19.05.21 11:48 Сейчас в теме
(17) Если руками, то нет. А если из буфера теоретически может быть. Для такого используется Внешняя компонента. У нее были проблемы с подключением на старых платформах. Но с режимом совместимости не замечал проблем.
Можно попробовать обновить компоненту на последнюю в макете "РМ_КомпонентаДляРаботыСБуферомОбмена".

Опишите, что вы делаете, что механизм не срабатывает?
19. user1145156 19.05.21 13:23 Сейчас в теме
(18) в ручном режиме изображение прикрепляется и отображается, но после сохранения и последующего открытия элемента справочника - изображения нету в присоединенных файлах и оно не отображается
20. cprit 874 19.05.21 13:26 Сейчас в теме
(19) Видимо файлы в базу не записываются и/или при переоткрытии не считываются.
Запись как таковая не сделана, т.к. она в каждой базе может своя быть. Но реализованы события в общих модулях.
Нужно самому реализовать методы в переопределяемых модулях по записи и чтению файлов из базы
РМ_MarkdownПереопределяемый, РМ_MarkdownКлиентПереопределяемый.
Лучше качнуть новую версию с github. Не помню выкладывал сюда самую новую версию
21. user1145156 31.05.21 13:11 Сейчас в теме
(20) Для чего используется процедура ОткрытьПрисоединенныйФайлПоСсылке в РМ_MarkdownКлиентПереопределяемый?
22. cprit 874 03.06.21 12:58 Сейчас в теме
(21) Для открытия файла по ссылке, выведенной в поле просмотра. Сейчас посмотрел код- возможно это неиспользуемый фрагмент.
23. user1145156 03.06.21 13:20 Сейчас в теме
(22) Почему при подключении через тонкий клиент (удаленно) вместо изображений пустое место, а при подключении через тонкий клиент (rdp) - все нормально?
дело точно не в правах пользователя
24. cprit 874 03.06.21 13:30 Сейчас в теме
(23) случаем не через расширение подсистему подключали?
25. user1145156 03.06.21 13:42 Сейчас в теме
26. cprit 874 03.06.21 13:42 Сейчас в теме
(23) Картинки выводятся через помещение во временное хранилище. С ним могут быть проблемы, если подключать через расширение. В поле просмотра 1С добавляет тэг base. В него нужно после формирования документа установить туда навигационную ссылку базы.
Если подключаешь как встраивание в конфигурацию, то 1С в этот тэг сама делает. По идее этого достаточно. Если через расширение этот тэг обязательно руками устанавливать.
Опытным путем выяснили, что вот такой код чаще всего рабочий


&НаКлиенте
Процедура ПросмотрДокументСформирован(Элемент)
ДокументHTMLView = Элемент.Документ.defaultView;

НавигационнаяСсылкаБазы=ПолучитьНавигационнуюСсылкуИнформаци­оннойБазы()+"/";
ДокументHTMLView.appTo1C.setBaseURL(НавигационнаяСсылкаБазы);

elems = Элемент.Документ.getElementsByTagName("base");

Если elems.length > 0 Тогда
elems[0].href = НавигационнаяСсылкаБазы;
КонецЕсли;


КонецПроцедуры
27. user1145156 03.06.21 14:54 Сейчас в теме
(26) так этот код и используется в последней версии?
29. user1145156 12.06.21 12:41 Сейчас в теме
(26) куда именно этот код добавить?
30. cprit 874 15.06.21 10:18 Сейчас в теме
(29) Добавить его нужно в событие "ДокументСформирован" для поля HTML просмотра.
Добавлю этот код в поставку на неделе и обновлю.
31. user1145156 15.06.21 13:46 Сейчас в теме
(30) в каком объекте подсистемы это поле находится? или я что-то не понимаю
32. cprit 874 15.06.21 16:52 Сейчас в теме
(22)
(31)
Добавил код в подсистему. Опубликовал новый релиз на гитхабе
33. user1145156 15.06.21 17:58 Сейчас в теме
28. cprit 874 03.06.21 15:05 Сейчас в теме
(27) Нет. Там как раз расчет на то, что сама 1С в тэг base запишет.
У себя проверял и на клиент-серверной, и на файловой и на тонком клиенте через веб публикацию.
Это как вариант для починки.
Вот тут можно посмотреть на вариант встраивания подистемы https://github.com/cpr1c/it/blob/main/src/СРМ/src/CommonModules/РМ_Markdown­Переопределяемый/Module.bsl
34. milanse 38 09.07.21 07:40 Сейчас в теме
Приветствую, затестил вчера, получилось открытие закладки с итоговым html 0,78 секунды. Прямо сильно заметно залипание. В тексте пара картинок и кусок кода.

И хотелось бы при инициализации иметь возможность ставить приоритет закладок - для нового объекта надо сразу редактировать, для существующего обычно смотреть.
35. cprit 874 09.07.21 10:22 Сейчас в теме
(34) Задачку записал. В ближайшие пару недель посмотрю
36. milanse 38 09.07.21 11:08 Сейчас в теме
(35) А про тормоза, есть у вас такое ?
37. cprit 874 09.07.21 11:14 Сейчас в теме
(36) бывает. Нам не критично. Поэтому не трогали. Есть мысль как это можно оптимизировать, но ее надо проверить. Скорее всего это из-за того, что документ HTML при переходе на страницу просмотра заново переформируется. Это можно переделать на формирование при открытии+ обновление контента при переходе на страницу просмотра
38. milanse 38 09.07.21 13:47 Сейчас в теме
(37) там большая часть это вызов метода html документа
39. cprit 874 09.07.21 13:58 Сейчас в теме
(38) Ну в HTML можно асинхронное обновление сделать. А не синхронное как сейчас
40. efin 03.08.23 11:58 Сейчас в теме
Подскажите, пожалуйста, почему в веб-клиенте (Google Chrome на Windows 10-11), версия 1С 8.3.22 (на других не проверял)
дает вот такую ошибку при открытии формы на вкладке Просмотр? В тонком клиенте все работает




Поле объекта не обнаружено (defaultView)
{ОбщийМодуль.РМ_MarkdownКлиент.Модуль(472)}:	Возврат Элемент.Документ.defaultView;
{ОбщийМодуль.РМ_MarkdownКлиент.Модуль(259)}:	Документ=ДокументHTMLДляЭлементаHTML(Элемент);
{ОбщийМодуль.РМ_MarkdownКлиент.Модуль(241)}:		ОчиститьТекстыПоляHTML(ЭлементПросмотраКомментария);
{ОбщийМодуль.РМ_MarkdownКлиент.Модуль(6)}:	ОбновитьПолеПросмотраПоляКомментария(Форма, ПутьКДанным);
{РегистрСведений.ОбъявленияЛККПоРегионам.Форма.ФормаЗаписи.Форма(15)}:	РМ_MarkdownКлиент.ПриСменеСтраницыПоляКомментария(ЭтаФорма, Элемент, ТекущаяСтраница);
41. cprit 874 03.08.23 12:07 Сейчас в теме
(40) Добрый день! Скорее всего это из-за того что поле HTML на невидимой закладке не инициализируется сразу. Т.к. его не видно.
А поле defaultview и взаимодействие становится доступным только после сформированности документа в поел HTML.
Также подобное поведение замечал в тонком клиенте на линуксе на некоторых платформах

Я бы попробовал дожидаться вызова события ДОкументСформирован поля HTML на закладке Просмотр и только потом выполнять методы для взаимодействия.
42. efin 03.08.23 13:04 Сейчас в теме
(41) Дело в том, что я использую эту разработку как есть, ума хватило только по инструкции встроить на форму.

"дожидаться вызова события ДОкументСформирован поля HTML на закладке Просмотр" - мне это ни о чем не говорит.

Сможете помочь доработать эту вашу разработку на возмездной основе?
43. cprit 874 03.08.23 13:28 Сейчас в теме
Оставьте свое сообщение