Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

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

вызов js функции в 8.3.14
Я
   digitta
 
16.05.19 - 18:44
Добрый вечер. Подскажите, пожалуйста, как вызвать js из 1С. Я совсем не знаю JS, а изучать его с нуля нет времени сейчас. Суть: В версии 8.3.14 в свойство Документ элемента ПолеHTMLДокумента содержит ВнешнийОбъект. Это мой HTML-документ, в котором объявлена функция func(str). Как её вызвать и передать ей параметр - текстовую строку. Делаю так:

Элементы.HTML_документ.Документ.window.eval(func('текст_строки'));

Естественно, не работает.....
 
 
   Garykom
 
1 - 16.05.19 - 18:47
http://catalog.mista.ru/public/398366/

Eval нету и Документ.parentWindow нету

Есть Элементы.HTML_документ.Документ.defaultView

Перевод с модели IE на модель Webkit 8.3.14 платформа
   Garykom
 
2 - 16.05.19 - 18:48
Нечто вроде
Элементы.HTML_документ.Документ.defaultView.func('текст_строки')
попробуй
   digitta
 
3 - 16.05.19 - 18:55
Неправильная константа типа Дата
    Элементы.HTML_документ.Документ.defaultView.func(<<?>>'текст_строки');
   Garykom
 
4 - 16.05.19 - 18:59
(3) Кавычки исправь
   digitta
 
5 - 16.05.19 - 19:06
Поправил. Теперь ошибка теперь не вылетает, но функция не отрабатывает.
   Garykom
 
6 - 16.05.19 - 19:07
(5) Добавь в функцию Alert("Сообщение") что будет?
   Garykom
 
7 - 16.05.19 - 19:10
И да не факт что функция рабочая после смены движка IE на WebKit
   Garykom
 
8 - 16.05.19 - 19:15
У меня например в 1С:Предприятие 8.3 (8.3.14.1565) так работает прекрасно
   digitta
 
9 - 16.05.19 - 19:17
не выводит сообщение, значит не входит в функцию. платформа у меня та же
   digitta
 
10 - 16.05.19 - 19:18
<!DOCTYPE html PUBLIC "//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=8">
    <style type="text/css">
      html { height: 100% }
      body { height: 100%; margin: 0px; padding: 0px }
      #map { height: 100% }
    </style>
    <script src="https://api-maps.yandex.ru/2.1/?apikey=3ebf705a-b58a-4352-87a4-60f03edd2119&load=package.full&lang=ru_RU"></script>;
    <script src="http://yandex.st/jquery/1.6.4/jquery.min.js"; type="text/javascript"></script>

    <script type="text/javascript">
    var index = 1;
    var MyMap, route;
    var clusterer;
    var PointArray = [];
    var noclick = false;


    ymaps.ready(init)
    
        function init() {
        var myMap = new ymaps.Map('map', {
            center: [55.753994, 37.622093],
            zoom: 9
        });
        
       //window.addEventListener('load', findAdress('Витебск');
    }
    
    function findAdress(address) {
        Alert("Сообщение");
            // Поиск координат центра Нижнего Новгорода.
        ymaps.geocode(address, {
            /**
             * Опции запроса
             * see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/geocode.xml
             */
            // Сортировка результатов от центра окна карты.

            // boundedBy: myMap.getBounds(),

            // strictBounds: true,

            // Вместе с опцией boundedBy будет искать строго внутри области, указанной в boundedBy.

            // Если нужен только один результат, экономим трафик пользователей.

            results: 1
        }).then(function (res) { 
                // Выбираем первый результат геокодирования.

                var firstGeoObject = res.geoObjects.get(0),
                    // Координаты геообъекта.

                    coords = firstGeoObject.geometry.getCoordinates(),
                    // Область видимости геообъекта.

                    bounds = firstGeoObject.properties.get('boundedBy');

                firstGeoObject.options.set('preset', 'islands#darkBlueDotIconWithCaption');

                // Получаем строку с адресом и выводим в иконке геообъекта.

                firstGeoObject.properties.set('iconCaption', firstGeoObject.getAddressLine());

                // Добавляем первый найденный геообъект на карту.

                myMap.geoObjects.add(firstGeoObject);
                // Масштабируем карту на область видимости геообъекта.

                myMap.setBounds(bounds, {
                    // Проверяем наличие тайлов на данном масштабе.

                    checkZoomRange: true
                });
                /**
                 * Если нужно добавить по найденным геокодером координатам метку со своими стилями и контентом балуна, создаем новую метку по координатам найденной и добавляем ее на карту вместо найденной.
                 */
                /**
                 var myPlacemark = new ymaps.Placemark(coords, {
                 iconContent: 'моя метка',
                 balloonContent: 'Содержимое балуна <strong>моей метки</strong>'
                 }, {
                 preset: 'islands#violetStretchyIcon'

                 });

                 myMap.geoObjects.add(myPlacemark);
                 */
            });
    }
    
</script>
</head>

<body>
    <div id="map" style="width:100%; height:100%"></div>
        
    <input type="hidden" id="address" name="address" value="Полоцк, проспект Скорины 2"/>
    <input type="hidden" id="CoordX" name="CoordX" value="0"></input>
    <input type="hidden" id="CoordY" name="CoordY" value="0"></input>
    <input type="hidden" id="RouteInfo" name="RouteInfo" value=""></input>
    <input type="hidden" id="WebClientOperation" name="WebClientOperation" value="0"></input>
    <input type="hidden" id="WebClient" name="WebClient" onclick="WebClientClick();"></input>
</body>
</html>
   Garykom
 
11 - 16.05.19 - 19:19
Кстати кто в курсе как глянуть в WebKit ошибки JavaScript и загрузки страницы в целом?

Вот написал вместо
function test(ttt){
просто
func test(ttt){// сча на голанг просто перестроился

и результат ноль

Как бы глянуть то страница нормально сформировалась или нет?
   digitta
 
12 - 16.05.19 - 19:20
из 1с вызываю findAdress(address)

стр = "Витебск";                                                         
Элементы.ЯндексКарта.Документ.defaultView.findAdress(стр);
   Garykom
 
13 - 16.05.19 - 19:23
Дай код страницы в нормальном виде файлом через обменник какой
   Garykom
 
14 - 16.05.19 - 19:24
(13)+ В смысле весь .html
   digitta
 
15 - 16.05.19 - 19:29
   Garykom
 
16 - 16.05.19 - 19:31
   Garykom
 
17 - 16.05.19 - 19:33
блин просто сюда но оформи в теги Книга знаний: Кнопка для вставки в сообщения тегов [1C]
"[1C]"
   Garykom
 
18 - 16.05.19 - 19:33
(17) + [/1C]
   digitta
 
19 - 16.05.19 - 19:33
сорри... там одно скачиание указано было... перезалил
https://dropmefiles.com/laQej
   Garykom
 
20 - 16.05.19 - 19:33
Примерно так

   digitta
 
21 - 16.05.19 - 19:46
скачался из файлообменника?
   Garykom
 
22 - 16.05.19 - 19:47
(21) Да и свои добавленные функции даже не отрабатывают.

Короче надо изучать исходники там походе некое подавление идет или глюки какие то.
В пустой html странице или без левых скриптов все пашет.
   digitta
 
23 - 16.05.19 - 19:51
пашет (
   Garykom
 
24 - 16.05.19 - 20:12
Короче предложу сразу инициализировать с переданными данными для геокодера.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=8">
    <style type="text/css">
      html { height: 100% }
      body { height: 100%; margin: 0px; padding: 0px }
      #map { height: 100% }
    </style>
    <script src="https://api-maps.yandex.ru/2.1/?apikey=3ebf705a-b58a-4352-87a4-60f03edd2119&load=package.full&lang=ru_RU"></script>;
    <script src="http://yandex.st/jquery/1.6.4/jquery.min.js"; type="text/javascript"></script>

    <script type="text/javascript">
    var index = 1;
    var MyMap, route;
    var clusterer;
    var PointArray = [];
    var noclick = false;

    ymaps.ready(init);

    function init(){
            ymaps.geocode('Архангельск').then(function (res) {
                myMap = new ymaps.Map('map', {
                    center: res.geoObjects.get(0).geometry.getCoordinates(), zoom: 10
                });
        });
        }
    
    function findAdress(address) {
        Alert("Сообщение");
            // Поиск координат центра Нижнего Новгорода.
        ymaps.geocode(address, {
            /**
             * Опции запроса
             * see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/geocode.xml
             */
            // Сортировка результатов от центра окна карты.
            // boundedBy: myMap.getBounds(),
            // strictBounds: true,
            // Вместе с опцией boundedBy будет искать строго внутри области, указанной в boundedBy.
            // Если нужен только один результат, экономим трафик пользователей.
            results: 1
        }).then(function (res) {
                // Выбираем первый результат геокодирования.
                var firstGeoObject = res.geoObjects.get(0),
                    // Координаты геообъекта.
                    coords = firstGeoObject.geometry.getCoordinates(),
                    // Область видимости геообъекта.
                    bounds = firstGeoObject.properties.get('boundedBy');

                firstGeoObject.options.set('preset', 'islands#darkBlueDotIconWithCaption');
                // Получаем строку с адресом и выводим в иконке геообъекта.
                firstGeoObject.properties.set('iconCaption', firstGeoObject.getAddressLine());

                // Добавляем первый найденный геообъект на карту.
                myMap.geoObjects.add(firstGeoObject);
                // Масштабируем карту на область видимости геообъекта.
                myMap.setBounds(bounds, {
                    // Проверяем наличие тайлов на данном масштабе.
                    checkZoomRange: true
                });
                /**
                 * Если нужно добавить по найденным геокодером координатам метку со своими стилями и контентом балуна, создаем новую метку по координатам найденной и добавляем ее на карту вместо найденной.
                 */
                /**
                 var myPlacemark = new ymaps.Placemark(coords, {
                 iconContent: 'моя метка',
                 balloonContent: 'Содержимое балуна <strong>моей метки</strong>'
                 }, {
                 preset: 'islands#violetStretchyIcon'
                 });

                 myMap.geoObjects.add(myPlacemark);
                 */
            });
    }
    
</script>
</head>

<body>
    <div id="map" style="width:100%; height:100%"></div>
        
    <input type="hidden" id="address" name="address" value="Полоцк, проспект Скорины 2"/>
    <input type="hidden" id="CoordX" name="CoordX" value="0"></input>
    <input type="hidden" id="CoordY" name="CoordY" value="0"></input>
    <input type="hidden" id="RouteInfo" name="RouteInfo" value=""></input>
    <input type="hidden" id="WebClientOperation" name="WebClientOperation" value="0"></input>
    <input type="hidden" id="WebClient" name="WebClient" onclick="WebClientClick();"></input>
</body>
</html>


   Garykom
 
25 - 16.05.19 - 20:13
(24)+ Короче на лету страницу перестраивай и вызывай с новыми текстом html где внутри уже прописано что надо.

Изврат конечно но что поделать.
   digitta
 
26 - 16.05.19 - 20:18
ну так-то работает, но хочется изящного решения. да и разобраться тоже в чем там у меня дело тоже хлчеться - может когда-нибудь снова будет нужно мне или кому-нибудь
   Garykom
 
27 - 16.05.19 - 20:20
Это 1С, это хардкор!
   Garykom
 
28 - 16.05.19 - 20:21
Чем хуже чем в коде прописывать Справочники.Номенклатура.НайтиПоКоду("0001") ? :)
   digitta
 
29 - 16.05.19 - 20:23
не понял
   Garykom
 
30 - 16.05.19 - 20:27
(29) Лишь бы работало как надо и устраивало заказчика, наводить красоту некогда.
К черту изящество если для этого надо перелопать весь апи от яндекса чтобы понять где разрешить выполнять сторонний код.

У меня сча почему то не работает перемещение-перетаскивание мышкой по карте, зафиксировано в одном месте.
И я хз что за это отвечает, копаться надо.
 
 
   digitta
 
31 - 17.05.19 - 17:25
Разобрался:
Вызов функции действительно производиться так как вы описали. Но в моем случае её вызов происходил до того как загружалось API ЯндексКарт. Естественно, логика моей функции без загруженного API не отрабатывалась.

Спасибо за помощь!
   Garykom
 
32 - 17.05.19 - 17:34
(31) А alert то почему не отрабатывает?
   digitta
 
33 - 17.05.19 - 22:00
alert был внутри функции.
и у меня такое впечатление, что alert вообще не работает в среде webkit
   Garykom
 
34 - 17.05.19 - 22:01
(33) На пустом документе замечательно работает я же проверял.
   Garykom
 
35 - 17.05.19 - 22:03
Скорее всего кода загрузки ymaps работает слишком долго и блокирует все прочие вызовы функций.

Надо бы проверить, свою функцию засунуть раньше чем загрузка ymaps


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.