Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 сен 2024, 08:26

Карта расположения клиента

Автор 1СNachalo, 01 мая 2018, 08:18

0 Пользователей и 1 гость просматривают эту тему.

1СNachalo

Надо: в форме списка справочника Контрагенты при выборе контрагента выводить его расположение на карте.

Нашла вот такое классное видео на тему географических карт в 1С http://youtu.be/-v2GIphl6OY&t=1257s.

Только там выводится карта в виде отчета.



Применительно к своей задаче попробовала немного изменить. Ошибок ни дает ни синтаксических, ни при запуске 1С. Но карты тоже нет.

Может кто подскажет, что надо изменить.



В общем модуле получена переменная с адресом контрагента Адрес.

Тут же ниже прописываю:



АдресФактическийКонтрагента=Адрес;

// 1) получение координат адреса

ЗапросЯндексу= Новый HTTPЗапрос("1.x/?results=1&format=json&geocode="+КодироватьСтроку(АдресФактическийКонтрагента,СпособКодированияСтроки.КодировкаURL)); СоединениеСЯндексом= новый HTTPСоединение("geocode-maps.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);

ЧтениеДжо = Новый ЧтениеJSON;   

ЧтениеДжо.УстановитьСтроку(СоединениеСЯндексом.Получить(ЗапросЯндексу).ПолучитьТелоКакСтроку());   

Джо= ПрочитатьJSON(ЧтениеДжо, Истина);   

МассивЛокаций = Джо ["response"]["GeoObjectCollection"]["featureMember"];   

Если   МассивЛокаций.Количество()>0 Тогда     Регион = МассивЛокаций
  • ["GeoObject"]["description"];   

    Локация = СтрЗаменить(МассивЛокаций
  • ["GeoObject"]["Point"]["pos"]," "  ,  ",");

    // 2) получение изображения по координатам     СоединениеСКартами= Новый HTTPСоединение ("static-maps.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);   

    ЗапросККартам= Новый HTTPЗапрос("1.x/?size=450,450&z=13&l=map&pt="+Локация+",pm2rdl1");   

    Карта = ПоместитьВоВременноеХранилище(Новый Картинка(СоединениеСКартами.Получить(ЗапросККартам).ПолучитьТелоКакДвоичныеДанные()));       

    КонецЕсли;



    ///////////////////////////////////////////////////////////////

    первую строку очень изменила.

    В видео примерно так:

    АдресФактическийКонтрагента=ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Параметры.Контрагент,"АдресФактическийКонтрагента");



    У меня:

    АдресФактическийКонтрагента=Адрес;

    Может так не работает? Или что-то другое?

    Вывод информации здесь( в этой части общего модуля) идет через поле html. Т.е., чтобы  что-то вывести, прописываю, например:
    HTMLТекст = HTMLТекст + "<td>Здесь будет карта объекта</td>";

    Может, не хватает какого-то тега для вывода сформированного изображения карты?

1СNachalo

Добавила тег:
HTMLТекст = HTMLТекст +" <img src = " + Карта + ">";

никаких ошибок не выдает, но и карты тоже нет.
Добавлено: 01 мая 2018, 17:12


Во-общем, карта появляется, но не для всех клиентов. При этом если и появляется, то с совершенно неправильным расположением (Бразилия и т.д., хотя запрашиваемые адреса исключительно СНГ). Проверила: в переменную Адрес попадают правильные адреса. Если напрямую вводить такие адреса в Яндекс-карту - отображает правильно, а через 1С - те же адреса считываются криво.
Кто-нибудь может подсказать, почему они не правильно обрабатываются через написанный таким образом код (т.е.находятся неправильные адреса или не находятся вовсе)?
Добавлено: 01 мая 2018, 19:49


Итог на данный момент: если адрес в переменную попадает русскими буквами - Бразилия и т.п.
То же самое переписываю англ.буквами - выдает точнейший адрес.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск