Имя: Пароль:
1C
1С v8
1C и WebKit
0 Asim222
 
27.07.23
19:06
Добрый день, есть внешняя обработка с html документом, который отрисовывает кнопки(ссылки) с фамилиями на canvas(не столь важно). Как в 1С перехватить нажатие на эту кнопку и открыть форму записи регистра сведений по этой фамилии? Пробовал использовать методы 1С внутри html, но нет никакой реакции на нажатие по ссылке. За неимением знаний, столкнулся с данными трудностями.
1 Волшебник
 
27.07.23
19:09
событие ПриНажатии, OnClick
2 Asim222
 
27.07.23
19:11
(1) А можно немного поподробнее?
У меня есть событие OnClick в js, но на него нет реакции в 1С
3 Волшебник
 
27.07.23
19:19
(2) В свойствах HTML-поля внутри 1С есть событие ПриНажатии. Вам надо добавить туда обработчик (процедуру)
4 novichok79
 
27.07.23
21:47
делал что-то такое в 2018м году, открывал последний раз конфигуратор 2 года назад.
ну тут скорее костыльно придется делать, как и многие такие приседания.
в onClick в js заполняйте какое-то невидимое поле в html документе.
в событии в 1С смотрите в это поле и если там будет какой-то признак нажатия на кнопку, то надо открыть форму регистра сведений.
5 Asim222
 
28.07.23
05:49
(4) Вы имеете ввиду некую невидимую кнопку?
Если да, то не совсем понятно с реализацией данного метода. Кнопки в моем html документе создаются динамически, то есть в зависимости от параметров будет меняться расположение кнопки. То есть мне нужно поверх этих кнопок отрисовать некоторые невидимые кнопки и обрабатывать их нажатие уже в 1С?
6 novichok79
 
28.07.23
10:02
(5) я имею в виду невидимый div на форме куда вы пишите из скрипта на js какие-то данные, какой-то признак, например, имя формы, которую надо открыть.
при нажатии на другие кнопки, на стороне js затираете этот div.
соответственно в 1С при нажатии на кнопку смотрите в этот div в DOM дереве, если надо открыть то что надо открыть, открываете эту несчастную форму списка.
7 novichok79
 
28.07.23
10:03
ну может вебкит в 1Сине за годы моего отсутствия эволюционировал и все это не нужно и делается гораздо проще.
8 iddroide
 
28.07.23
11:13
Заинтересовался темой и попробовал сделать на основе того, что нагуглил.

Создал форму c полем HTML документа. В HTML документ загрузил текст HTML (из макета):
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ВрОбъект = РеквизитФормыВЗначение("Объект");
    ДокументHTML = ВрОбъект.ПолучитьМакет("МакетHTML").ПолучитьТекст();
    
КонецПроцедуры

Содержимое текстового макет:

<html><head>
<script>
        function isEmail() {
        document.getElementById("FunctionName").innerHTML = "Функция1";
        document.getElementById("FunctionName").onclick();
   }
  </script>
</head>
<body>
<div id="FunctionName" hidden></div>
<p><input type="button" value="Нажми меня" onclick="isEmail()"></p>
</body></html>

На форме создал обработчик события ПриНажатии для поля HTML документа:

&НаКлиенте
Процедура ДокументHTMLПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
    
    ЭлементHTML = ДанныеСобытия.Document.getElementById("FunctionName");
    ИмяФункции  = ЭлементHTML.innerHTML;
    
    Если ИмяФункции = "" Тогда
        Возврат
    КонецЕсли;    
    
    Если ИмяФункции = "Функция1" Тогда
        Сообщить("Вызываем функцию 1");
        ЭлементHTML.innerHTML = "";
    КонецЕсли;    
    
КонецПроцедуры

Кликаем по кнопке HTML и получаем сообщения от 1С. Всё просто хоть и костыльно.
9 novichok79
 
28.07.23
12:06
(8) ну типа я это и предлагал выше.
10 iddroide
 
28.07.23
12:34
(9) Да, я именно это и пытался сделать)