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С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день

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

Программист 1С
Самара
зарплата от 50 000 руб. до 100 000 руб.
По совместительству


Ведущий программист 1С
Сочи
зарплата от 82 500 руб. до 99 000 руб.
Полный день