Яндекс-карта (API 2) + геокодер Яндекс

28.01.14

Разработка - Работа с интерфейсом

Пример использования Яндекс-карт с возможностью поиска по строке или получением адреса по клику на карте

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?]
Яндекс-Карта
.epf 23,02Kb
1833
1833 Скачать бесплатно

Идеей послужила публикация Яндекс-карты: примеры работы с API 2.0. Но "прикручивание" этого примера к тонкому клиенту вызвало огромное количество проблем. После долгих танцев с бубном, мной был написан небольшой  фреймворк, который практически без проблем позволяет использовать Яндекс-карту в тонком клиенте. В результате получилось следующее:

  1. Отключены сообщения об ошибках на стороне карты
  2. При открытии, карта центрируется по ip клиента.
  3. Есть возможность управлять типом карты и элементами управления на карте из 1С (последнее состояние запоминается).
  4. По строке поиска отбираются точные (и не только) объекты на карте, которые отображаются на карте и в списке.
  5. Все метки на карте перемещаемые. При перемещении метки, также изменяется соответствующий объект в списке.
  6. К стандартному набору кнопок добавлена "Информация об объекте". В этом режиме курсор мыши приобретает вид стрелки со знаком вопроса и по клику на карте отображается информация об объекте (идея из примера в API 1.x). Этот объект можно добавить в список выбранных.

 

Цвета в списке выбранных объектов:
- черный – адрес найден по строке поиска точно;
- серый – адрес найден по строке поиска не точно;
- коричневый – адрес выбран на карте или получен при перемещении маркера в указанное место.

Цвета маркеров:
- черный – объект найден по строке поиска;
- коричневый – адрес выбран на карте или получен при перемещении маркера в указанное место;
- красный – активный маркер (соответствует текущей строке с списке объектов).

 

Обработка использует функции из БСП (конфигурации: УНФ, БП 3, УТ 11; примеры использования БСП с диска ИТС).

Если карта не работает как надо (или вообще не реагирует ни на какие действия пользователя), то нужно очистить кеш 1С (запуск с ключом /ClearCache не всегда помогает - приходится удалять полностью папки с кешированными данными; почему - остается загадкой). Также, рекомендую очистить кеш, если вы уже использовали какие нибудь другие обработки с Яндекс-картой.

Тестировал на 1C 8.2.19.68 и 8.3.3.721. На web-клиенте и на linux-платформах не тестировал. Буду признателен, если пришлете отзывы.

Данная обработка представлена как пример для ознакомления с API Яндекс-карт (согласно Пользовательскому соглашению).

См. также

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    18409    26    6    

40

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    13874    mrXoxot    43    

114

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    6376    smielka    37    

98

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    13776    830    elcoan    47    

114

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    11371    161    acces969    31    

122

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    5147    kalyaka    6    

33

Работа с интерфейсом Программист Пользователь Платформа 1С v8.3 8.3.14 Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Ещё с времен платформы 8.3.13 можно изменять цвет стилей интерфейса главного окна. Данное расширение позволит вам выбрать из подготовленных десятка стилей на свой вкус.

1 стартмани

01.07.2022    23357    378    rpgshnik    67    

93
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. maxx 995 04.02.14 22:45 Сейчас в теме
Можете подсказать возможно ли по адресу контрагента (например, фактический адрес контрагента) отобразить его на карте? Умеет ли такое делать Yandex
2. pimenushka 28 04.02.14 22:50 Сейчас в теме
Если адрес указан корректно, т.е. область, город, улица, дом то проблем нет. По крайней мере для google. Не думаю, что в яндексе хуже.
3. maxx 995 05.02.14 10:19 Сейчас в теме
(2) pimenushka, а как понять что адрес указан правильно с точки зрения карт?
4. ilyav 05.02.14 16:13 Сейчас в теме
7. pimenushka 28 10.02.14 22:47 Сейчас в теме
(3) maxx,названия географических объектов должны соответствовать названиям на яндекс-карте
5. krosaf4eg 46 08.02.14 18:29 Сейчас в теме
на веб-клиенте карта отображается, но кнопки "Добавить", "Показать все", "Обновить" и т. д. не доступны. При переключении типа карты, или элементов управления, или при клике на карту выскакивает ошибка "Метод объекта не обнаружен (eval)"

вылетает на строке

ПоследняяКоманда = Элементы.ЯндексКарта.Документ.parentWindow.eval("theMap?theMap.getLastEvent():null");

в процедуре ЯндексКартаПриНажатии(...)
user970646; +1 Ответить
6. krosaf4eg 46 08.02.14 20:58 Сейчас в теме
решил проблему с помощью трюка, описаного здесь и использованного здесь
user970646; +1 Ответить
10. BenGunn 251 27.02.14 16:15 Сейчас в теме
(6) krosaf4eg, А можно глянуть на код?
11. krosaf4eg 46 24.03.14 04:13 Сейчас в теме
(10) BenGunn, ой, а уведомления-то не приходят на почту о новых комментариях. Некропостинг получается, но на всякий случай оставлю. Я встраивал эту обработку в конфу, поэтому код еще тот говнокод сильно почикан, но, надеюсь, суть уловите, тем более, что я закомментировал первоначальный код в модуле форму Оффтоп для всех 1Сников: пользуйтесь инструментом Сравнить по содержимому в файловом менеджере Total Цоммандер

модуль формы, макет HTML
8. nastyY 11.02.14 00:09 Сейчас в теме
всеже в гугл более точно роботает . я бы выбрал гугл
9. ITEkb 26.02.14 08:37 Сейчас в теме
Нужная обработка. Забираю!
12. rsergio 80 19.04.14 18:20 Сейчас в теме
Хорошо сделано. Только не нашел возможности получения GPS координат.
13. AlexandrIII 19.04.14 18:58 Сейчас в теме
(12) rsergio, есть там в структуре "ОтветГеокодера".
14. BigB 193 20.08.14 12:11 Сейчас в теме
Валится по ошибке:
{Форма.Форма.Форма(373)}: Поле объекта недоступно для записи (ЭтотОбъект)
ЭтотОбъект = РеквизитФормыВЗначение("Объект");
Платформа: 8.3.5.924
Конфигурация: Библиотека стандартных подсистем", редакция 2.2 (2.2.3.14)

Ошибку исправил так:
&НаСервере
Процедура ИнициализацияЯндексКарты()
	ДвоичныеДанныеКартинки = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПоказатьВсе");
	НавигационнаяСсылкаКартинки = ПоместитьВоВременноеХранилище(Новый Картинка(ДвоичныеДанныеКартинки));
	ЯндексМакет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("HTML");
	ЯндексКарта = СтрЗаменить(ЯндексМакет.ПолучитьТекст(), "%КартинкаИнформация%", НавигационнаяСсылкаКартинки);
КонецПроцедуры
user970646; +1 Ответить
15. BigB 193 20.08.14 14:29 Сейчас в теме
Протестировал в вебе.
Результат - не работает.
А жаль.
Прикрепленные файлы:
16. foralex2004 12.01.16 16:21 Сейчас в теме
На web-клиенте не работает.
17. foralex2004 12.01.16 16:28 Сейчас в теме
экран
Прикрепленные файлы:
18. k9260130000 27 23.02.16 12:53 Сейчас в теме
Перестала работать обработка, запускается но элементы управления (кнопки,масштабирование) не видны. Метки при поиске также проставляются. Причем неделю назад все работало на тех же конфигах. Почините пожалуйста, ибо обработка понравилась - хотел на ее базе формирование маршрутных листов для курьеров запилить.
19. draspopov 24.02.16 14:46 Сейчас в теме
Да, работало и перестало.
20. rabanik 2 24.02.16 15:45 Сейчас в теме
Добрый день, а может кто нибудь подсказать почему перестало работать? Спасибо, большое!
21. BenGunn 251 24.02.16 16:49 Сейчас в теме
Добрый день всем!

Перестали работать все скрипты яндекс-карт 2.0 и 2.1. Причем, инициализация карт все же происходит. Причину объяснить не могу. Если кто-нибудь что-нибудь узнает, сообщите.
22. oldfornit 24.02.16 17:53 Сейчас в теме
(21) BenGunn, если не ошибаюсь, то это произошло из-за смены API
23. BenGunn 251 25.02.16 15:49 Сейчас в теме
Насколько я понял, то да, из-за смены API .

Попытаюсь объяснить. В качестве ядра html-поля 1С для windows взят IE7. Он поддерживает не все инструкции html5. Видимо, одно изменение в API (как мне кажется в методе onclick) повлекло за собой полную неработоспособность яндекс-карт в 1С. Мнение сугубо личное и, возможно, ошибочное. Проверить мою догадку могут те, кто работает на линукс-платформе (ядро html-поля - mozila).
25. cmax 106 29.02.16 09:45 Сейчас в теме
(23) BenGunn, а есть какие-нибудь варианты исправить это?
26. oldfornit 29.02.16 09:55 Сейчас в теме
(25) cmax,
1. получить ключ для API
2. заключить лицензионный договор с яндексом

ну и помнить о том, что бесплатный API запрещен к использованию в 1с
27. BenGunn 251 29.02.16 10:34 Сейчас в теме
(26) oldfornit, спасибо за совет. Сам проверил? Работает?

Но, на самом деле, от яндекса надо отходить. Я сейчас буду юзать OpenStreetMap
29. oldfornit 29.02.16 11:32 Сейчас в теме
(27) BenGunn,нет, не проверял. Просто наткнулся случайно
24. Rustavelli 17 28.02.16 14:39 Сейчас в теме
Добрый день! Тоже ищу решение проблемы, в один прекрасный день карта перестала работать, выходит вот такая ошибка:
28. Strellson 29.02.16 11:06 Сейчас в теме
Можно просто загружать последний работоспособный вариант API - у меня вновь стало работать:
<script src="https://api-maps.yandex.ru/2.1.34/?lang=ru_RU" type="text/javascript"></script>
30. cmax 106 29.02.16 12:45 Сейчас в теме
(28) Strellson, не помогает..
Что именно нужно сделать?
Попробовал заменить на предыдущую версию 2.0.41 - результат тот же.
Попробовал ваш вариант с 2.1.34 - карта вообще не прорисовывается.
31. Strellson 29.02.16 16:18 Сейчас в теме
(30) Действительно... сейчас попробовал - карта не отрисовалась... Еще вчера все работало на ура
Со второго раза отрисовалась - что-то ругнулась на сертификат и нарисовалась. Все работает
33. cmax 106 29.02.16 21:36 Сейчас в теме
(31) Strellson, у меня вместо карты - серое поле( так и не прорисовывается.. кроме "<script src="https://api-maps.yandex.ru..." еще что-нибудь меняли?
34. Smaylukk 186 29.02.16 23:51 Сейчас в теме
(33) cmax, попробуйте прописать в макете яндекс-карты поддержку IE8, если не прописано. У меня работает и открывается.
В области "HEAD", <meta http-equiv="X-UA-Compatible" content="IE=8"/>.
35. cmax 106 01.03.16 00:35 Сейчас в теме
(34) Smaylukk, да, отображаться стала! НО постоянно при работе вываливается ошибка (

36. cmax 106 01.03.16 00:44 Сейчас в теме
(34) Smaylukk, если такой ошибки нет как у меня - можете скинуть, пожалуйста, свой макет HTML для карты. возможно я где-то что-то наменял и теперь просто запутался.. моя почта max.max@bk.ru
37. Rustavelli 17 01.03.16 13:26 Сейчас в теме
(34) Smaylukk, мне тоже скиньте пожалуйста на 6981873@gmail.com
32. rabanik 2 29.02.16 18:38 Сейчас в теме
попробую, тоже карта перестала работать.
38. lextor 5 20.12.16 11:11 Сейчас в теме
Кто-нибудь решил проблему эту проблему?
39. janibeg 2 02.02.17 15:46 Сейчас в теме
скиньте пожалуйста рабочую версию на angel_link соба4ка mail.ru
40. Night_Trap 16.09.17 17:01 Сейчас в теме
Здравствуйте. И можно мне тоже рабочую версию пожалуйста night.tdk соба4ка gmail.com
41. user1131763 16.01.19 19:34 Сейчас в теме
Обработка вообще не запускается, никак не реагирует. Кэш почистил. В чем может быть проблема ?1С:Предприятие 8.3 (8.3.13.1513)
42. BenGunn 251 16.01.19 21:16 Сейчас в теме
Предполагаю, что "кризис назрел". Дело в том, что api карт ориентирован исключительно для web приложений и сервисов. Яндекс периодически вносит какие-то изменения в api, которые делают его неработоспособным в десктопных приложениях. Такое уже было не раз. Раньше я следил за этим, но, в связи с тем, что я ушел из логистики, этот процесс перестал иметь место. Есть готовая карта на api 2.1. Но времени публиковать ее сейчас просто нет
43. vynt 27.07.19 18:25 Сейчас в теме
Win 8 и 10 политика безопасности блокирует доступ к доменам третьего уровня (кроме тех, которым MS доверяет). Нужно просто в IE добавить исключение для сайтов *.yandex.ru
p.s.
можно напрямую в реестре, но путь не помню
44. zharkin 6 12.08.19 12:10 Сейчас в теме
(43) Добавление исключения для сайтов *.yandex.ru помогло?
45. Jen1978 19 18.02.20 19:33 Сейчас в теме
не работает программа
46. BenGunn 251 20.02.20 12:34 Сейчас в теме
Если вы перешли на платформу 8.3.14 и старше, про Яндекс-карты можно забывать. В движке новых релизов платформы вместо старого движка от ИЕ стал использоваться новый, написанный самой 1С, на базе Webkit. Часть функционала JS потеряна (в том числе и тот, который используется в картах яндекса). Разработчики от 1С поставили данную задачу по доработке функционала в число выполняемых, но когда это произойдет - никто не знает

https://wonderland.v8.1c.ru/blog/perevod-klientskikh-prilozheniy-dlya-windows-na-ispolzovanie-webkit-optimizatsiya-otobrazheniya-html/?sphrase_id=144726
48. SvetaBr 22.10.20 22:11 Сейчас в теме
47. cmax 106 20.02.20 16:04 Сейчас в теме
Карты работают и на 8.3.15 и на 8.3.16. Но надо дописывать, включая указание API-ключа для геокодера яндекса.
В качестве основы брал эту разработку и дальше дописывал под свои нужды:
Работа с картами 1С 4 в 1
49. SvetaBr 22.10.20 22:12 Сейчас в теме
{ВнешняяОбработка.ЯндексКарта.Форма.Форма.Форма(609)}: Ошибка при вызове метода контекста (eval)
Элементы.ЯндексКарта.Документ.parentWindow.eval(
по причине:
Неизвестная ошибка
50. alf2006x 25 17.02.23 17:12 Сейчас в теме
Свою иконку балуна в этой обработке можно подсунуть?
Интересует как тонкий так и веб клиенты.
Оставьте свое сообщение