Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Взаимодействие 1С и javascript , 1С 8, управляемые формы          
Vofka Подменю пользователя
сообщение 18.04.14, 11:46
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Лирика: в наше время интеграция с другими информационными системами, программными продуктами и технологиями повсюду. С развитием web-а интеграция с ним так же сейчас используется на каждом шагу. Один из самых распространенных примеров интеграции 1С с web - это отображение карт внутри 1С, прокладывание маршрутов по ним и т.п. Для этого в 1С используется ПолеHTMLДокумента, в которое подгружается текст страницы и дальше описываются правила взаимодействия. Для успешной работы с этим нужно "это" как-то вызывать из 1С и часто нужно иметь обратную связь.

Я покажу 2 вещи:
1) Как из 1С можно вызвать javascript функцию
2) Как из javascript вызвать функцию 1С

Рассматривать это буду в контексте работы управляемой форме. В обычной форме все схоже.

Как из 1С можно вызвать javascript функцию?

Текст страницы:
HTML
<html>
<head>
<title>Test</title>
<script type='text/javascript'>
function message(mes) {
alert(mes)
}
</script>
</head>
<body>
</body>
</html>


Вызвать функцию message можно двумя способами. Делать это нужно в процедуре/функции с директивой компиляции &НаКлиенте

Раз:
Элементы.ИмяРеквизитаПоляХТМЛДокумента.Документ.parentWindow.eval("message('тест')");


Два:
Элементы.ИмяРеквизитаПоляХТМЛДокумента.Документ.parentWindow.message("тест");


Но это просто, дальше будет интересней.

Как из javascript вызвать функцию 1С?

Для этого нужно сделать специальную инфраструктуру в коде javascript-а на страничке.

Текст страницы:
HTML
<html>
<head>
<title>Test</title>
<script type='text/javascript'>
var evtObj = document.createEventObject();
var myParam;
function f(){
var now = new Date();
document.body.myParam = now.toString();
document.body.fireEvent('onhelp', evtObj);
}
</script>
</head>
<body>
<br />
<input type=""button"" value=""Go"" onclick=""f()"" />
</body>
</html>


В функции f() передать параметры в 1С можно путем присваивания значения переменной myParam. Теперь в 1С в обработчике события ПриНажатии ПоляHTMLДокумента получаем это значение:
ЗначениеПеременнойДжаваСкрипт = ДанныеСобытия.Document.body.myParam;


Скорей всего есть и другие способы передать что-то из javascript в 1С, как-то даже более красивее, но на данный момент других рабочих вариантов я не знаю. Если кто-то поделится, я думаю, это будет не только мне полезно узнать.

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

(с) Моё

Сообщение отредактировал Vofka - 22.04.14, 11:14

Спасибо сказали: taipan, Егор Динин,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 7:22
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!