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

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

57600 руб.

26.11.2024    940    1    1    

4

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

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

36000 руб.

03.08.2020    18228    20    22    

18

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

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20423    13    19    

18

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

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    91804    180    217    

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