Идеей послужила публикация Яндекс-карты: примеры работы с API 2.0. Но «прикручивание» этого примера к тонкому клиенту вызвало огромное количество проблем. После долгих танцев с бубном, мной был написан небольшой фреймворк, который практически без проблем позволяет использовать Яндекс-карту в тонком клиенте. В результате получилось следующее:
- Отключены сообщения об ошибках на стороне карты
- При открытии, карта центрируется по ip клиента.
- Есть возможность управлять типом карты и элементами управления на карте из 1С (последнее состояние запоминается).
- По строке поиска отбираются точные (и не только) объекты на карте, которые отображаются на карте и в списке.
- Все метки на карте перемещаемые. При перемещении метки, также изменяется соответствующий объект в списке.
- К стандартному набору кнопок добавлена «Информация об объекте». В этом режиме курсор мыши приобретает вид стрелки со знаком вопроса и по клику на карте отображается информация об объекте (идея из примера в API 1.x). Этот объект можно добавить в список выбранных.
Цвета в списке выбранных объектов:
— черный – адрес найден по строке поиска точно;
— серый – адрес найден по строке поиска не точно;
— коричневый – адрес выбран на карте или получен при перемещении маркера в указанное место.
Цвета маркеров:
— черный – объект найден по строке поиска;
— коричневый – адрес выбран на карте или получен при перемещении маркера в указанное место;
— красный – активный маркер (соответствует текущей строке с списке объектов).
Обработка использует функции из БСП (конфигурации: УНФ, БП 3, УТ 11; примеры использования БСП с диска ИТС).
Если карта не работает как надо (или вообще не реагирует ни на какие действия пользователя), то нужно очистить кеш 1С (запуск с ключом /ClearCache не всегда помогает — приходится удалять полностью папки с кешированными данными; почему — остается загадкой). Также, рекомендую очистить кеш, если вы уже использовали какие нибудь другие обработки с Яндекс-картой.
Тестировал на 1C 8.2.19.68 и 8.3.3.721. На web-клиенте и на linux-платформах не тестировал. Буду признателен, если пришлете отзывы.
Данная обработка представлена как пример для ознакомления с API Яндекс-карт (согласно Пользовательскому соглашению).
Можете подсказать возможно ли по адресу контрагента (например, фактический адрес контрагента) отобразить его на карте? Умеет ли такое делать Yandex
Если адрес указан корректно, т.е. область, город, улица, дом то проблем нет. По крайней мере для google. Не думаю, что в яндексе хуже.
(2) pimenushka, а как понять что адрес указан правильно с точки зрения карт?
(3) maxx,http://maps.yandex.ru/ написать его тут
на веб-клиенте карта отображается, но кнопки «Добавить», «Показать все», «Обновить» и т. д. не доступны. При переключении типа карты, или элементов управления, или при клике на карту выскакивает ошибка «Метод объекта не обнаружен (eval)»
вылетает на строке
ПоследняяКоманда = Элементы.ЯндексКарта.Документ.parentWindow.eval(«theMap?theMap.getLastEvent():null»);
в процедуре ЯндексКартаПриНажатии(…)
решил проблему с помощью трюка, описаногоздесь и использованного здесь
(3) maxx,названия географических объектов должны соответствовать названиям на яндекс-карте
всеже в гугл более точно роботает . я бы выбрал гугл
Нужная обработка. Забираю!
(6) krosaf4eg, А можно глянуть на код?
(10) BenGunn, ой, а уведомления-то не приходят на почту о новых комментариях. Некропостинг получается, но на всякий случай оставлю. Я встраивал эту обработку в конфу, поэтому код еще тот говнокод сильно почикан, но, надеюсь, суть уловите, тем более, что я закомментировал первоначальный код в модуле форму Оффтоп для всех 1Сников: пользуйтесь инструментом Сравнить по содержимому в файловом менеджере Total Цоммандер
Хорошо сделано. Только не нашел возможности получения GPS координат.
(12) rsergio, есть там в структуре «ОтветГеокодера».
Валится по ошибке:
{Форма.Форма.Форма(373)}: Поле объекта недоступно для записи (ЭтотОбъект)
ЭтотОбъект = РеквизитФормыВЗначение(«Объект»);
Платформа: 8.3.5.924
Конфигурация: Библиотека стандартных подсистем», редакция 2.2 (2.2.3.14)
Ошибку исправил так:
Протестировал в вебе.
Результат — не работает.
А жаль.
На web-клиенте не работает.
экран
Перестала работать обработка, запускается но элементы управления (кнопки,масштабирование) не видны. Метки при поиске также проставляются. Причем неделю назад все работало на тех же конфигах. Почините пожалуйста, ибо обработка понравилась — хотел на ее базе формирование маршрутных листов для курьеров запилить.
Да, работало и перестало.
Добрый день, а может кто нибудь подсказать почему перестало работать? Спасибо, большое!
Добрый день всем!
Перестали работать все скрипты яндекс-карт 2.0 и 2.1. Причем, инициализация карт все же происходит. Причину объяснить не могу. Если кто-нибудь что-нибудь узнает, сообщите.
(21) BenGunn, если не ошибаюсь, то это произошло из-за смены API
Насколько я понял, то да, из-за смены API .
Попытаюсь объяснить. В качестве ядра html-поля 1С для windows взят IE7. Он поддерживает не все инструкции html5. Видимо, одно изменение в API (как мне кажется в методе onclick) повлекло за собой полную неработоспособность яндекс-карт в 1С. Мнение сугубо личное и, возможно, ошибочное. Проверить мою догадку могут те, кто работает на линукс-платформе (ядро html-поля — mozila).
Добрый день! Тоже ищу решение проблемы, в один прекрасный день карта перестала работать, выходит вот такая ошибка:
(23) BenGunn, а есть какие-нибудь варианты исправить это?
(25) cmax,
1. получить ключ для API
2. заключить лицензионный договор с яндексом
ну и помнить о том, что бесплатный API запрещен к использованию в 1с
(26) oldfornit, спасибо за совет. Сам проверил? Работает?
Но, на самом деле, от яндекса надо отходить. Я сейчас буду юзать OpenStreetMap
Можно просто загружать последний работоспособный вариант API — у меня вновь стало работать:
<script src=»https://api-maps.yandex.ru/2.1.34/?lang=ru_RU» type=»text/javascript»></script>
(27) BenGunn,нет, не проверял. Просто наткнулся случайно
(28) Strellson, не помогает..
Что именно нужно сделать?
Попробовал заменить на предыдущую версию 2.0.41 — результат тот же.
Попробовал ваш вариант с 2.1.34 — карта вообще не прорисовывается.
(30) Действительно… сейчас попробовал — карта не отрисовалась… Еще вчера все работало на ура
Со второго раза отрисовалась — что-то ругнулась на сертификат и нарисовалась. Все работает
попробую, тоже карта перестала работать.
(31) Strellson, у меня вместо карты — серое поле( так и не прорисовывается.. кроме «<script src=»https://api-maps.yandex.ru…» еще что-нибудь меняли?
(33) cmax, попробуйте прописать в макете яндекс-карты поддержку IE8, если не прописано. У меня работает и открывается.
В области «HEAD», <meta http-equiv=»X-UA-Compatible» content=»IE=8″/>.
(34) Smaylukk, да, отображаться стала! НО постоянно при работе вываливается ошибка (
(34) Smaylukk, если такой ошибки нет как у меня — можете скинуть, пожалуйста, свой макет HTML для карты. возможно я где-то что-то наменял и теперь просто запутался.. моя почта max.max@bk.ru
(34) Smaylukk, мне тоже скиньте пожалуйста на 6981873@gmail.com
Кто-нибудь решил проблему эту проблему?
скиньте пожалуйста рабочую версию на angel_link соба4ка mail.ru
Здравствуйте. И можно мне тоже рабочую версию пожалуйста night.tdk соба4ка gmail.com
Обработка вообще не запускается, никак не реагирует. Кэш почистил. В чем может быть проблема ?1С:Предприятие 8.3 (8.3.13.1513)
Предполагаю, что «кризис назрел». Дело в том, что api карт ориентирован исключительно для web приложений и сервисов. Яндекс периодически вносит какие-то изменения в api, которые делают его неработоспособным в десктопных приложениях. Такое уже было не раз. Раньше я следил за этим, но, в связи с тем, что я ушел из логистики, этот процесс перестал иметь место. Есть готовая карта на api 2.1. Но времени публиковать ее сейчас просто нет
Win 8 и 10 политика безопасности блокирует доступ к доменам третьего уровня (кроме тех, которым MS доверяет). Нужно просто в IE добавить исключение для сайтов *.yandex.ru
p.s.
можно напрямую в реестре, но путь не помню
(43) Добавление исключения для сайтов *.yandex.ru помогло?