1с как очистить поле html документа
Поле HTML документа в управляемом и обычном приложении в 1С 8.3, 8.2
Поле HTML документа – этот элемент позволяет выводить на форму HTML страницы, полученные по URL адресу.
ПолеHTMLДокумента в обычном приложении
Для примера, во внешней обработке, создаём реквизит формы – ПолеHTMLДокумента1. Для перехода на страницу в интернете, воспользуемся методом “Перейти”.
ПолеHTMLДокумента в управляемом приложении
Для примера, во внешней обработке, создаём реквизит формы – ПолеHTMLДокумента1 (с типом – строка). На самой форме создаём элемент, указывающий на наш, только что созданный реквизит. Вид его указываем – Поле HTML документа.
В управляемом приложении метод “Перейти” недоступен.
По этой причине, для перехода на страницу, URL-адрес установим не полю формы, а реквизиту формы.
Веб браузер в 1С
Давайте создадим простейший веб браузер на 1С, используя, только что полученные знания.
Весь прикол в том, что Поле HTML документа – это всеми любимый Internet Explorer, только в режиме совместимости с IE7. Поэтому, в некоторых случаях, вас будет ждать такое уведомление)))
Поиск по сайту
Okolokompa в Яндекс Дзен
Все материалы и продукты на этом сайте выложены в целях ознакомления для зарегистрированных пользователей фирм производителей материала или продукта, или его авторов. Помните, что скачанные материалы или продукты, Вы используете на свой страх и риск. Автор и администрация этого сайта не несет никакой ответственности за использование этих материалов или продуктов третьими лицами.
В случае, если вы используете один из перечисленных здесь материалов или продуктов, Вы обязаны официально приобрести его у фирмы производителя или автора.
Профессия — 1С
рубрики: Работа с формами | Дата: 10 августа, 2018
Скачать обработку с примерами из статьи: professia1c_html_document.epf
Платформа: 8.3; Тип формы: управляемая.
Сегодня рассмотрим такой элемент форм 1С как Поле HTML документа.
Название его говорит само за себя и предназначено это поле для отображения кода в формате html. Первое, что приходит на ум это конечно же организовать просмотр сайтов. И такая возможность действительно есть. И второе — для тех кто немного знаком с html и css есть возможность самим написать код для отображения в html поле. Учитывая, что у css3 достаточно широкие возможности стилизации, и в том числе присутствует возможность анимации, может получится достаточно живая и красочная картинка. Плюс, как известно, в html можно включать и код на языке java script. И тут уже возможности ограничиваются только вашей фантазией. Рассмотрим на примере оба вышеперечисленных варианта. Для демонстрации создадим внешнюю обработку на управляемых формах.
Просмотр веб страницы через поле HTML документа
Эта возможность реализуется очень просто. В реквизиты формы добавим реквизит Сайт с типом «Строка»: 
Разместим этот реквизит на форме и в свойствах выберем вид — «Поле HTML документа»: 
И конечно же добавим строку для ввода адреса сайта.
Остальное делается практически одной строчкой кода, которую мы вставим в обработчик события ПриИзменении адресной строки сайта:
Теперь опробуем обработку в режиме 1С:Предприятия. Ввожу адрес своего сайта www.professia1c.ru и получаю вот такое сообщение об ошибке: 
Это связано с тем, что по умолчанию поле HTML документа работает в режиме совместимости с древней версией браузера Internet Explolrer. И естественно, что очень многие владельцы сайтов уже не заморачиваются с поддержкой старых версий. Хотя если ввести адрес сайта самой 1С — www.1c.ru, мы увидим, что он успешно отобразится в нашем поле. В сети предлагается несколько разных способов как победить эту ошибку. От редактирования настроек браузера IE, до редактирования реестра. Мне на моей домашней 32-разрядной версии Windows 10 помогло редактирование реестра. Для этого необходимо найти ветку «HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION» и добавить в нее параметр 1Cv8c.exe со значением 11000 в десятичной системе исчисления. 
После этого все встает на свои места и сайт отображается корректно. Понятно, что когда речь идет о крупном предприятии, то отредактировать реестр на десятках и сотнях машин может быть проблематично. Но в каких-то отдельных случаях может выручить.
На самом деле не совсем понятно где это может пригодится, если есть стандартный браузер. Ну с фирмой 1С все понятно — она таким образом рекламу нам показывает каждый раз когда мы 1С:Предприятие запускаем)).
Метатег X-UA-Compatible
Когда речь не идет о просмотре сайтов и мы пишем полностью свой код для поля html документа, то нам нет необходимости редактировать реестр для того чтобы воспользоваться всеми прелестями CSS3 и HTML5. Для этого воспользуемся метатегом X-UA-Compatible. Это специфический метатег предназначенный для браузера Internet Explorer. Он позволяет устанавливать режим совместимости для IE. Если быть точным, то X-UA-Compatible — это значение аттрибута http-equiv, который в свою очередь используется вместе с аттрибутом content. Короче говоря нам необходимо в разделе head нашего html документа прописать вот такую строчку:
которая говорит браузеру Internet Explorer, что он должен работать в режиме совместимости с самой последней его версией. В которой нам конечно же доступны CSS3 и HTML5.
Пишем свой код для поля HTML документа
А теперь создадим свою мини веб страничку и отобразим ее в другом поле HTML документа. По аналогии с предыдущим примером создадим реквизит СтилиCSS и разместим его в отдельной закладке на форме. 
Далее перейдем к написанию кода html. Минимально необходимый код, так сказать заготовка нашей странички выглядит следующим образом:
Внутри тега обычно прописывают различные метатеги, а также мы поместим в него тег в котором пропишем стили css. Как правило стили css размещают в отдельном файле, но поскольку у нас нет такой возможности воспользуемся тегом style. Содержимое же самой страницы размещают внутри тега
Очистка HTML от лишних тегов
Столкнулся с проблемой при выгрузке на свой сайт статей из 1с
что WORD сохраняет тексты в HTML с «мусором»
Скачать файлы
Специальные предложения
(6) CagoBHuK, Смысла реализовывать в 1С нет, регулярные выражения легко подключаются:
Обновление 17.08.12 19:00
Код открыт Не указано
См. также
Модуль обмена с QIWI Промо
Компании, которые используют систему моментальных платежей QIWI, ценят ее за удобство по скорости выплат и для платежей по запросу. Но такие переводы сложны для учета, а при большом объеме проводимых операций отнимают много времени и превращаются в дополнительную головную боль. Мы сотрудничали с компаниями, которые отправляют большое количество платеже на QIWI, и часто слышали боль бухгалтеров о том, как им сложно работать с такими переводами. Поэтому мы автоматизировали выплаты через QIWI в 1С и создали модуль интеграции 1С c API QIWI Wallet и QIWI TopUp.
25.05.2020 6852 0 Neti 10
FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы «Режим сравнения форм») на примере ERP 2.5
Данная публикация является продолжением описания функционирования обработки «FormCodeGenerator » в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.
21.12.2020 8872 26 huxuxuya 11
BIM: взаимодействие с платформой Autodesk Forge
Предлагаемый пример демонстрирует широкие возможности для взаимодействия «1С:Предприятие» с платформой Autodesk Forge и позволяет вам получить базовые представления о применения технологий информационного моделирования в строительстве. Поддерживаются все версии платформы от 8.3.12 и выше до 8.3.18.
25.11.2020 30244 9 kandr 2
«Учет штрафов ГИБДД» с возможной загрузкой из открытых источников в интернет Расширение конфигурации 1С: Предприятие 8.3
Расширение конфигурации Бухгалтерия предприятия, редакция 3.0 (при минимальных изменениях любой типовой конфигурации), позволяющее вести историю данных по штрафам ГИБДД для справочника транспортных средств компании. Бонусом поставляется внешняя обработка, способная загружать эти данные из открытых источников в интернет.
30.12.2019 18528 21 capitan 11
Внешняя компонента для работы по Web-socket протоколу x32 x64 Промо
Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.
30.03.2018 35171 59 Ditron 103
Односторонний файловый обмен с сайтом по ftp (1C 2 Web)
Подходит под любую конфигурацию на управляемом интерфейсе на базе БСП 2.4.4 и выше. Позволяет гибко настроить выгрузку, практически любых, данных по расписанию на сервер ftp вашего ресурса. Ведение лога процесса выгрузки также предусмотрено.
09.12.2019 11036 13 LamerSoft 0
Разбираемся с WebKit в 1С, на примере интеграции TinyMCE в управляемую форму в УТ 11.4
Многие уже знают, что в релизе платформы 8.3.14.1565, браузер Internet Explorer был заменен на Web-Kit, это на самом деле большой шаг вперед, но я уверен, многим, как и мне, пока не совсем понятно, что к чему. Возник опыт использования web-kit в 1С, вызова JS из 1С и вызова 1С из JS. Давайте вместе попробуем понять, чем одно отличается от другого, и заодно сделаем, что-нибудь полезное. Да и наверняка многим придется переписывать свои подобные поделки после обновления на новую платформу, так что надеюсь мой опыт окажется полезным.
Все началось с того, что возникла задача: «Хотим, в УТ, вводить форматированное описание для товара, чтобы оно потом летело в интернет-магазин», потому что стандартное описание для товара прилетает сплошной строкой без переносов и выглядит очень не очень. Сразу возникло желание использовать форматированный документ, там и редактор простенький есть, и в HTML можно выгрузить. Но как только я показал сформированный форматированным документом HTML веб-разработчикам, они сразу замахали руками и сказал, что так не пойдет. На сайте уже есть свои стили для отображения нужных блочных элементов и поведение такого рода текста может стать непредсказуемым.
Функция ПолучитьHTML, форматированного документа возвращает полностью сформированную страницу HTML, со всей структурой тегов, а что самое неприятное, с inline-стилями. Выглядит это так.
И если получить содержимое тега body это простая задача, то заниматься парсингом и вырезать атрибуты стиля из тегов совсем не хотелось.
TinyMCE же возвращает приятного вида верстку. Позволяя себе inline-стили только в случае с цветом, что уже гораздо лучше.
Было принято решение интегрировать сторонний редактор текста TinyMCE. К тому же опыт его интеграции сообществом 1С уже довольно большой.
Может быть это было ошибкой тогда, и нужно было просто парсить текст сформированный форматированным документом, но имеем, что имеем.
1.Особенности решения
Так как 1С не разрешает подгружать на страницу в поле HTML локальные файлы из файловой системы, для этого обязательно нужен веб-сервер или хотя бы адрес этого файла во временном хранилище, то положить js-библиотеку Tiny рядышком с 1С и подгружать ее в заголовках HTML документа нельзя — придется сформировать еще и файл с HTML-версткой который внутри себя формирует готовое окно редактора и его уже подключать к HTML документу.
Вообще, на самом деле, подгрузить библиотеку, если получить для нее адрес в хранилище, можно, если бы она была скомпилирована в один файл, а Tiny помимо основной библиотеки содержит еще и js-файлы плагинов, менеджер стилей, и сами файлы стилей, русификаторов, иконок и т.д., и как сами понимаете это довольно сильно усложняет задачу. В одно время даже возникла идея скомпилировать все это добро в один файл и не знать проблем, но разбираться в инструментах было долго. Потом был найден TinyMCE Builder на официальном сайте, который компилирует весь js в один файл и это же было бы маленькой победой, если бы он так же поступал с css, но нет, css по-прежнему лежал рядом в нескольких папках.
TinyMCE для окна редактирования создает iframe, который сам по себе является встроенным в страницу HTML-документом, так что события возникающие в этом iframe 1С не может отследить, об этом ниже.
Конфигурация УТ 11.4 на момент разработки имела режим совместимости 8.3.12, так что по факту сейчас она использовала IE в качестве встроенного браузера, но дальнейшее обновление подразумевало переход на новые версии, которые уже используют web-kit.
2. Первые шаги
Основные отличия в работе с web-kit:
Основной объект ПоляHTML теперь имеет другую структуру и, для того чтобы работать с содержимым страницы нужно использовать свойство defaultView
раньше для этого использовалось свойство parentWindow
Запрет на использование eval, который раньше повсеместно использовался для вызова JS кода. Что-то вроде этого
Элементы.ПолеHTML.Document.parentWindow.eval(«alert(‘Вызов кода из 1С’)»)
Зато можно обращаться к методам напрямую из 1С.
Элементы.ОписаниеHTML.Document.DefaultView.НазваниеМетодаJS();
И я быстро соорудил оберточные функции для всех методов Tiny которые мне нужны.
К которым дальше обращался из 1С так
Хотя можно было бы обойтись и прямыми обращениями к объекту редактора, например так
Сразу была скачана обработка из публикации (автору отдельный респект), которая показала мне много интересностей. Она более-менее работала на IE, но на webkit не работал копи-паст, сначала это вызвало ступор, но дальше стало понятно, что это из-за iframe поле HTML не активировалось при нажатии внутри него, так как нажатие фактически происходило во вложенном документе HTML, события которого где-то застревали по пути к 1С. И потому если нажать Ctrl+C в одном месте формы и попытаться вставить внутри поля редактора, то текст вставится в том поле откуда был копирован потому что поле HTML документа не активируется. То же происходит и в обратном случае, сочетания клавиш для копирования и вставки не работают.
Сначала возникла мысль, что это косяк Tiny, и он блокирует непосредственную вставку из буфера, как CKEditor, который предлагает отдельное окно для вставки из буфера. Но проверить это было довольно легко, я создал пустой документ с одним полем ввода и попробовал копирования и вставки
Как видите все работает. Значит проблема где-то в Tiny или во взаимодействии с 1С.
3. Решение
Для решения проблемы с взаимодействием браузера и 1С был применен обычный прием, я создал невидимую кнопку на странице HTML, и планировал нажимать на нее из JS при возникновении нужных событий внутри страницы, которые 1С перехватывала бы в событии ПриНажатии HTMLДокумента. Но при каком событии осуществлять программное нажатие?
Верстка выглядит примерно так:
И функция для вызова события нажатия на кнопку
Раньше можно было передать объект формы 1С в поле HTML как объект, и из-за того, что IE подключался к 1С по COM, форма как-то сама конвертировалась в понятный для IE объект и можно было вызывать экспортный функции формы 1С прямо из кода JS. Теперь так нельзя.
Была изучена документация по API Tiny, и найдена конструкция для перехвата обработчиков событий и подходящая комбинация событий, которая должна активировать поле HTML документа
Нужно поместить этот код в том месте, когда Tiny уже проинициализровался. Я сделал это в обработчике onload объекта window. Но можно сделать более красиво и разместить код при инициализации Tiny в параметре:
Теперь все должно быть в порядке. И форма должна работать как надо…
Стало сильно лучше, поле HTML действительно стало активироваться, но не всегда, почему-то некоторые нажатия не вызывали перехода фокуса к полю:
На этой записи видно, что если нажать в строку, где мигает курсор, то фокус поля работает как нужно, но если нажать ниже, то активации поля не происходит.
Это был досадный артефакт, и попытки понять, что происходит не давали никакого решения. Я выводил алерты в обработчик и алерты выводились, но 1С не реагировала на событие ПриНажатии
Внезапно пришла в голову идея, а что, если 1С не успевает обработать событие происходящее в поле, что если немного затормозить выполнение JS скрипта, и посмотреть, что получится. Быстро была реализована функция паузы в JS с помощью промисов и async await. Как видите в JS ее тоже нет по умолчанию и ничего, живут люди).
Здесь я устанавливаю задержку в одну миллисекунду, перед нажатием на кнопку. И вуаля, все заработало. 1С стала вовремя обрабатывать нажатие на кнопку.
4. Допиливаем обмен
Так как для хранения нового описания в формате HTML, был добавлен новый реквизит к справочнику, то нам нужно подменить значение типового поля при выгрузке. Для этого в модуле ОбменССайтомПереопределяемый, добавляем в расширение функцию ПолучитьТекстыЗапросовКаталог, и пишем там:
На этом все. Запускаем обмен и все работает, остается только внести изменения на сайте, если это нужно, чтобы описание товара воспринималось как верстка а не как строка.
Резюме
На данном примере я попробовал взаимодействие JS WebKit и 1С, пособирал грабли и нашел решение.
Возможно для решения этой задачи было проще распарсить и очистить HTML-текст из форматированного документа, но было бы не так интересно и возможно получило бы какие-то проблемы при каких-то сложных вариантах форматирования.
1С поле форматированного документа
1С:Предприятие 8.3.14. Документация
Глава 7. Формы
В процессе разработки прикладных решений возникает необходимость предоставить пользователю возможность выполнять редактирование текстов с оформлением (далее форматированный документ). В качестве примера такой необходимости можно привести написание писем электронной почты, различных служебных записок или сопроводительных документов.
Для работы с форматированным документом предназначен объект ФорматированныйДокумент, с помощью которого можно выполнять программную обработку документа, и поле вида Поле форматированного документа, который предназначен для интерактивного изменения форматированного документа.
В информационной базе форматированный документ рекомендуется хранить в реквизите типа ХранилищеЗначения, в который помещается объект типа ФорматированныйДокумент.
Для того чтобы предоставить пользователю возможность интерактивного изменения документа, следует выполнить следующие шаги:
● Создать реквизит формы типа ФорматированныйДокумент и установить для него свойство Сохраняемые данные.
● Создать элемент формы типа Поле ввода вида Поле форматированного документа и связать его с ранее созданным реквизитом.
● При чтении данных формы (обработчик ПриЧтенииНаСервере()) загрузить в реквизит формы документ (метод УстановитьHTML()), который необходимо редактировать, предварительно получив его из информационной базы.
● Перед записью данных формы (обработчик ПередЗаписьюНаСервере()) получить результат (метод ПолучитьHTML()) редактирования документа и поместить его в реквизит, сохраняемый в информационной базе.
В процессе работы с документом можно использовать закладки. Закладка описывает положение некоторого символа в документе. При определении положения нужно учитывать следующие особенности:
● содержимое документа считается одной последовательностью символов;
● перенос строки считается одним символом;
● картинка считается одним символом.
Если положение символа, с которым связана закладка, изменится, то закладка будет отслеживать положение связанного символа. Если удаляется символ, с которым связана закладка, то закладка пытается привязаться к следующему символу, а если этого символа нет ‑ закладка будет указывать на конец документа. Если заменить целиком весь форматированный документ, то все закладки в этом документе станут невалидными.
С помощью закладок можно получать и устанавливать выделение или позицию курсора в редакторе, добавлять и удалять элементы текста в документе (собственно текст, картинка, перевод строки).
Если при получении выделения позиция начала и позиция окончания совпадают, это значит, что выделение отсутствует и получено положение курсора. Так же и при установке выделения: если начальная и конечная позиция выделения совпадают, происходит изменение позиции курсора, без выделения. При программном изменении текста собственно отображение выделения в поле форматированного документа не изменится. Если перед изменением текста выполнялось получение границ выделения, то после изменения текста, закладки могут изменить свою позицию, сохранив при этом свое положение. Другими словами, если вставка происходила внутрь выделения, то позиция закладки, описывающей окончание выделения, увеличится на размер вставленного текста и т. д.
Приведем пример получения и установки выделения в редакторе форматированного документа.
При выполнении операций удаления закладка, описывающая начало удаляемого фрагмента, может оказаться некорректной. Если при этом необходимо сохранить позицию начала удаляемого фрагмента, то следует воспользоваться позицией начала фрагмента. Так, пример замены выделенного текста другим текстом будет выглядеть следующим образом.
Если в форматированном документе присутствуют гиперссылки и форматированный документ отображается в режиме Только просмотр, то гиперссылки доступны для перехода. Переход выполняется в новом окне веб-браузера.
Также имеется возможность программного доступа к тексту форматированного документа. Сам текст состоит из объектов типа ПараграфФорматированногоДокумента, который доступен через свойство Элементы объекта ФорматированныйДокумент. При этом каждый параграф состоит из объектов типа
Доступ к этой коллекции обеспечивается через свойство Элементы объекта ПараграфФорматированногоДокумента. Границей элемента не обязательно является граница слова.
Например, следующий пример показывает перебор всех параграфов форматированного документа, содержащих текст, и отдельную обработку каждого параграфа.
Обработка элементов форматированного документа, входящего в состав параграфа, может оказаться полезной в том случае, если нужно, например, убрать все оформление в виде курсива или полужирного шрифта.
При программной работе с текстом также могут помочь методы ПолучитьЭлементы() и СформироватьЭлементы(). Эти методы возвращают массив элементов форматированного документа. Чтобы увидеть разницу в работе этих методов, рассмотрим пример форматированного документа, содержащего следующую строку: 012 456 890. Строка состоит из 11 символов, где на месте символов 4 и 8 расположены пробелы. Необходимо получить элементы, которые расположены между позициями 2 и 9 этого документа.
Разница в работе этих методов будет в том, что метод ПолучитьЭлементы() возвращает все элементы, которые попадают между заданными закладками (включая все граничные элементы), т. е. рассматриваемом примере будет выведен следующий текст:
Другими словами, при использовании метода СформироватьЭлементы() система формирует набор элементов таким образом, чтобы он включал в себя только то содержимое форматированного документа, которое ограничено закладками.
Такой результат будет даже в том случае, если полученный, после вызова СформироватьЭлементы(), набор элементов никак не изменялся.
Поступила задача разработки печатной формы документа с наклонами, выделением текста и т.д.
Ничего особенного. Получил задачу – исполняй. Но оказалось, что таких печатных форм много. Захотелось облегчить свою жизнь и как-то все оптимизировать. Запустил в свой мозг задачу на сон грядущий и умище с утра выдало такое.
Итак, как мне создать печатную форму 1С и сохранить в формате WORD?
— Поле HTML документа – это что? Обычная строка.
— Можно использовать возможности объекта ТекстовыйДокумент? Можно.
Функция ПолучитьОбласть ( МакетHTML,ИмяОбласти )
ТекОбласть = МакетHTML.ПолучитьОбласть ( ИмяОбласти );
//Удаляем строки с определением области #Область, #КонецОбласти
Функция ВывестиОбласть ( Область,Параметры = Неопределено)
Если ТипЗнч ( Параметры ) = Тип ( «Структура» ) и Параметры.Количество () Тогда
Для каждого Эл из Параметры Цикл















