Имя: Пароль:
1C
1С v8
Работа с HTML документом в Управляемом приложении (УФ)
0 mvlad
 
13.04.16
14:17
Есть такая, многим известная, обработка проверки орфографии SpellChecker1С.epf, которая была написана под обычное приложение.
В ней используется редактор TinyMCE и API Яндекс.Спеллера.
Внутри обработки в макетах хранится zip-файл, который представляет собой иерархически структурированный набор файлов и папок, так сказать мини сайт (там в основном файлы скриптов .js, но есть и htm и css и др.).
На форме обработки расположено поле с типом "Поле HTML документа".
Суть работы обработки следующая - при ее открытии происходит создание в темповом каталоге винды папки TinyMCE, в него помещается zip-файл и он распаковывается, формируя весь иерархический набор файлов и папок. Далее создается программно файл temp.html с таким кодом:

<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=windows-1251" content="no-cache">
<script type="text/javascript" src="tinyMCE/jscripts/tiny_mce.js"></script>
<!-- TinyMCE -->
<script type="text/javascript">
  tinyMCE.init({
    // General options
    mode : "textareas",
    theme : "advanced",
    plugins : "save,spellchecker",
    entity_encoding : "raw",
    force_br_newlines : true,
    force_p_newlines : false,
    language : "ru",
    
    // Spellchecker
    spellchecker_languages : "+Russian=ru,Ukrainian=uk,English=en",
    spellchecker_rpc_url : "http://speller.yandex.net/services/tinyspell";,
  });    
</script>
<!-- /TinyMCE -->
</HEAD><BODY><FONT FACE="Arial" SIZE="-1">
<form method="\" action="\" onsubmit="return false;">
<textarea id="elm1" name="elm1" style="width:100%;height:100%">
</textarea>
</FONT></BODY></HTML>

(!!! этот код я укоротил, чтобы показать саму суть, на самом деле он немного больше и шире !!!)

Этот файл temp.html помещается в созданный ранее каталог TinyMCE.
Далее для элемента формы с типом "Поле HTML документа" вызывается метод Перейти(), в параметре которого указывается полный путь к файлу temp.html и всё прекрасно работает.

Я решил переделать эту обработку под УФ.
В управляемой форме для создания элемента с типом "Поле HTML документа" нужно связывать его с реквизитом формы с типом "Строка".
Также в УФ для ПолеHTMLдокумента нет метода Перейти() и html-код нужно просто присваивать реквизиту, связанному с этим элементом формы.
Но, присвоив вышеприведенный код html, обработка не заработала, т.к. в приведенном html-коде выше видно, что во второй строке:
<script type="text/javascript" src="tinyMCE/jscripts/tiny_mce.js"></script>
используется относительный путь.
Но даже вставив весь код этого скрипта tiny_mce.js в код html, обработка всё равно не работает, т.к. она не понимает где лежит остальной набор файлов и папок этого мини-сайта.

И вот мой вопрос - как же всё таки заставить на УФ эту обработку работать?

При попытке сделать вот так:
Элементы.ПолеHTMLдокумента1.Документ.URL = "file:///бла бла бла/TinyMCE/temp.html";
появляется сообщение "Доступ запрещен".
1 sash-ml
 
13.04.16
14:37
серверная или файловая?
2 mvlad
 
13.04.16
14:45
тестирую на файловой. а в реале будет серверная.
3 mvlad
 
13.04.16
17:52
подниму.
Программист всегда исправляет последнюю ошибку.