Имя: Пароль:
1C
1С v8
вызов метода 1С из поля html-документа
,
0 Игорь_МММ
 
24.03.22
19:54
передаю в переменную java управляемую форму:


&НаКлиенте
Процедура ПолеHTMLДокументаДокументСформирован(Элемент)
    Элементы.ПолеHTMLДокумента.Документ.DefaultView.externalForm = ЭтотОбъект;
КонецПроцедуры

в java переменная определена:

<script type="text/javascript">
      
       var myMap;
       var externalForm = null;

и из 1С эта переменная в принципе видна через Элементы.ПолеHTMLДокумента.Документ.DefaultView.externalForm

но увы форма не передается, в отладчике Элементы.ПолеHTMLДокумента.Документ.DefaultView.externalForm = неопределено
если передать что-то типа строки или числа - все хорошо передается и java выводит переданное значение

в чем косяк?
1 Юрий Лазаренко
 
24.03.22
19:57
(0) А как яваскрипт должен распознать тип "УправляемаяФорма"?
И что вы потом с этой переменной в js хотите делать?
2 Игорь_МММ
 
24.03.22
19:59
(1) надо вызвать из java метод формы 1с
3 Игорь_МММ
 
24.03.22
20:00
взял отсюда:

https://infostart.ru/public/398366/

"Вызов методов 1С из JavaScript

В тонком клиенте под Windows доступен очень удобный метод:

В HTML документе создается глобальная переменная, например externalForm. При загрузке документа, переменной externalForm присваивается ссылка на текущую упрваляемую форму, доступную через ЭтотОбъект или ЭтаФорма.

Затем, в коде JavaScript становятся доступны любые клиентские экспортные методы и переменные модуля данной управляемой формы.

Пример: ....."
4 Ivan_495
 
24.03.22
20:03
может к разработчику обратиться. у меня есть похожие решения. интеграция с яндекс картами))
5 Kassern
 
24.03.22
20:05
(3) это статья от 15 года. А вы скорее всего пытаетесь на новой платформе с вебкитом реализовать подобный механизм...
6 Kassern
 
24.03.22
20:06
почитайте вот это
https://habr.com/ru/post/481768/
7 Игорь_МММ
 
24.03.22
20:07
(5) да, подозревал это ... где-то встречал тоже самое от 19 года

а как теперь это делается?
8 Игорь_МММ
 
24.03.22
20:08
(6) о спасибо
9 Kassern
 
24.03.22
20:15
(7) вроде как это была дыра в защите, поэтому отказались от подобного и сделали более изолированным html поле. Могу ошибаться. Представьте, зная процедуру, любой может образно нажать ctrl+shift+alt+f12 и подменить html документ и в нем вызвать какую-то процедуру 1с.
10 Юрий Лазаренко
 
24.03.22
20:33
(2) Размещаете на странице html скрытый элемент, например, div. Когда надо вызвать функцию 1С, помещаете в содержимое этого элемента имя функции и параметры и делаете в js для этого элемента эмуляцию нажатия.
В 1С у поля HTML сработает событие ПриНажатии, в которое в качестве параметра будет передан скрытый элемент. Из его содержимого достаете имя вызываемой функции и параметры, запускаете что требуется.
11 Юрий Лазаренко
 
24.03.22
20:40
(9) Оно изолированное, но общение возможно как в одну сторону, так и в другую. Изоляция дает преимущества, мы, например, один и тот же код используем для формирования html-страницы как в тонком клиенте, так и в отдельном окне браузера, и все работает без проблем. Потому что полю все равно, где оно отображается: оно изолированное. Пример - канбан внутри 1С: https://s1.hostingkartinok.com/uploads/images/2022/03/b9fdd1c8d3aa0b60957608de28109a86.png
и в отдельной странице браузера: https://s1.hostingkartinok.com/uploads/images/2022/03/a2ab0664014fc8262ebc97f97b742aaa.png
При перетаскивании задачи в другую колонку вызывается один и тот же код 1С, который меняет статус задачи.