[TinyMCE] - редактор HTML WYSIWYG. Интеграция во все виды управляемого и обычного приложения

14.12.20

Интеграция - WEB-интеграция

В статье рассмотрены вопросы использования во всех режимах работы 1С Предприятие 8.3 редактора TinyMCE в поле HTML дополнительного функционала.

О редакторе:

TinyMCE (англ. Tiny Moxiecode Content Editor) платформонезависимый Javascript HTML WYSIWYG редактор на основе Web. К основным характеристикам программы относятся поддержка тем/шаблонов, языковая поддержка и возможность подключения модулей (плагинов). Используется в различных системах управления содержимым (CMS)

Редактор позволяет очень многое. C его помощью можно вставлять рисунки, таблицы и указывать стили оформления текста. Можно выполнять операции, присутствующие в более мощных редакторах. Вдобавок к этому существует множество плагинов.

Рассмотрим подключение этого редактора на всех типах Клиента для платформы 8.3. На момент написания статьи, автор использовал версию 8.3.17 - Платформа для ПК, и версию 8.3.17.76 - мобильный клиент.

Эта статья, является продолжением и ответами на 2 вопроса, которые возникли при использовании этого редактора: 

  1. Как использовать данный редактор в режиме Web-Клиента 1С?
  2. Можно ли использовать его на мобильной платформе?

И как итог всего этого: Создание универсального способа подключения редактора на любой тип Клиента 1С.

Ранее, было реализовано другими авторами: 

Для Обычного Приложения - детально написано здесь [TinyMCE] - редактор HTML WYSIWYG кода.

Про Управляемые формы - тоже был сделан ПОРТ решения. 

Поэтому приведу лишь краткий вариант кода, которого хватит для вывода TinyMCE в форме обработки: 

Для Обычных Форм:

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    Редактор=ПолучитьМакет("TinyMCE_zip");
    ФайлАрхива=ПолучитьИмяВременногоФайла("zip");
    КаталогСкриптов=КаталогВременныхФайлов();
    Редактор.Записать(ФайлАрхива);
    //Теперь распакуем архив сразу: 
    Файл = Новый Файл(КаталогСкриптов);
    Если НЕ Файл.Существует() Тогда
        СоздатьКаталог(КаталогСкриптов);
    КонецЕсли;
    //
    зип = Новый ЧтениеZipФайла(ФайлАрхива);
    зип.ИзвлечьВсе(КаталогСкриптов, РежимВосстановленияПутейФайловZIP.Восстанавливать);
    УдалитьФайлы(ФайлАрхива);
    //
    ТекстНастроек = ПолучитьМакет("TinyMCE_txt").ПолучитьТекст();

    Т = Новый ТекстовыйДокумент;
    Т.ДобавитьСтроку(ТекстНастроек);            
    ВремФайл = КаталогВременныхФайлов() + "temp.html";
    Т.Записать(ВремФайл);   

     ЭлементыФормы.ДокументHTML.Перейти(ВремФайл);
    
КонецПроцедуры

И выглядит оно так:

 

 

Теперь рассмотрим самый интересный вариант: 

Для Управляемых Форм: 

Здесь сразу разделим код на 2 типа: 

  1. Тонкий Клиент
  2. Web Клиент и Мобильное приложение.

Для тонкого клиента код выглядит так: 

Функция ПолучитьМакет(Макет)
    Обработка=РеквизитФормыВЗначение("Объект");
    Возврат Обработка.ПолучитьМакет(Макет);
КонецФункции

&НаКлиенте
Процедура ПриОткрытии(Отказ)   
        Редактор=ПолучитьМакет("TinyMCE_zip");
        ФайлАрхива=ПолучитьИмяВременногоФайла("zip");
        КаталогСкриптов=КаталогВременныхФайлов();
        Редактор.Записать(ФайлАрхива);
        //Теперь распакуем архив сразу: 
        Файл = Новый Файл(КаталогСкриптов);
        Если НЕ Файл.Существует() Тогда
            СоздатьКаталог(КаталогСкриптов);
        КонецЕсли;
        //
        зип = Новый ЧтениеZipФайла(ФайлАрхива);
        зип.ИзвлечьВсе(КаталогСкриптов, РежимВосстановленияПутейФайловZIP.Восстанавливать);
        УдалитьФайлы(ФайлАрхива);
        //
        ТекстНастроек = ПолучитьМакет("TinyMCE_txt").ПолучитьТекст();         
        Т = Новый ТекстовыйДокумент;
        Т.ДобавитьСтроку(ТекстНастроек);
        //        
        ВремФайл = КаталогВременныхФайлов() + "temp.html";
        Т.Записать(ВремФайл);
        ЭтотОбъект.ДокументHTML=ВремФайл;
КонецПроцедуры


Выглядит это так:

 

 

Теперь рассмотрим вопрос по поводу Web Клиента и Мобильно клиента.

Для того,чтобы мы могли спокойно использовать редактор в этих 2-х режимах сделаем следующее: 

  1. Сам редактор TinyMCE будем размещать на сервере.
  2. Инициализацию будем производить только готового документа, что упростит работу в этих режимах.

Рассмотрим настройку сервера Apache 2.4 (под которым производилась публикация базы) для решения указанной проблемы в публикации: 

Alias "/tynymce" "C:/Program Files/Apache Software Foundation/Apache2.4/htdocs/tinymce"
<Directory "C:/Program Files/Apache Software Foundation/Apache2.4/htdocs/tinymce">
    AllowOverride All
    Options None
    Require all granted
 </Directory>

Здесь: 

  1. C:/Program Files/Apache Software Foundation/Apache2.4/htdocs/tinymce - директория с редактором. Таким же образом можно реализовать и другие плагины. 
  2. Alias "/tynymce" - добавляем путь к хосту, где публиковали базу.

Это исключает лишние вопросы, связанные с использованием данных публикации. Так как всё, что нужно - запихнуть папку tynymce, и не понадобится плодить виртуальные  хосты.

Настройка Apache 2.4 аналогична используемой 1С при публикации на Web Сервере.

Для инициализации в Web Клиенте осталось дописать код таким образом: 

Функция ПолучитьМакет(Макет)
    Обработка=РеквизитФормыВЗначение("Объект");
    Возврат Обработка.ПолучитьМакет(Макет);
КонецФункции

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    #Если  ВебКлиент тогда
        // Web Клиент - редактор на сервере:
        ЭтотОбъект.ДокументHTML="http://localhost/tinymce/index.html";    
    #иначе    
        Редактор=ПолучитьМакет("TinyMCE_zip");
        ФайлАрхива=ПолучитьИмяВременногоФайла("zip");
        КаталогСкриптов=КаталогВременныхФайлов();
        Редактор.Записать(ФайлАрхива);
        //Теперь распакуем архив сразу: 
        Файл = Новый Файл(КаталогСкриптов);
        Если НЕ Файл.Существует() Тогда
            СоздатьКаталог(КаталогСкриптов);
        КонецЕсли;
        //
        зип = Новый ЧтениеZipФайла(ФайлАрхива);
        зип.ИзвлечьВсе(КаталогСкриптов, РежимВосстановленияПутейФайловZIP.Восстанавливать);
        УдалитьФайлы(ФайлАрхива);
        //
        ТекстНастроек = ПолучитьМакет("TinyMCE_txt").ПолучитьТекст();         
        Т = Новый ТекстовыйДокумент;
        Т.ДобавитьСтроку(ТекстНастроек);
        //        
        ВремФайл = КаталогВременныхФайлов() + "temp.html";
        Т.Записать(ВремФайл);
        ЭтотОбъект.ДокументHTML=ВремФайл;
    #КонецЕсли
КонецПроцедуры


Выглядит так:

 

 

Под localhost следует понимать адрес хоста в Apache, где была опубликована БАЗА.

Для Мобильного Клиента - код будет выглядеть похожим образом: 

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    //Вставить содержимое обработчика
    ЭтотОбъект.ДокументHTML="http://адрес сервера публикации/tinymce/index.html";
КонецПроцедуры

Причем, в случае последнего режима - это надо писать в код Формы Справочника, или Документа (Обработка работать отказалась на мобильном клиенте).

В эмуляторе выглядит так:

 

 

Заключение: 

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

Примечание:

Использовалась версия TinyMCE, взятая из обработке в Статье  [TinyMCE] - редактор HTML WYSIWYG кода. Надеюсь, информация будет полезной.

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18009    18    22    

17

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

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20150    13    19    

18

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14558    42    8    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1724    1    0    

3
Оставьте свое сообщение