Работа с картами 1С 3 в 1: Яндекс, Google , 2ГИС

0. Головаченко Дима (Smaylukk) 531 28.12.12 00:14 Сейчас в теме
С каждым годом становится все очевидно, что использование онлайн-сервисов намного упрощает жизнь. К сожалению по картографическим сервисам условия пока жестковаты. Но, ориентируясь на будущее, я решил показать возможности API выше указанных сервисов:
Инициализация карты
Поиск адреса на карте с текстовым представлением
Геокодинг
Обратная поиск адреса по ее координатами
Взаимодействие с картами - прием координат установленного на карте метки
Построение маршрутов по указанным точками
Кластеризация меток на карте при увеличении масштаба
Теперь также поддержка тонкого и веб-клиента

Перейти к публикации

Комментарии
101. Головаченко Дима (Smaylukk) 531 03.07.15 16:41 Сейчас в теме
(99) mishulasashula2005,
Не прогрузилась карта. Я в обработке использовал следующее:
  • Добавил переменную, которая бы означала, что HTML-Документ сформирован;
  • В методе ПоляHTMLДокумента ДокументСформирован() проверял "Если ЭлементыФормы.Эксплорер.Документ.url <> "about:blank" Тогда"
  • Когда условие срабатывало - в переменную писался признак успешной инициализации и запускался нужный обработчик
Ниже пример кода:
Если Не мКартаИнициализирована Тогда
		Если ЭлементыФормы.Эксплорер.Документ.url <> "about:blank" Тогда
			мКартаИнициализирована = Истина;
			//подключаем или запускаем нужный обработчик
			ПодключитьОбработчикОжидания("НужныйОбработчик", 0.5, Истина);
		КонецЕсли;
	КонецЕсли;
...Показать Скрыть
102. Юлия Пермякова (mishulasashula2005) 06.07.15 09:30 Сейчас в теме
Огромное спасибо! Все сработало!
103. Юрий Фандеев (Apatic) 10.08.15 14:13 Сейчас в теме
Спасибо огромное за обработку. Очень любопытно.

Единственная проблема, которую нашел (ну кроме вышеописанных уже) в УФ, при запуске Яндекс карт выдается ошибка скрипта.

Как ни отключал в свойствах IE всякие галочки - ничего не помогло :(

Скрин ошибки https://yadi.sk/i/r2lRuCTciNBq7

Никто больше не сталкивался?
104. Головаченко Дима (Smaylukk) 531 10.08.15 17:24 Сейчас в теме
(103) Apatic, эта ошибка периодически вываливается при загрузке карты. Возможно связана с обновлением релиза стабильной версии.
Не поборол в чистом виде. На функциональность дальше не влияет, по крайней мере у меня.
Можно отключить уведомление - описал в (76)
105. Юрий Фандеев (Apatic) 16.08.15 22:44 Сейчас в теме
(104) Smaylukk, Что примечательно, в веб-клиенте эта ошибка не возникает.
А мне как раз и нужен был веб-клиент, слава богу:)
106. Алексей Беспалов (FreeArcher) 52 21.08.15 09:59 Сейчас в теме
Отличный пример. Пытаюсь разобраться и параллельно пишу свой код.
У меня не срабатывает позиционирование на найденном адресе.
Т.е. я ввожу строку поиска, в сообщении получаю координаты, карта дергается, но не показывает наеденный объект.
В твоей обработки это работает, но я не могу найти где это позиционирование запускается? Подскажи пожалуйста.
107. Алексей Беспалов (FreeArcher) 52 21.08.15 10:03 Сейчас в теме
Разобрался сам, за это отвечает
&НаКлиенте
Процедура ПоискАдреса(Адрес)
	Элементы.ПолеHTML.document.getElementById("WebClientOperation").value = "FindAdres(""" + Адрес + """);";
	Элементы.ПолеHTML.document.getElementById("WebClient").click();
КонецПроцедуры

...Показать Скрыть
108. ac86 (Aleanza) 21.08.15 11:40 Сейчас в теме
Добрый день.

хочу поблагодарить за разработку
109. Головаченко Дима (Smaylukk) 531 21.08.15 23:52 Сейчас в теме
(107) FreeArcher, конкретно этот код отвечает за вызов метода в тонком и веб клиентах.
А позиционирование - это метод panTo() в АПИ Яндекс-карт.
110. Алексей Беспалов (FreeArcher) 52 04.09.15 08:38 Сейчас в теме
Разрабатываю свое "Рабочее место менеджера по доставке" использую приведенные примеры, за что огромное спасибо!
При построении кластера есть 2 недоработки:
1. Не отображается название точки.
2. Не очищается массив точек при очистки карты.

А я как раз хочу использовать этот механизм, чтобы выводить адреса доставок и адрес использовать в качестве надписи. Можешь подсказать, как это поправить?
111. Алексей Беспалов (FreeArcher) 52 04.09.15 09:49 Сейчас в теме
(110)
Проблему решил следующим кодом

	function addToPointArray(CoordX, CoordY, ID, Text){
		var point = new ymaps.GeoObject({
		    geometry: {type: "Point", coordinates: [CoordX, CoordY]},
		    properties: {
		    
		    iconContent: ID,///!!!
	        balloonContentBody: Text
		    }
			});
		PointArray.push(point);
	}
	
	function drawCluster(){
		clusterer.removeAll();//!!!!
		clusterer.add(PointArray);
		myMap.geoObjects.add(clusterer);
	}
...Показать Скрыть
112. Головаченко Дима (Smaylukk) 531 04.09.15 13:09 Сейчас в теме
(110) , (111) - на момент публикации все делалось на основе АПИ Яндекс-карт 2.0. Для кластеризации они писали, что лучше использовать точки (point) вместо меток (placemark), т.к. последние ресурсоемкие, а кластеризация предполагает вывод большого числа точек. А у точки меньше параметров, нежели у метки, поэтому доп. инфо можно было поместить в балун, что вы и сделали.
По удалению - в 2.0 надо было удалять каждый созданный объект отдельно, из-за этого их надо сначала помещать в массив, а потом из массива брать объекты и удалять. В 2.1 добавили для Map метода по удалению всех элементов с карты - стало гораздо проще :)
Также сейчас, в песочнице для 2.1, показано, что кластеризация делается с помощью меток. Может оптимизировали и стало менее ресурсоемкое - не изучал этот вопрос. Попробуйте
113. Алексей Беспалов (FreeArcher) 52 07.09.15 11:15 Сейчас в теме
(112) Спасибо, освоил метки (placemark).

Теперь есть ещё задача посчитать длину маршрута.
Есть функция у тебя:
	function calcRoute(options){
		ymaps.route(options, {
	        // Опции маршрутизатора
	        mapStateAutoApply: true, // автоматически позиционировать карту
	        avoidTrafficJams: true   // Учитывать пробки
	    }).then(
		    function (router) {
		    route = router;
		        myMap.geoObjects.add(route);
		        
		        //заполняем и сохраняем инфо про маршрут
		        document.getElementById('RouteInfo').value = "Длина маршрута - " + route.getHumanLength() + ". Время - " + route.getHumanJamsTime();
		        
		        //генерация события для перехвата в 1С
		        var evt = document.createEventObject();
  				document.body.fireEvent('ondatasetcomplete', evt);
		    },
		    function (error) {
		        alert("Возникла ошибка: " + error.message);
	    });
	}
...Показать Скрыть


в ней вроде как все есть. Но как из неё вытянуть значение "route.getHumanLength()" я непойму. Подскажи пожалуйста?
114. Головаченко Дима (Smaylukk) 531 07.09.15 15:10 Сейчас в теме
(113) FreeArcher, в переменную RouteInfo помещается нужно значение и оттуда уже из 1С можно считать это значение.
Но проблема в том, что построение маршрута асинхронное, т.е. неясно когда оно закончится.
В толстом клиенте проще - можно сгенерировать какое-то событие ПоляHTMLДокумента и в нем уже кодом получать значение. В примере это событие "ondatasetcomplete()".
В тонком сложнее - надо подключать обработчик ожидания, который будет проверять, закончилось или нет построение маршрута.
115. Алексей Беспалов (FreeArcher) 52 16.09.15 13:13 Сейчас в теме
(114)
FreeArcher, в переменную RouteInfo помещается нужно значение и оттуда уже из 1С можно считать это значение

Вот скажи, как из этой переменной получить значение? Как код 1С выглядит для этого, вот я что спрашиваю?
116. Головаченко Дима (Smaylukk) 531 16.09.15 17:07 Сейчас в теме
(115) FreeArcher,
Толстый клиент - ЭлементыФормы.Эксплорер.document.getElementById("RouteInfo").value
Толстый клиент - Элементы.Эксплорер.document.getElementById("RouteInfo").value
FreeArcher; +1 Ответить
117. Алекс (Justlink) 13.10.15 13:12 Сейчас в теме
Никто не знает, что случилось с гуглокартами в 1С? Вместо карт - белый фон и всё. Правда рисуется по бокам служебные иконки, вроде масштаба ит.д.
118. Головаченко Дима (Smaylukk) 531 13.10.15 16:51 Сейчас в теме
(117) Justlink, скорее всего - обновилось API Google Maps.
Вот тут говорится, что нужен браузерный ключ.
119. olo lo (olo_lo4) 30.10.15 10:55 Сейчас в теме
Добрый день!
Спасибо за классный пример, очень интересно.

А как сделать что бы на примере Яндекс-карт он еще выводил непосредственно маршрут, например
ул А- ул Б 1300 м
ул Б - МКАД 2345 м
МКАД - поворот на ул С 1200 м
ул С 300 м

У меня стоит задача расписать именно так маршрут для доставки и самое важное отслеживать расстояние от МКАД далее до точки доставки
Заранее спасибо
120. olo lo (olo_lo4) 30.10.15 11:07 Сейчас в теме
Да, и еще на примере карты яндекса, есть ли возможность что бы в зависимости от какого то признака маршрут стоился либо оптимально по точкам , либо оптимально по точкам в зависимости от пробок
121. Головаченко Дима (Smaylukk) 531 04.11.15 12:07 Сейчас в теме
(119) olo_lo4, смотрите в песочнице яндекса https://tech.yandex.ru/maps/jsbox/2.1/multiroute_view_options. Относительно МКАД - там в двух словах не опишешь.
122. Головаченко Дима (Smaylukk) 531 04.11.15 12:09 Сейчас в теме
(120) olo_lo4, Яндес по-умолчанию строит все свои маршруты оптимальными. За учитывание ситации с пробками на дорогах отвечает параметр avoidTrafficJamsфункции route
123. Xer shi (Xershi) 267 04.11.15 12:17 Сейчас в теме
Взял на заметку. Пока с этим функционалом работать не приходилось, но думаю на будущее будет полезно!
124. Ekz men (Ekzamenator) 06.11.15 00:09 Сейчас в теме
Безусловный плюс в карму!
Запросы яндексу можно заменить на
Яндекс = Новый HTTPСоединение("geocode-maps.yandex.ru/1.x/", , , , , Истина);
или
Яндекс = Новый HTTPСоединение("geocode-maps.yandex.ru/1.x/",,,,,, Новый ЗащищенноеСоединениеOpenSSL());
оба варианта работают.
Еще небольшие ошибки попадались, но это мелочи.
125. Владимир Насыров (Spacer) 259 04.02.16 10:47 Сейчас в теме
Здравствуйте!
Подскажите пожалуйста почему при открытии гугл карты выходит такая ошибка:
"MarkerClusterer" не определено.
126. Головаченко Дима (Smaylukk) 531 05.02.16 10:05 Сейчас в теме
(125) Spacer, пока ответить не могу, т.к. не знаю причину. Если найду время - попробую привести обработку к работающему варианту.
127. Сергей Огородников (Serg O.) 133 18.02.16 17:37 Сейчас в теме
неделю назад работало... вчера перестало

Яндекс - сразу при открытии:
https://api-maps.yandex.ru/2.0.43/release/combine.xml?modules=3N5x6D3G373R3H3_-j.C_e_h-,-)5e5h8H.I5n_b$w$y$A784Q-K-L9Z$d$a9x9R8a7)-e797

Гугл выдеёт ошибку
https://maps.google.com/maps-api-v3/api/js/24/0/intl/ru_ALL/onion.js


2GIS еще работает
128. Slon747 Захаров (Slon747) 22.02.16 12:27 Сейчас в теме
У меня тоже гугл стал выдавать:
Ошибка: Script error
URL: https://maps.google.com/maps-api-v3/api/js/24/0/intl/ru_ALL/onion.js
129. Головаченко Дима (Smaylukk) 531 23.02.16 10:38 Сейчас в теме
(125),(127),(128) , обновлена обработка в публикации.
130. Евгений Мадонов (madonov) 151 25.02.16 07:43 Сейчас в теме
Есть способ вывести Яндекс-карту на печать (кроме скриншота)?
131. Slon747 Захаров (Slon747) 25.02.16 15:46 Сейчас в теме
(129) Скажите, для загрузки исправленной обработки нужно заново приобретать абонемент, если старый просрочен?
132. Евгений Мадонов (madonov) 151 26.02.16 02:37 Сейчас в теме
А яндекс снова не работает.

Как они достали честное слово.
Прикрепленные файлы:
133. Евгений Мадонов (madonov) 151 26.02.16 03:16 Сейчас в теме
Если
content="IE=8"
заменить на
content="IE=9", то ошибка при инициализации карты пропадает, но возникают проблемы при работе.

Например, если нажать кнопку "обновить" -
{Форма.Форма.Форма(80)}: Метод объекта не обнаружен (eval)
ЭлементыФормы.Эксплорер.Документ.parentWindow.eval("FindAdres(""" + Адрес + """);");



Адрес апи пробовал менять на 2.1.35 - не помогает.

Обсуждение на яндексе

ВРЕМЕННОЕ РЕШЕНИЕ - пишите 2.1.34 при подключении
Sheff; DanilaDru; +2 Ответить
134. Ирина Л (ppirina) 26.02.16 11:04 Сейчас в теме
(97) Smaylukk, спасибо большое! Ваш совет очень помог.
135. Головаченко Дима (Smaylukk) 531 26.02.16 11:08 Сейчас в теме
(130) madonov, Пока такого способа не нашел
136. Головаченко Дима (Smaylukk) 531 26.02.16 11:08 Сейчас в теме
(131) Slon747, Это зависит от политики инфостарта.
137. Головаченко Дима (Smaylukk) 531 26.02.16 11:10 Сейчас в теме
(132) madonov, Обновил обработку.
Или же открыть макет яндекса и поменять скрипт подключения апи на
<script src="http://api-maps.yandex.ru/2.1.34/?lang=ru_RU" type="text/javascript"></script>
138. Владимир Насыров (Spacer) 259 01.03.16 17:55 Сейчас в теме
(129) Smaylukk, Что-то опять та же ошибка в гугле: "MarkerClusterer" не определено.
В начале выскакивает, а потом нормально.
139. Головаченко Дима (Smaylukk) 531 01.03.16 18:24 Сейчас в теме
(138) Spacer, открывал обработку в толстом и тонком клиенте - ошибки нет, кластеризация работает.
140. Vit Vit (teca) 03.03.16 11:23 Сейчас в теме
Smaylukk, вопрос если возможность маркировать точки не 1, 2 ,3 а указать именно адрес или контрагента
141. Головаченко Дима (Smaylukk) 531 03.03.16 13:07 Сейчас в теме
(140) teca, что в Google, что в Яндекс - выводятся не цифры, а "Точка 1" и т.д. Так что, если заменить на свое название - будет отображаться.
142. Гость 18.03.16 14:06 Сейчас в теме
(141) Smaylukk, глупый вопрос, но как передать адрес в ТЗ на форме вместо "Точки 1, 2 и т.д."?
143. Головаченко Дима (Smaylukk) 531 18.03.16 17:27 Сейчас в теме
(142) Гость, Вопрос не глупый. Это действительно не так просто сделать.
Надо в коде макета карты, в месте, где отрабатывается клик мыши и создается маркер на карте, вставить функцию обратного геокодинга, который по координатам определит адрес и передать его в переменную карты, куда сейчас передаются "Точка 1, 2, и т.д." и 1С сама его считает.
144. Гость 22.03.16 15:33 Сейчас в теме
(143) Smaylukk, еще раз извиняюсь за беспокойство, но это то и главная проблема - функцию обратного геокодинга я нашел в песочнице яндекс апи, там вроде бы ничего сложного и все пояснено комментариями, а вот как передать содержимое метки на форму - непонятно.
145. Головаченко Дима (Smaylukk) 531 23.03.16 11:16 Сейчас в теме
(144) Гость, через переменные HTML.
В макетах они обьявляются так - <input type="hidden" id="ИмяПеременной" name="ИмяПеременной" value="0"></input>.
Считываются следующим кодом:
Толстый клиент - ЭлементыФормы.Эксплорер.document.getElementById("ИмяПеременной").value
Толстый клиент - Элементы.Эксплорер.document.getElementById("ИмяПеременной").value.
Иногда геокодинг не успеет отработатьтся быстро, т.к. там асинхронный вызов, и после вызова этого метода в 1С через "eval", в переменной может быть пусто, тогда надо подключать обработчик ожидания, который будет проверять переменную на заполненность.
Это все есть в коде обработки.
146. Andrei A (wmonref1) 26.03.16 15:59 Сейчас в теме
Ув. Smaylukk, подскажите пожалуйста, куда надо ввести ключ API?
147. Головаченко Дима (Smaylukk) 531 27.03.16 12:41 Сейчас в теме
(146) wmonref1, ключ надо прописать в макете, в блоке инициализации АПИ.
Яндекс - https://tech.yandex.ru/maps/doc/jsapi/2.1/dg/concepts/load-docpage/
Google - https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API
wmonref1; +1 Ответить
148. Nikita Prokopev (Seraf1no) 01.04.16 10:00 Сейчас в теме
Добрый день! Вопрос такой - создал регистр сведений, планирую оттуда брать записи. Есть ли возможность реализовать отображения на карте выбранных адресов?
149. Головаченко Дима (Smaylukk) 531 01.04.16 13:50 Сейчас в теме
(148) Seraf1no, да, используйте методы макетов карт или же алгоритмы из обработки.
Примерно похоже на то, как в обработке реализовано отображение на карте найденных адресов, при их выделении в таблице.
150. Nikita Prokopev (Seraf1no) 05.04.16 13:33 Сейчас в теме
(149) Smaylukk, вот еще вопрос. Из всех найденных адресов из ТЗ можно вывести лишь один, при выборе другого предыдущая метка затирается. А где функция, отвечающая за затирание предыдущей метки? WebClientClick изменял в макете, ситуация никак не менялась. Если это узнать, то останется совсем немного додумать как сразу выводить много меток, а так непонятно...
151. Головаченко Дима (Smaylukk) 531 05.04.16 17:27 Сейчас в теме
(150) Seraf1no, надо искать использование метода Reset(), как в коде обработки, так и в коде макета
Noxie41; Seraf1no; +2 Ответить
152. Руслан Хитров (Sheff) 06.04.16 17:42 Сейчас в теме
(133) madonov,
ВРЕМЕННОЕ РЕШЕНИЕ - пишите 2.1.34 при подключении


Спасибо добрый человек. Потратил час разбираясь, если бы не ваш совет - неизвестно сколько бы ещё времени ушло!
153. Руслан Хитров (Sheff) 06.04.16 17:48 Сейчас в теме
(150) Seraf1no,
задача то какая? Вывести на яндекс карту несколько меток с адресами?
154. Сергей Степанов (DirtyCat) 06.04.16 18:19 Сейчас в теме
8.3.4.408 не пашет вызов функций из 1с в JS. API подключаю так:

<meta http-equiv="X-UA-Compatible" content="IE=9"></meta>
<script src="http://api-maps.yandex.ru/2.1.34/?lang=ru_RU></script>

В платформе затык или каким-нибудь хитрым способом надо?
155. Головаченко Дима (Smaylukk) 531 06.04.16 22:14 Сейчас в теме
(154) DirtyCat, пробуйте играться с параметром "IE"
156. Nikita Prokopev (Seraf1no) 07.04.16 07:41 Сейчас в теме
(153) Sheff, уже вывел, как и говорил выше, как только разобрался с функцией Reset, загнал процедуру
ТаблицаАдресовВыбор
в цикл и вывел все метки с адресами в балуны. Теперь другая проблема - как передать значение имени из ТЗ на форме в заголовок балуна.
2.1.38 кстати работает, правда тормозит сильно почему-то.
157. Руслан Хитров (Sheff) 07.04.16 09:50 Сейчас в теме
(154) DirtyCat,
<met a http-equiv="X-UA-Compatible" content="IE=9"></meta>
<sc ript src="http://api-maps.yandex.ru/2.1.34/?lang=ru_RU></sc ript>

В платформе затык или каким-нибудь хитрым способом надо?


Нужно IE = 8
<met a http-equiv="X-UA-Compatible" content="IE=8"></meta>
158. Руслан Хитров (Sheff) 07.04.16 09:58 Сейчас в теме
(156) Seraf1no,
в цикл и вывел все метки с адресами в балуны. Теперь другая проблема - как передать значение имени из ТЗ на форме в заголовок балуна.

ты же как то передаешь адреса, передавай и метки, а в функции вывода меток на карте получай переданную метку
159. Nikita Prokopev (Seraf1no) 07.04.16 10:33 Сейчас в теме
(158) Sheff, если рассматривать передачу из 1С в JS, то адреса передаются через Adres, который в свою очередь в
ОбратнПоискАдреса
является Адрес, широта и долгота - это соответствуют CoordX и CoordY. Имена же я получаю запросом из РегистраСведений. Логика та же, что и с адресом, вы правы, но как передать имя неясно.
160. Сергей Степанов (DirtyCat) 08.04.16 09:45 Сейчас в теме
Sheff, да ты прав. с ie=8 заработало, но только на локальном пк, а на сервере че то тупит (2008 R2). карта открывается только в режиме ie=9, на 8 нет. либо политики ковырять надо либо хз. версия explorer одинаковая 11я.
161. Руслан Хитров (Sheff) 11.04.16 16:01 Сейчас в теме
(160) DirtyCat,
Если на серве 2008R2 то это политики безопасности IE. Можешь добавить адрес карт в доверенные узлы.
wmonref1; +1 Ответить
162. Azard Group (AzardGroup) 12.05.16 14:21 Сейчас в теме
Добрый день. Подскажите, пожалуйста, в чем может быть причина следующей ошибки: MarkerClusterer не определено
163. Головаченко Дима (Smaylukk) 531 13.05.16 19:29 Сейчас в теме
(162) AzardGroup, пока ее не встречал, поэтому не могу подсказать что к чему.
164. Alex Nikulin (Al-77) 54 25.05.16 22:00 Сейчас в теме
Гугл что то ругается при создании карты и любого события (( ошибка такая MarkerClusterer не определено
165. Alex Misanets (Misanets) 334 26.05.16 10:02 Сейчас в теме
(162) AzardGroup, (164) Al-77, Кто-нибудь решил проблему с картами Google, в частности с ошибкой "MarkerClusterer" не определено?

Прикрепленные файлы:
166. Роман Кормщиков (RUDSOFT) 20 07.06.16 16:54 Сейчас в теме
(165) Misanets, я решил, там проблема в том что Гугл сменил адрес Api
надо сменить
<script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js"></script>
на
<script type="text/javascript" src="https://cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/src/markerclusterer.js"></script>

и создание кластера

mcOptions = {averageCenter: true, gridSize: 50, maxZoom: 15, imagePath: 'https://cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/images/m'};
clusterer = new MarkerClusterer(myMap, markers, mcOptions);


только теперь проблема с полигонами, не могу разобраться... возможно дело в том что гугл перестал поддерживает старые браузеры типа IE8
если сохранить пример в html, то в хроме всё запускается нормально, а вот в IE8 пишет, что браузер не поддерживается
167. Иван Иванов (scream2000) 21.06.16 13:56 Сейчас в теме
(166) RUDSOFT, Выбор конкретной версии апи (более старой, например 3.01) гугла решает проблему
168. Роман Ша (Shamzelia) 23.06.16 15:05 Сейчас в теме
мдя, вообщем готового решения нет....
169. Роман Ша (Shamzelia) 23.06.16 18:06 Сейчас в теме
Ну что, Есть кто допилил ?
170. Александр Фомин (alex15650) 104 15.07.16 18:15 Сейчас в теме
(76) Smaylukk, а в каком месте нужно вставить этот код?
171. Головаченко Дима (Smaylukk) 531 16.07.16 09:33 Сейчас в теме
(170) alex15650, к сожалению тот скрирт уже не работает.
Я решил это переводом совместимости IE в "IE=9". Но тогда слетает метод eval ().
Так что дополнительно надо переписать весь код взаимодействия с яндекс-картами.
За основу взял способ, который использовал в управляемой форме этой обработки - передача кода в один ,лемент управления и принудительный клик по втором.
Но на ИС есть и лрурие срособы.
172. Александр Фомин (alex15650) 104 17.07.16 13:15 Сейчас в теме
(171) Smaylukk, а можно поподробнее о реализации? ))
173. Головаченко Дима (Smaylukk) 531 17.07.16 14:01 Сейчас в теме
(172) alex15650, откройте управляемую форму этой обработки и посмотрите, как там устроен обмен с HTML-документом
174. Андрей (andrey-st) 18.07.16 09:37 Сейчас в теме
175. Евгений Мадонов (madonov) 151 19.07.16 10:24 Сейчас в теме
Кто победил очередное обновление API от яндекса?

Под IE = 8 Ошибки сыпятся при загрузке карты.
Под IE = 9 Карта грузится, по дальше ошибка "метод объекта не обнаружен - eval", которая возникает в куске кода:
ЭлементыФормы.Эксплорер.Документ.parentWindow.eval("Reset()");


Пробовал разные версии API - живой вариант не нашел.
176. Головаченко Дима (Smaylukk) 531 19.07.16 14:36 Сейчас в теме
(175) madonov, eval в IE=9 и выше не работают из соображений безопасности.
Как исправить ответил в (171) - но есть условности.
Опишу еще раз - в макет добавляем две input'а скрытых (в самой обработке есть).
И вместо вызова eval, передаем в значение одного input'а код и вызываем клик у другого.
Это реализовано в управляемых формах обработки
177. Евгений Мадонов (madonov) 151 22.07.16 09:07 Сейчас в теме
(176) Smaylukk, Большое спасибо за наводку. Карта снова работает.
Но есть баг - работает она только до переоткрытия.

То есть, если закрыть обработку, а потом снова запустить, то при работе возникает ошибка
{Обработка.РаботаСКартами.Форма.Форма.Форма(608)}: Ошибка при вызове метода контекста (click)
ЭлементыФормы.Эксплорер.document.getElementById("WebClient").click();
по причине:
Произошла исключительная ситуация (htmlfile): Не удалось завершить действие. Ошибка 8070000b.


Перезапускаешь программу целиком - снова всё работает.
Переоткрываешь обработку - ошибка.
Поглядел процедуры "При закрытии" обычной и управляемой формы - разницы не увидел. Временные файлы при закрытии подчищаются.

Не подскажешь, куда копать?
178. Головаченко Дима (Smaylukk) 531 22.07.16 12:27 Сейчас в теме
(177) madonov, подскажу.
Это все баг платформы.
Тестировал на 8.3.4 и 8.3.7 - такая же ошибка.
Только на последней версии 8.3.8 все заработало без ошибок.
179. Евгений Мадонов (madonov) 151 26.07.16 03:07 Сейчас в теме
(178) Smaylukk, сегодня часик поковырялся
Временные файлы 1С складывает в \AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\ , однако их чистка не помогает.
Проблема где-то на уровне взаимодействия платформы и mshtml.dll. При повторном запуске в COM-объект передается какой-то бред.

Придется убрать у формы обработки кнопку закрытия =)).
180. Головаченко Дима (Smaylukk) 531 29.07.16 15:34 Сейчас в теме
Обновлена обработка:
[*] Отказ от использования метода eval() в обычных формах
[*] Перевод работы макетов в режим совместимости IE=9 и больше - открываются больше возможностей карт и меньше ошибок.
[*] Перевод 2GIS на API 2.0
[-] 2GIS - в версии 2.0 отсутствует встроенный js-геокодер
[*] Google-map - исправлена проблема с кластеризатором
[-] На версиях 1С ниже 8.3.7 при повторном открытии возможно отключение функционала HTML-документа. Скорее всего это внутрення ошибка платформы, которые исправлена в более поздних версиях.
mephistofel; madonov; +2 Ответить 1
181. Сергей Иванкин (user595298_s.ivankin) 02.08.16 17:37 Сейчас в теме
Яндекс 27-ого числа выключил 2.0.42 и у меня сломалась мега обработка по прорисовке областей.
Дайте ссылку на обработку, а то StartMoney совсем нет.
182. Макс Михайлов (mephistofel) 02.08.16 23:30 Сейчас в теме
Спасибо за обработку! Версия от 29 июля работает без ошибок. :-)
183. Яков Коган (Yashazz) 2095 10.08.16 15:04 Сейчас в теме
Может, я чего не понял, но на гугле синим по белому написано: "Для всех приложений Google Maps Geocoding API требуется аутентификация с помощью ключа API.", а автор утверждает, что ключ не нужен. Итак?
184. Головаченко Дима (Smaylukk) 531 11.08.16 10:00 Сейчас в теме
(183), да, вы не поняли.
Я не утверждал, что не нужен ключ для гугл-карт. В статье написано, что не нужен ключ для этой обработки.
Т.е. она без него нормально пока отображает карту. Ну а в руководстве написано что он нужен.
Так что со временем, я думаю, отключат возможность пользоваться без ключа.
185. Oleg Havrysh (Oleeeg) 11.08.16 15:50 Сейчас в теме
А кто подскажет как при построении маршрута на метках выводить текст что указан в таблице точек а не просто "1", "2" и т.д.??
186. Головаченко Дима (Smaylukk) 531 12.08.16 16:45 Сейчас в теме
(185), в песочнице Яндекса можно найти пример. И по нему уже реализовать себе.
К примеру - https://tech.yandex.ru/maps/jsbox/2.1/multiroute_view_options
187. azat Токторов (a3a) 10 16.08.16 05:42 Сейчас в теме
(180) Smaylukk, Странно, у меня не работает, но и ошибок не выдает. просто полез в отладчик даже ни
ЭлементыФормы.Эксплорер.document.getElementById("WebClientOperation").value = "Reset()";
ни
ВыполнитьСкрипт("Reset()");
ни
ЭлементыФормы.Эксплорер.document.getElementById("Reset()"); не работают. вч чем может быть проблема?
188. Головаченко Дима (Smaylukk) 531 16.08.16 09:28 Сейчас в теме
(187) a3a, если не работает именно эта обработка, которая обновлена, то единственное, что приход на ум - это связано с IE. Либо его настройки, либо его обновить надо.
ЭлементыФормы.Эксплорер.document.getElementById("WebClientOperation").value = "Reset()"; работать не будет, т.к. нужно еще сэмулировать нажатие на элемент "WebClient"

ЭлементыФормы.Эксплорер.document.getElementById("Reset()"); - это вообще непонятная конструкция.
190. Pavlo Silin (milk911) 16.08.16 12:37 Сейчас в теме
Ребят, а какой код обработчика ONCLICK у WebClient для Yandex карт?
Спасибо!
191. azat Токторов (a3a) 10 17.08.16 05:53 Сейчас в теме
(188) Smaylukk, да, в этой обработке.
а ЭлементыФормы.Эксплорер.document.getElementById("Reset()");
имелось ввиду через Eval()
или ЭлементыФормы.Эксплорер.document.Reset(); раньше в IE = 8 работали.
192. V1V Фамилия (V1V) 104 19.08.16 07:26 Сейчас в теме
В терминальном режиме не прорисовывает карту. Точки, подписи показывает, а самой карты нет. Это настройки IE или на сервере какой-то доступ не предоставлен к сайту яндекса? Доступ открывали к https://api-maps.yandex.ru/2.1/?lang=ru_RU и https://geocode-maps.yandex.ru. Может еще куда-то надо?
193. Головаченко Дима (Smaylukk) 531 19.08.16 13:57 Сейчас в теме
(192), настройте еще свойства обозревателя в IE.
Я не знаю что именно поможет, но начать можете с активных сценариев.
194. Головаченко Дима (Smaylukk) 531 19.08.16 14:00 Сейчас в теме
(191) a3a, карты яндекса в новой версии обработки переведены на поддержку IE=9. Там eval() недоступно в целях безопасности.
Как я и писал ранее - скорее всего проблема кроется в браузере.
В макете Яндекса пропишите alert'ы, чтобы узнать - заходит вызывается метод или нет.
195. Олег Кострицын (recon) 34 25.08.16 17:06 Сейчас в теме
Подскажите как можно отключить тулбар на яндекс картах в 1С (строка поиска, переключатель типа карт и т.д.)?
В документации нашел вот это https://tech.yandex.ru/maps/doc/jsapi/1.x/dg/tasks/how-to-add-map-controls-docpage/
Но попытка вставить код в процедуру инициализации карты init() (там где доступен объект map) приводит к ошибкам
196. Денис Никитин (DeniNikitin) 29 20.09.16 18:26 Сейчас в теме
Подскажите как можно реализовать и можно ли вообще при клике на метку автоматически увеличивать масштаб карты?
197. Денис Никитин (DeniNikitin) 29 21.09.16 08:37 Сейчас в теме
(196) DeniNikitin,

Реализовал так!

myMap.geoObjects.events.add('click', function(e) {
var targetObject = e.get('target');

if (targetObject.geometry.getType() === 'Point') {
myMap.setCenter(targetObject.geometry.getCoordinates(), FOCUS_ZOOM, {
checkZoomRange: true
});
}
});
198. Victor (V_K) 22.09.16 06:31 Сейчас в теме
А у вас не возникает ошибка при работе с яндекс картами "Не удалось получить свойство toUpperCase"?
199. Дмитрий Кузьменко (Дмитрий_кдс) 22.09.16 10:52 Сейчас в теме
Добрый день. Подскажите, как обойти проблему Eval() на обычных формах?
200. Дмитрий Кузьменко (Дмитрий_кдс) 22.09.16 11:00 Сейчас в теме
обычные формы 8.3 платформа
201. Головаченко Дима (Smaylukk) 531 22.09.16 17:00 Сейчас в теме
(199) Дмитрий_кдс, А какая именно проблема?
Если использовать в макете совместимость с IE=8 - этот метод доступен.
Если выше - он отключен по соображению безопасности, но отключен именно у ПоляHTMLДокумента. От платформы не зависит.
Это исправлено в новой версии обработки.
Если коротко - используется метод click() элемента HTML.
Оставьте свое сообщение