[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 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Функциональное решение для торговли на всех популярных маркетплейсах. Работает со схемами FBO и FBS. Простое в использовании и установке, не вносит изменения в код программы. Существенно упрощает работу с товарным ассортиментом, обработку заказов с площадок, работу с поставками, а также ведение аналитики по продажам и остаткам.

72000 руб.

19.07.2024    1433    52    0    

3

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    17786    49    50    

29

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

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

22656 руб.

25.05.2021    14166    41    8    

16

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

Универсальное расширение конфигурации для автоматической загрузки и заполнения реквизитов контрагентов (партнеров) из ОГРН для 1С:ERP Управление предприятием 2 (1С:ERP Управление предприятием 2, редакция 2.4), 1С:ERP Управление предприятием 2 (1С:ERP Управление предприятием 2, редакция 2.2), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.5), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.4), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.3), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.2), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.4), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.2), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.0) и 1С:Бухгалтерия 8 (Бухгалтерия предприятия, редакция 3.0).

3900 руб.

08.11.2017    63123    404    295    

72

ККМ WEB-интеграция Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Универсальный драйвер для фискализации чеков для сервиса Бизнес.РУ. Чеки (https://online-check.business.ru/). Работает с любой кассой, подключенной к сервису, в том числе и без физической кассы (Аренда облачной ККТ в датацентре). Принцип работы аналогичен наличию физической кассы, подключенной к рабочему месту 1С. Фискализация выполняется с любого рабочего места через интернет. Нет ограничений на количество рабочих мест, касс, компьютеров. Поддерживает печать с нескольких рабочих мест на одну кассу. Работает в любой операционной системе (Windows, Linux) и в любом клиенте (Тонкий, Толстый, Web, Мобильный клиент).

6000 руб.

03.06.2021    13866    12    0    

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