sonyps4.ru

Управляемые формы: Поле HTML Документа и веб-клиент. Управляемые формы: Поле HTML Документа и веб-клиент 1с поле html управляемые формы

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

  • Работать с компонентами ActiveX;
  • Вызывать Javascript;
  • Создавать и использовать ссылки на различные объекты базы данных.

Этот объект называется в 1С полеHTMLдокумента.

Элемент управления ПолеHTMLДокумента имеет одно существенное ограничение в использовании – его нельзя использовать для расположенных в таблице полей.

Создание собственного браузера в 1С

Давайте попробуем с помощью этого поля создать обработку, открывающую ссылку на ресурс в интернете:

Проверим, как это работает.. Получим картинку (Рис.4)
Рис.4.

Проанализируем, что мы видим:

  • Открылось поисковое окно, со ссылкой на сайт, при этом поиск осуществляется с помощью поисковой системы, назначенной по умолчанию;
  • Обработка работает, интернет страницы открываются, переходы по ссылкам осуществляются;
  • При вызове ресурса произошла ошибка сценария.
  • С чем связана ошибка? С тем, что ПолеHTMLДокумента – это фактически типовой Internet Explorer, причем не самой последней версии, который не поддерживает большинство современных ресурсов. Так что сайты, не поддерживающие режим совместимости, будут открываться с ошибками в сценарии.

    Для удобства пользователя можно на форме создать навигационные команды «Вперед» и «Назад», которые будут описывать соответствующие перемещения.

    Создание ссылки на объект базы данных

    Задача состоит в следующем:

    • Создать список каких-либо объектов, допустим элементы справочника «Сотрудники»;
    • Получить ссылку на каждый из них;
    • Открывать их непосредственным нажатием на соответствующую ссылку.

    Создадим нашу обработку и форму на ней.


    Подробнее рассмотрим, что мы сделали:

  • Создали текстовый документ, который содержит «тело» нашего сайта;
  • Начало и окончание документа, а так же тело нашего ХТМЛ документа мы описали с помощью соответствующих тегов;
  • Записали в него каждого сотрудника;
  • В записях сотрудников у нас содержится информация, которая нам понадобится позже, когда мы будем открывать элементы кликая на ФИО сотрудников;
  • Установили нашему полю текст, который описывает структуру.
  • Попробовав сейчас активировать любую из имеющихся гиперссылок мы столкнемся с тем, что «Такая страница не найдена»(Рис.8)
    Рис.8

    Продолжим описывать обработчик.

    Создадим процедуру, которая обрабатывает клик мышки по гиперссылке на элемент справочника (Рис.9).

    Рис.9

    Рассмотрим её подробнее:

  • Прежде всего отключим стандартную обработку щелчка по гиперссылке;
  • Получим строку, характеризующую наш элемент, для этого в ДанныеСобытия получим значение параметра Element.id;
  • Разделим полученную строку в соответствии с правилами, по которым мы её формировали (название справочника и уникальный идентификатор, разделенные между собой тире);
  • Получаем ссылку на элемент, используя функцию ВозвратСсылки;
  • Открываем элемент по полученной ссылке.
  • Протестируем выполнение созданного кода.

    Так как в настройках нашей программы запрещено использование модальных окон, выполнение выше приведенного кода завершилось ошибкой (Рис.10). В противном случае все бы отработало нормально.

    Рис.10

    Зайдем в конфигураторе в меню Текст->Рефакторинг->Нерекомендуемые синхронные вызовы->Преобразовать вызовы модуля. По прошествии некоторого времени текст нашего модуля будет выглядеть как на Рис.11

    Рис.11

    Опробовав обработку еще раз можно убедиться, что все работает нормально и при щелчке на ссылку открывается соответствующий элемент справочника.

    Некоторые пояснения к коду. Статистика говорит, что в пределах одной базы маловероятно существование элементов с одинаковыми идентификаторами, однако платформа может гарантировать уникальность только в пределах одной таблицы. Именно поэтому мы и формировали ссылку из двух частей.

    Пара слов о Javascript

    Вызовы функций JS в ранних версиях программы осуществлялись через параметр поля document.parentWindow.MyFunk(), однако в современных браузерах эта возможность была утрачена. Не срабатывают так же вызовы через eval().

    Выход состоит в использовании специальной функции fireEvent, которая является универсальным механизмом обмена данными между 1С и Javascript.

    Вопрос: Не отображается код HTML в Поле HTML Документа 1С управляемые формы


    Доброго времени суток! Подскажите кто нибудь, создаю внешнюю обработку, создал форму, в форме создал Поле, в форме создал Реквизит (Тип: Строка не ограниченная), путь к данным: Реквизит (Вид: Поле HTML Документа), в Модуле прописал программно:

    &НаКлиенте
    Процедура Поле1ДокументСформирован(Элемент)
    ЭтотОбъект.Реквизит = "Wellcome"; КонецПроцедуры В итоге в Поле HTML Документа ничего не отображается (Пусто), хотя по идее должно отображаться Wellcome, как я понимаю по прочитанному на форуме.

    Что я сделал не так?

    Ответ: Кому нужна данная идея, забирайте, готовая рабочая и стабильная цепочка, проверено в 1С: Розница 8/2.2 управляемые формы!!!

    Вопрос: Поле HTML документа ЭлементыФормы.ИЕ.Документ.getElementsByClassName()


    История такая ЭлементыФормы.ИЕ.Документ.getElementsByClassName("loginform__input-border") нормально возвращает нужный элемент а вот
    ЭлементыФормы.ИЕ.Документ.getElementsByClassName("loginform__input-field ng-dirty ng-valid ng-touched") ни как не находит

    т.е. не работает когда в имени есть пробелы...

    почему?

    Ответ: () А форм много на странице? Если нет, то получи массив форм и выбери нужную.

    Вопрос: очищается реквизит формы (поле html-документа)


    Генерю страницу с полем html-документа. Пользователь кликает погиперсслыкам, которые открываются в сгенеренных страницах с полями html-документов.
    Потом пользователь закрывает (программно) исходную страницу, она благополучно закрывается, но почему-то все поля html-документов в производных страницах очищаются (сбрасываются), то есть становятся пустыми.
    Никто не подскажет, может быть, из-за чего? Как избежать

    Ответ:

    Вот это действительно идея!

    Вопрос: Как работать с Поле HTML Документа?


    Подскажите как можно реализовать следующие действия или дайте ссылочку на материал.
    Есть необходимость программно заполнить поля на форме сайта, авторизироваться и проводить программно следующее заполнение полей на сайте.
    ???

    Добавлено через 5 часов 9 минут
    Нужно программно заполнить input"ы и нажать кнопку..

    Добавлено через 16 часов 29 минут
    Как заполнить поля разобрался. Есть идеи как по кнопке кликнуть?

    Добавлено через 1 час 17 минут
    Во всем разобрался. Тему можно закрыть/удалить)

    Ответ: Через ком. Сейчас времени нет. Во второй половине дня или вечером отпишусь.

    Вопрос: Поле HTML-документа (не опять, а снова)


    Всем привет.
    Управляемые формы. Самописная конфа. Достали "ошибки сценариев" при отображении интернет-страницы в поле HTML-документа. Нет, я не пытаюсь сделать внутри 1С полноценный браузер (отсылка к общей форме "Обозреватель" в типовых), но какие-то элементарные формы, например форму авторизации на гугле, надо выводить. И выводить хотелось бы по-человечески, чтобы юзер не удивлялся ругательствам по поводу скриптов.

    Что предпринималось:
    Настраивался IE в винде, дабы игнорировал скрипты. Помогло. Но не прошло согласование ввиду неудобства настройки каждого клиентского компа.
    Выкидывались скрипты из содержимого полученной по адресу страницы при наступлении события Документсформирован. Не помогло. Ругательства успевают выскочить перед носом офигевающего юзера до того, как скрипты выкинуты.
    Документ отправлялся формироваться на сервере. Затем HTML-код очищался от скриптов и отправлялся на клиенте в поле HTML-документа. Помогло. Но нажатие кнопок и другая работа с формой на клиенте бывали затруднены - многие действия требуют контекста, который остался на сервере (куки). И даже если оставить скрипты для нужных кнопок и перетащить куки с сервера на клиент, нереально отследить все возможные переходы и варианты содержимого "чужих" страниц, и всевозможных редиректов, которые могут возникать. Потенциальная халтура детектед.
    Ковырялись типовые на предмет реализации вывода чужого HTML. Не помогло. Либо не всё еще "проковыряно", либо разрабы вендора не связываются с неизвестным HTML, либо пресекают вывод в веб-клиенте, а оставшиеся проблемы со скриптами игнорируют.

    Помогите....

    Ответ: () ценная информация, спасибо

    Вопрос: Помогите открыть сайт через поле HTML документа


    Добрый день. Есть сайт
    Который не поддерживает старые браузеры.

    Его нужно открыть в поле HTML документа.
    Пробовал делать режим совместимости:

    Сайт = "



    Загрузка...