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

15.06.21

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Подсистема "Редактор Markdown 1C":
.cf 1,95Mb ver:1.0.2.0
35
35 Скачать (2 SM) Купить за 2 150 руб.

Мне довелось достаточно много работать на таких системах, как 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! 15%

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

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

10000 руб.

02.09.2020    159701    876    399    

862

SALE! 15%

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7894    59    23    

69

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

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

9360 руб.

17.05.2024    23506    68    45    

117

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10473    36    25    

61

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15441    35    7    

70

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    188075    1140    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17319    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7723    8    35    

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

Идея хорошая, думаю сделать еще два стиля- конфигуратор и EDT
5. Mi4man 175 21.04.20 09:11 Сейчас в теме
(4) отлично! как раз подбираю решение для внутренней базы знаний.
9. cprit 901 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 214 22.04.20 08:37 Сейчас в теме
Подскажите, сталкивались ли с какими-либо проблемами при подключении Snowdown?
Тоже реализую опенсорсный маркдаун-редактор для 1С, но выбранный мной js-конвертор не очень нравится.
8. cprit 901 22.04.20 08:59 Сейчас в теме
(7) проблемы были когда не до конца разобрался. А так вроде все хорошо для моих текущих задач.
Отсмотрел их много. Смотрел правда чтобы и в nodejs можно было использовать и на клиенте использовать, и чтобы опенсорсный был и с плагинами, чтобы можно было дорабатывать.
10. milanse 38 08.07.20 13:08 Сейчас в теме
Отличная разработка, а не планируется ли выкладывать ее в общий доступ? хотелось бы использовать в разработке по учету задач https://github.com/BlizD
11. cprit 901 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 901 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 901 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 901 19.05.21 11:48 Сейчас в теме
(17) Если руками, то нет. А если из буфера теоретически может быть. Для такого используется Внешняя компонента. У нее были проблемы с подключением на старых платформах. Но с режимом совместимости не замечал проблем.
Можно попробовать обновить компоненту на последнюю в макете "РМ_КомпонентаДляРаботыСБуферомОбмена".

Опишите, что вы делаете, что механизм не срабатывает?
19. user1145156 19.05.21 13:23 Сейчас в теме
(18) в ручном режиме изображение прикрепляется и отображается, но после сохранения и последующего открытия элемента справочника - изображения нету в присоединенных файлах и оно не отображается
20. cprit 901 19.05.21 13:26 Сейчас в теме
(19) Видимо файлы в базу не записываются и/или при переоткрытии не считываются.
Запись как таковая не сделана, т.к. она в каждой базе может своя быть. Но реализованы события в общих модулях.
Нужно самому реализовать методы в переопределяемых модулях по записи и чтению файлов из базы
РМ_MarkdownПереопределяемый, РМ_MarkdownКлиентПереопределяемый.
Лучше качнуть новую версию с github. Не помню выкладывал сюда самую новую версию
21. user1145156 31.05.21 13:11 Сейчас в теме
(20) Для чего используется процедура ОткрытьПрисоединенныйФайлПоСсылке в РМ_MarkdownКлиентПереопределяемый?
22. cprit 901 03.06.21 12:58 Сейчас в теме
(21) Для открытия файла по ссылке, выведенной в поле просмотра. Сейчас посмотрел код- возможно это неиспользуемый фрагмент.
23. user1145156 03.06.21 13:20 Сейчас в теме
(22) Почему при подключении через тонкий клиент (удаленно) вместо изображений пустое место, а при подключении через тонкий клиент (rdp) - все нормально?
дело точно не в правах пользователя
24. cprit 901 03.06.21 13:30 Сейчас в теме
(23) случаем не через расширение подсистему подключали?
25. user1145156 03.06.21 13:42 Сейчас в теме
26. cprit 901 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 901 15.06.21 10:18 Сейчас в теме
(29) Добавить его нужно в событие "ДокументСформирован" для поля HTML просмотра.
Добавлю этот код в поставку на неделе и обновлю.
31. user1145156 15.06.21 13:46 Сейчас в теме
(30) в каком объекте подсистемы это поле находится? или я что-то не понимаю
32. cprit 901 15.06.21 16:52 Сейчас в теме
(22)
(31)
Добавил код в подсистему. Опубликовал новый релиз на гитхабе
33. user1145156 15.06.21 17:58 Сейчас в теме
28. cprit 901 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 901 09.07.21 10:22 Сейчас в теме
(34) Задачку записал. В ближайшие пару недель посмотрю
36. milanse 38 09.07.21 11:08 Сейчас в теме
(35) А про тормоза, есть у вас такое ?
37. cprit 901 09.07.21 11:14 Сейчас в теме
(36) бывает. Нам не критично. Поэтому не трогали. Есть мысль как это можно оптимизировать, но ее надо проверить. Скорее всего это из-за того, что документ HTML при переходе на страницу просмотра заново переформируется. Это можно переделать на формирование при открытии+ обновление контента при переходе на страницу просмотра
38. milanse 38 09.07.21 13:47 Сейчас в теме
(37) там большая часть это вызов метода html документа
39. cprit 901 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 901 03.08.23 12:07 Сейчас в теме
(40) Добрый день! Скорее всего это из-за того что поле HTML на невидимой закладке не инициализируется сразу. Т.к. его не видно.
А поле defaultview и взаимодействие становится доступным только после сформированности документа в поел HTML.
Также подобное поведение замечал в тонком клиенте на линуксе на некоторых платформах

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

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

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