Skip to content

alkoleft/onec-markdown-viewer

Repository files navigation

Markdown Viewer для 1С:Предприятие

Проект для отображения markdown контента в среде 1С:Предприятие с поддержкой подсветки синтаксиса для различных языков программирования.

🚀 Возможности

  • Глобальные функции для работы с markdown
  • Поддержка языков: BSL/1C, JSON, Gherkin и Turbo-Gherkin
  • Подсветка синтаксиса с помощью highlight.js
  • Адаптивный дизайн для разных экранов
  • Совместимость с 1С:Предприятие 8.3.14+
  • Автономная сборка в один файл для простой интеграции

preview

🎯 Демонстрация

Онлайн демо

⚡ Пример использования в 1С

1. Скачать файл со страницы релизов

Скачайте файл index-standalone.html с последней версии релиза проекта.

2. Добавить файл как макет

Добавьте скачанный файл в вашу конфигурацию 1С как макет с именем "MarkdownViewer".

3. Добавить реквизит формы

Добавьте реквизит формы с типом Строка и именем MarkdownViewer.

4. Настроить элемент формы

Добавьте на форму элемент MarkdownViewer и настроите его вид как "Поле HTML документа".

5. Добавить код в обработчик события

Добавьте в обработчик события ПриСозданииНаСервере следующий код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Обработка = РеквизитФормыВЗначение("Объект");
    ДвоичныеДанные = Обработка.ПолучитьМакет("MarkdownViewer");
    MarkdownViewer = ПолучитьНавигационнуюСсылкуИнформационнойБазы() + "/" + ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
КонецПроцедуры

6. Добавить обработчик события документа

Для элемента формы MarkdownViewer добавьте обработчик события "ДокументСформирован" с именем MarkdownViewerДокументСформирован:

&НаКлиенте
Процедура MarkdownViewerДокументСформирован(Элемент)
    ЭлементHTML = Элементы.MarkdownViewer.Документ["defaultView"];
    ЭлементHTML.renderMarkdown(ТекстMarkdown);
КонецПроцедуры

🔧 Использование глобальных функций

После интеграции в 1С вы можете использовать глобальные функции JavaScript:

// Отображение markdown контента
&НаКлиенте
Функция ОтобразитьMarkdown(ТекстMarkdown)
    ЭлементHTML = Элементы.MarkdownViewer.Документ["defaultView"];
    ЭлементHTML.renderMarkdown(ТекстMarkdown);
КонецФункции

// Очистка контента
&НаКлиенте
Функция ОчиститьMarkdown()
    ЭлементHTML = Элементы.MarkdownViewer.Документ["defaultView"];
    ЭлементHTML.clearMarkdown();
КонецФункции

// Проверка поддержки
&НаКлиенте
Функция ПоддерживаетсяMarkdown()
    ЭлементHTML = Элементы.MarkdownViewer.Документ["defaultView"];
    Возврат ЭлементHTML.isMarkdownSupported();
КонецФункции

🔧 API функций

renderMarkdown(markdownString, containerId?)

Отображает markdown строку в указанный контейнер или основной контейнер документа.

Параметры:

  • markdownString (string) - строка с markdown контентом
  • containerId (string, опционально) - ID контейнера для отображения

clearMarkdown(containerId?)

Очищает указанный контейнер или основной контейнер документа.

Параметры:

  • containerId (string, опционально) - ID контейнера для очистки

isMarkdownSupported()

Проверяет поддержку markdown в текущей среде.

Возвращает: boolean - true если markdown поддерживается

🛠️ Разработка

Установка зависимостей

npm install

Сборка автономного файла для 1С

npm run build:single

Результат: Файл dist/index-standalone.html (~136KB) готов для интеграции в 1С.

Другие команды сборки

npm run dev          # Запуск dev-сервера
npm run build        # Обычная сборка
npm run preview      # Предварительный просмотр
npm run clean        # Очистка dist/

🎨 Кастомизация

Стили

Основные CSS классы в файле styles.css:

  • .markdown-content - основной контейнер для markdown
  • .language-bsl - стили для BSL кода
  • .language-gherkin - стили для Gherkin
  • .language-json - стили для JSON

Добавление новых языков

// В файле src/highlight-config.ts
import hljs from 'highlight.js/lib/core';

// Регистрация нового языка
hljs.registerLanguage('custom', customLanguage);

📋 Требования

  • 1С:Предприятие 8.3.14+
  • Браузеры: Chrome 60+, Firefox 55+, Safari 12+, Edge 79+
  • Node.js 16+ (для разработки)

📄 Лицензия

Проект распространяется под лицензией MIT.

🤝 Вклад в проект

Приветствуются любые предложения и улучшения! Создавайте issues и pull requests.


Версия 1.1.0 | Готово к использованию в 1С! 🎉