8.х поле HTML, управляемые формы

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Anna__, 28 янв 2014.

  1. TopicStarter Overlay
    Anna__
    Offline

    Anna__

    Регистрация:
    22 мар 2013
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1

    Добрый вечер! Помогите пожалуйста решить следующую проблему - выполняю скрипт на поле html. Пытаюсь прикрутить яндеск карты. и вот при обновлении карты пишу следующий код


    Процедура ОбновитьКарту(ПолеHTMLДокумента, ТипМетки, ТипМаршрута, Пункты) Экспорт
    ПолеHTMLДокумента.УстановитьТекст("");
    Если Контрагенты.Количество() = 0 Тогда
    Возврат;
    КонецЕсли;
    Текст = ПолучитьКодКарты(Пункты, ТипМетки, ТипМаршрута);
    ПолеHTMLДокумента.УстановитьТекст(Текст);
    КонецПроцедуры


    и вот все это хорошо работает в обычных формах. Подскажите пожалуйста, как подобное реализовать на управляемых. Метод УстановитьТекст() не работает.


    УстановитьТекст(<ТекстДляУстановки>)


    Параметры:

    <ТекстДляУстановки> (обязательный)
    Тип: Строка.
    Текст, помещаемый в текстовый документ.


    Описание:
    Устанавливает в текстовый документ текст из переданной строки. Текст, содержащийся в текстовом документе до исполнения метода, удаляется.


    Доступность:
    Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    а в управляемых формах еще проще.
    поле для отображения html - это обычное поле, у которого в свойстве Вид установлено, что это поле html документа, поле связано с реквизитом формы типа Строка - вот в этот реквизит и пишите текст html

    Код:
     АдресЗвука = ПолучитьЗвук();
    
    balls = "
    HTML:
    | <HTML><BODY scroll='no'>
    | <BGSOUND id='sound_think' balance=0 volume='-5000'></BGSOUND>
    | <div id=paperRaphael></div>
    | <script>
    | function PlaySound() {
    |	if (!window.HTMLAudioElement) {
    |	document.all.sound_think.volume=0;
    |	document.all.sound_think.src = '"+АдресЗвука+"';
    |   }
    | }
    | window.onload = function(){
    |  PlaySound();
    | }
    | </script>
    | </BODY></HTML>
    Код:
    ";
    
    здесь balls - реквизит формы, с которым связано поле
  3. TopicStarter Overlay
    Anna__
    Offline

    Anna__

    Регистрация:
    22 мар 2013
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Добрый день. Спасибо за ответ.
    но немного непонятно.

    Код:
    Процедура РасчитатьРасстояние(Команда)
    
    Текст = ПолучитьКодЯндексКарты();
    
    Элементы.ПолеHTML.Документ.parentWindow.eval(Текст);
    
    //Элементы.ПолеHTML = Текст;
    
    Расстояние = Элементы.ПолеHTML.Документ.getElementById("Rasstoyanie").value;
    
    КонецПроцедуры
    
    Полеhtml - это как раз строковый реквизит, с которым связано поле.
    подскажите пожалуйста - как дальше выполнить то сам скрипт? Элементы.ПолеHTML.Документ.parentWindow.eval(Текст) ??
  4. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    XSS-атака внутри 1с - это круто :)

    вы рассчитывайте на то, что это будет выполняться в веб-клиенте, соответственно ваше поле html документа - это iframe, COM, через который раньше все работало - не работает. только поменять текст.

Поделиться этой страницей