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

15.06.21

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Подсистема "Редактор Markdown 1C":
.cf 1,95Mb ver:1.0.2.0
37
37 Скачать (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 быстрая встройка

См. также

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

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

12000 руб.

02.09.2020    171680    960    403    

924

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

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

8400 руб.

20.08.2024    14247    108    46    

108

Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

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

9360 руб.

17.05.2024    27239    96    48    

137

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

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

22200 руб.

06.10.2023    17251    43    15    

75

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

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

15000 руб.

10.11.2023    11886    45    27    

67

SALE! %

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

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

4800 3840 руб.

14.01.2013    191149    1152    0    

920

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1112    2    0    

5

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

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

5000 руб.

07.02.2018    104111    244    100    

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

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

Опишите, что вы делаете, что механизм не срабатывает?
19. user1145156 19.05.21 13:23 Сейчас в теме
(18) в ручном режиме изображение прикрепляется и отображается, но после сохранения и последующего открытия элемента справочника - изображения нету в присоединенных файлах и оно не отображается
20. cprit 902 19.05.21 13:26 Сейчас в теме
(19) Видимо файлы в базу не записываются и/или при переоткрытии не считываются.
Запись как таковая не сделана, т.к. она в каждой базе может своя быть. Но реализованы события в общих модулях.
Нужно самому реализовать методы в переопределяемых модулях по записи и чтению файлов из базы
РМ_MarkdownПереопределяемый, РМ_MarkdownКлиентПереопределяемый.
Лучше качнуть новую версию с github. Не помню выкладывал сюда самую новую версию
21. user1145156 31.05.21 13:11 Сейчас в теме
(20) Для чего используется процедура ОткрытьПрисоединенныйФайлПоСсылке в РМ_MarkdownКлиентПереопределяемый?
22. cprit 902 03.06.21 12:58 Сейчас в теме
(21) Для открытия файла по ссылке, выведенной в поле просмотра. Сейчас посмотрел код- возможно это неиспользуемый фрагмент.
23. user1145156 03.06.21 13:20 Сейчас в теме
(22) Почему при подключении через тонкий клиент (удаленно) вместо изображений пустое место, а при подключении через тонкий клиент (rdp) - все нормально?
дело точно не в правах пользователя
24. cprit 902 03.06.21 13:30 Сейчас в теме
(23) случаем не через расширение подсистему подключали?
25. user1145156 03.06.21 13:42 Сейчас в теме
26. cprit 902 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 902 15.06.21 10:18 Сейчас в теме
(29) Добавить его нужно в событие "ДокументСформирован" для поля HTML просмотра.
Добавлю этот код в поставку на неделе и обновлю.
31. user1145156 15.06.21 13:46 Сейчас в теме
(30) в каком объекте подсистемы это поле находится? или я что-то не понимаю
32. cprit 902 15.06.21 16:52 Сейчас в теме
(22)
(31)
Добавил код в подсистему. Опубликовал новый релиз на гитхабе
33. user1145156 15.06.21 17:58 Сейчас в теме
28. cprit 902 03.06.21 15:05 Сейчас в теме
(27) Нет. Там как раз расчет на то, что сама 1С в тэг base запишет.
У себя проверял и на клиент-серверной, и на файловой и на тонком клиенте через веб публикацию.
Это как вариант для починки.
Вот тут можно посмотреть на вариант встраивания подистемы https://github.com/cpr1c/it/blob/main/src/СРМ/src/CommonModules/РМ_Markdown­Переопределяемый/Module.bsl
34. milanse 40 09.07.21 07:40 Сейчас в теме
Приветствую, затестил вчера, получилось открытие закладки с итоговым html 0,78 секунды. Прямо сильно заметно залипание. В тексте пара картинок и кусок кода.

И хотелось бы при инициализации иметь возможность ставить приоритет закладок - для нового объекта надо сразу редактировать, для существующего обычно смотреть.
35. cprit 902 09.07.21 10:22 Сейчас в теме
(34) Задачку записал. В ближайшие пару недель посмотрю
36. milanse 40 09.07.21 11:08 Сейчас в теме
(35) А про тормоза, есть у вас такое ?
37. cprit 902 09.07.21 11:14 Сейчас в теме
(36) бывает. Нам не критично. Поэтому не трогали. Есть мысль как это можно оптимизировать, но ее надо проверить. Скорее всего это из-за того, что документ HTML при переходе на страницу просмотра заново переформируется. Это можно переделать на формирование при открытии+ обновление контента при переходе на страницу просмотра
38. milanse 40 09.07.21 13:47 Сейчас в теме
(37) там большая часть это вызов метода html документа
39. cprit 902 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 902 03.08.23 12:07 Сейчас в теме
(40) Добрый день! Скорее всего это из-за того что поле HTML на невидимой закладке не инициализируется сразу. Т.к. его не видно.
А поле defaultview и взаимодействие становится доступным только после сформированности документа в поел HTML.
Также подобное поведение замечал в тонком клиенте на линуксе на некоторых платформах

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

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

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