1. digitta 16.05.19 18:07 Сейчас в теме

вызов js функции в 8.3.14

Добрый вечер. Подскажите, пожалуйста, как вызвать js из 1С. Я совсем не знаю JS, а изучать его с нуля нет времени сейчас. Суть: В версии 8.3.14 в свойство Документ элемента ПолеHTMLДокумента содержит ВнешнийОбъект. Это мой HTML-документ, в котором объявлена функция func(str). Как её вызвать и передать ей параметр - текстовую строку. Делаю так:
Элементы.HTML_документ.Документ.window.eval(func('текст_строки'));
Естественно, не работает.....
Найденные решения
4. deGreese 17.05.19 12:06 Сейчас в теме
Вариантов я вижу два.
1. Где-то в скрипте синтаксическая ошибка, парсер на ней спотыкается и молча завершает работу. Соответственно у объекта window не появляется никаких новых методов.
2. Вы пытаетесь обратиться к функции до окончания загрузки страницы. Все функции скрипта доступны только после срабатывания у поля HTML события "Документ сформирован".

Если ошибка синтаксическая, можно закомментировать весь скрипт, и потихоньку раскрывая комментарий ловить место где спотыкается парсер js.
Остальные ответы
Избранное Подписка Сортировка: Древо
2. deGreese 17.05.19 08:21 Сейчас в теме
Если на странице объявлена функция, например такая:
function SomeFunction(){
  alert('Йа функцийа!');
}

То вызвать ее из 1С можно вот так:
Элементы.ПолеHTMLДокумента.Документ.defaultView.SomeFunction();


Аналогично можно передавать и параметры
function SomeFunctionWithParam(Param){
  alert('Йа функцийа, а это мой параметр: '+Param);
}

Ну и вызывается вот так:
Элементы.ПолеHTMLДокумента.Документ.defaultView.SomeFunctionWithParam("Какой-то параметр функции");


Вот кстати никогда не понимал, зачем используют eval для вызова функций на странице, так исторически сложилось? :) В этом не было смысла с движком IE, нет и сейчас.

У меня вообще есть идея написать небольшую статейку про вызов функций в обе стороны, после перехода на WebKit, вот только не знаю востребовано ли это будет? Недавно переводил один проект написанный под Осла, получилось с минимальными переделками сделать.
3. digitta 17.05.19 10:37 Сейчас в теме
Вызываю как вы указали:
Элементы.ПолеHTMLДокумента.Документ.defaultView.SomeFunctionWithParam("Какой-то параметр функции");

Очень долго думает, потом выдает:
Метод объекта не обнаружен (findAdress)
Элементы.ЯндексКарта.Документ.defaultView.findAdress(стр);


Проверил скрип - функция описана. В чем я еще мог накосячить?
4. deGreese 17.05.19 12:06 Сейчас в теме
Вариантов я вижу два.
1. Где-то в скрипте синтаксическая ошибка, парсер на ней спотыкается и молча завершает работу. Соответственно у объекта window не появляется никаких новых методов.
2. Вы пытаетесь обратиться к функции до окончания загрузки страницы. Все функции скрипта доступны только после срабатывания у поля HTML события "Документ сформирован".

Если ошибка синтаксическая, можно закомментировать весь скрипт, и потихоньку раскрывая комментарий ловить место где спотыкается парсер js.
5. digitta 17.05.19 13:03 Сейчас в теме
(4) спасибо, сейчас проработаю оба варианта
6. digitta 17.05.19 17:19 Сейчас в теме
Вариант №2. Обращение к функции происходит раньше, чем загружается API Яндекс.Карт. Спасибо за помощь!
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата до 120 000 руб.
Полный день

Работа от Инфостарт
Санкт-Петербург
Временный (на проект)

Программист 1С
Новосибирск
зарплата от 80 000 руб.
Полный день

Руководитель отдела внедрения 1С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день