Имя: Пароль:
1C
 
Карта расположения клиента
0 1CNachalo
 
01.05.18
08:14
Надо: в форме списка справочника Контрагенты при выборе контрагента выводить его расположение на карте.

Нашла вот такое классное видео на тему географических карт в 1С https://www.youtube.com/watch?v=-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 Тогда      Регион = МассивЛокаций [0] ["GeoObject"]["description"];    

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

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

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

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

КонецЕсли;



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

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

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

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



У меня:

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

Может так не работает? Или что-то другое?
1 arsik
 
гуру
01.05.18
08:23
Возможно это старое видео и апи яндекс карт поменялось.
Попробуйте руками создать урл и ввести его в браузере.
2 1CNachalo
 
01.05.18
08:27
(0) И еще:
Вывод информации здесь( в этой части общего модуля) идет через поле html. Т.е., чтобы  что-то вывести, прописываю, например:
HTMLТекст = HTMLТекст + "<td>Здесь будет карта объекта</td>";

Может, не хватает какого-то тега для вывода сформированного изображения карты?
3 1CNachalo
 
01.05.18
08:34
Добавила тег:
HTMLТекст = HTMLТекст +" <img src = " + Карта + ">";

никаких ошибок не выдает, но и карты тоже нет.
4 Cyberhawk
 
01.05.18
08:38
Бывает, держись там
5 1CNachalo
 
01.05.18
08:56
(1) Если правильно Вас поняла.
Набрала руками строку с видео
https://geocode-maps.yandex.ru/1.x/?geocode=Москва,+Тверская+улица,+дом+7

Выдало "This XML file does not appear to have any style information associated with it. The document tree is shown below." и длинный код.

Гугл переводчик перевел: "
У этого XML-файла нет никакой информации, связанной с ним. Дерево документов показано ниже."

Это значит, что я что-то не правильно делала, повторяя за видео? Изменился адрес? Другое?
6 Lexey_
 
01.05.18
10:22
(5) зачем гадать? есть же документация
https://tech.yandex.ru/maps/staticapi/?from=mapsapi
7 1CNachalo
 
01.05.18
11:12
(6) Спасибо, сейчас посмотрю
8 hhhh
 
01.05.18
12:52
(7) всё-таки style с английского переводится как стиль. Выкиньте этот гугл-переводчик
9 1CNachalo
 
01.05.18
13:09
(8) учту, спасибо
10 1CNachalo
 
01.05.18
13:13
(6) по этому адресу все сверила: все в видео совпадает, идут ровненько по этому сайту.
Перепроверила все в своем коде. Как там. Отличие: пишу его не для отчета и не в отчете, а для формы справочника и в общем модуле.
Еще 1 строка кода отличается.
Но ошибок не выдает. Но и результата тоже(
11 Franchiser
 
гуру
01.05.18
16:56
Держи нас в курсе
12 1CNachalo
 
01.05.18
17:14
(11) Вы, наверное, шутите)
Но мало ли, вдруг кто что подскажет..
Во-общем, карта появляется, но не для всех клиентов. При этом если и появляется, то с совершенно неправильным расположением (Бразилия и т.д., хотя запрашиваемые адреса исключительно СНГ). Проверила: в переменную Адрес попадают правильные адреса. Если напрямую вводить такие адреса в Яндекс-карту - отображает правильно, а через 1С - те же адреса считываются криво.
Почему они не правильно обрабатываются через написанный таким образом код (т.е.находятся неправильные адреса или не находятся вовсе)?
13 1CNachalo
 
01.05.18
19:53
Итог на данный момент: если адрес в переменную попадает русскими буквами - Бразилия и т.п.
То же самое переписываю англ.буквами - выдает точнейший адрес.
14 Fram
 
01.05.18
20:05
(13) значит играйся с кодировками
15 Fram
 
01.05.18
20:55
Не знаю как у Вас, но вот такой код у меня на 8.3.10 работает:

    АдресФактическийКонтрагента = "Москва, Тверская улица, дом 7";

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

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

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

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

    Если МассивЛокаций.Количество() > 0 Тогда

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

        ЗапросККартам = Новый HTTPЗапрос("1.x/?size=450,450&z=13&l=map&pt="+Локация+",pm2rdl1");    
        СоединениеСКартами = Новый HTTPСоединение("static-maps.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);

        Карта = ПоместитьВоВременноеХранилище(Новый Картинка(СоединениеСКартами.Получить(ЗапросККартам).ПолучитьТелоКакДвоичныеДанные()));
        
    КонецЕсли
16 Fram
 
01.05.18
22:22
ПолучитьСтроку это серверная функция  = КодироватьСтроку(АдресФактическийКонтрагента,СпособКодированияСтроки.КодировкаURL)
17 1CNachalo
 
02.05.18
12:15
(16) Т.е. отличается одна вот эта строка?
ЗапросЯндексу = Новый HTTPЗапрос("1.x/?results=1&format=json&geocode="+ПолучитьСтроку(АдресФактическийКонтрагента));

ПолучитьСтроку - эту функцию надо создать дополнительно?

в чем отличие этих способов?
18 1CNachalo
 
02.05.18
12:18
(14) это как?
19 Fram
 
02.05.18
19:43
(17) не не.. мне пришлось создать функцию потому что КодироватьСтроку недоступен на тонком клиенте (интересно почему, кстати). ты, судя по всему, все делаешь на сервере, поэтому тебе не надо это выносить в отдельную функцию.
20 Fram
 
02.05.18
19:45
(17) Короче, твой код рабочий, если не наделала глупых ошибок, которых отсюда не видно, и если в качестве адреса действительно передаешь что то похожее на адрес, а не полную фигню.
21 1CNachalo
 
02.05.18
19:49
(20) Я проверяю, что передаю, в отладчике. Там в этой переменной именно адрес. Но на русском не воспринимает и все тут
22 Fram
 
02.05.18
19:51
(21) покажи еще раз весь код и скриншот из отладчика со значением переменной АдресФактическийКонтрагента перед отправкой ХТТП запроса
23 Fram
 
02.05.18
19:52
и значение переменной Локация
24 1CNachalo
 
02.05.18
20:03
(23)


АдресФактическийКонтрагента = "Moscow, Tverscay,  7";
// 1) получение координат адреса
    
        
    ЗапросЯндексу= Новый HTTPЗапрос("/1.x/?results=1&format=json&geocode="+КодироватьСтроку(АдресФактическийКонтрагента,СпособКодированияСтроки.КодировкаURL));
    СоединениеСЯндексом= новый HTTPСоединение("geocode-maps.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    
     ЧтениеДжо = Новый ЧтениеJSON;
      ЧтениеДжо.УстановитьСтроку(СоединениеСЯндексом.Получить(ЗапросЯндексу).ПолучитьТелоКакСтроку());
      Джо= ПрочитатьJSON(ЧтениеДжо, Истина);
      МассивЛокаций = Джо ["response"]["GeoObjectCollection"]["featureMember"];
      Если   МассивЛокаций.Количество()>0 Тогда
          Регион = МассивЛокаций [0] ["GeoObject"]["description"];
          Локация = СтрЗаменить(МассивЛокаций [0] ["GeoObject"]["Point"]["pos"]," "  ,  ",");
// 2) получение изображения по координатам
          СоединениеСКартами= Новый HTTPСоединение ("static-maps.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
          ЗапросККартам= Новый HTTPЗапрос("1.x/?lang=ru_RU&size=330,250&z=14&l=map&pt="+Локация+",pm2rdl1");
          Карта = ПоместитьВоВременноеХранилище(Новый Картинка(СоединениеСКартами.Получить(ЗапросККартам).ПолучитьТелоКакДвоичныеДанные()));          
HTMLТекст = HTMLТекст +" <img src = " + Карта + ">";
КонецЕсли;

-------------------------------------------------------------------
Вот когда в переменной прописано так - красивая карта выходит.
А если как у тебя на русском - просто пусто.
Сейчас скрин добавлю
25 Fram
 
02.05.18
20:09
(24) ну попробуй разные кодировки в качестве 3го параметра к функции КодироватьСтроку. например "utf-8". хотя она по умолчанию должен быть
26 Fram
 
02.05.18
20:10
*должна быть
27 1CNachalo
 
02.05.18
20:16
(25) это дописать в код? сюда:

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

так?

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

или как-то иначе?

---
о скринах: пока не нашла, как сюда прикрепить
28 Fram
 
02.05.18
20:17
(27) синтакс-помощник знаем что такое?
29 Fram
 
02.05.18
20:19
ладно не важно это.. платформа все равно никакую другую кодировку не принимает похоже. лучше покажи что отладчик показывает для ЗапросЯндексу.АдресРесурса
30 Fram
 
02.05.18
20:26
У меня даже так работает:
ЗапросЯндексу = Новый HTTPЗапрос("1.x/?results=1&format=json&geocode=" + СтрЗаменить(АдресФактическийКонтрагента, " ", "+"));

хотя это не очень правильно. можно нарваться на недопустимый для URL символ в адресе
31 1CNachalo
 
02.05.18
20:29
(29)
При АдресФактическийКонтрагента    "Москва, Тверская улица, дом 7"    Строка (это из табло отладки) в ветке итого даже не заходим. Переменная Локация имеет значение "Неопределено"

Изменяю данные в переменной. Новый круг отладки.

Данные из табло:
"АдресФактическийКонтрагента    "Moskva, Tverskay, 7"    Строка"
При этом "Локация    "37.617635,55.755814"    Строка"
тоже из табло
32 Fram
 
02.05.18
20:33
Теперь скажи чему равно ЗапросЯндексу.АдресРесурса при АдресФактическийКонтрагента =   "Москва, Тверская улица, дом 7"
33 Fram
 
02.05.18
20:35
(32)+ должно быть
1.x/?results=1&format=json&geocode=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0,%20%D0%A2%D0%B2%D0%B5%D1%80%D1%81%D0%BA%D0%B0%D1%8F%20%D1%83%D0%BB%D0%B8%D1%86%D0%B0,%20%D0%B4%D0%BE%D0%BC%207
34 1CNachalo
 
02.05.18
20:39
(33) АдресРесурса    "/1.x/?results=1&format=json&geocode=Moskva%2C%20Tverskay%2C%207"    Строка
35 Fram
 
02.05.18
20:42
(34) это в случае латиницы, а для русской версии?
36 1CNachalo
 
02.05.18
20:42
(33) это при АдресФактическийКонтрагента    "Moskva, Tverskay, 7"    Строка
37 1CNachalo
 
02.05.18
20:44
(35) АдресРесурса    "/1.x/?results=1&format=json&geocode=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0%2C%20%D0%A2%D0%B2%D0%B5%D1%80%D1%81%D0%BA%D0%B0%D1%8F%20%D1%83%D0%BB%D0%B8%D1%86%D0%B0%2C%20%D0%B4%D0%BE%D0%BC%207"    Строка
Это для русской версии
38 Fram
 
02.05.18
20:46
39 Fram
 
02.05.18
20:47
упс.. вообще то я в кодировке писал. миста сама конвертнула )
40 Fram
 
02.05.18
20:48
иди отладчиком дальше. смотри что возвращает СоединениеСЯндексом.Получить(ЗапросЯндексу).ПолучитьТелоКакСтроку()
41 Fram
 
02.05.18
20:48
должно быть то же что и браузер возвращает - json структура с данными локации
42 1CNachalo
 
02.05.18
20:52
(41) СоединениеСЯндексом.Получить(ЗапросЯндексу).ПолучитьТелоКакСтроку()    "{"response":{"GeoObjectCollection":{"metaDataProperty":{"GeocoderResponseMetaData":{"request":"%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0%2C%20%D0%A2%D0%B2%D0%B5%D1%80%D1%81%D0%BA%D0%B0%D1%8F%20%D1%83%D0%BB%D0%B8%D1%86%D0%B0%2C%20%D0%B4%D0%BE%D0%BC%207","found":"0","results":"1"}},"featureMember":[]}}}"    Строка
43 1CNachalo
 
02.05.18
21:13
(41) если я правильно понимаю, то found":"0" здесь говорит о том, что наполненность ответа =0, т.е. ничего не найдено
44 Fram
 
02.05.18
21:53
(42) че то ерунда какая то. пробовала (подчеркивание надо убрать) https_://geocode-maps.yandex.ru/1.x/?results=1&format=json&geocode=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0%2C%20%D0%A2%D0%B2%D0%B5%D1%80%D1%81%D0%BA%D0%B0%D1%8F%20%D1%83%D0%BB%D0%B8%D1%86%D0%B0%2C%20%D0%B4%D0%BE%D0%BC%207

в браузер вставить?
операционная система какая? версия 1с какая?
45 1CNachalo
 
03.05.18
05:16
(44) windows 10 и 1С:Предприятие 8.3 (8.3.9.1818)
46 Fram
 
03.05.18
05:18
(45) ну, попробуй 8.3.10 или 11 последние. просто догадка
47 1CNachalo
 
03.05.18
05:40
(46) а это как-то поможет, если на работе установлена именно 8.3.9? да и мне просто пока негде взять эти версии
48 1CNachalo
 
03.05.18
05:49
(46) посмотрела в отладчике: при внесении того же адреса на английском находит 42 варианта
49 Fram
 
03.05.18
06:09
(48) да, причем тут это.. вот та вот закодированная строка должна передаваться и распознаваться сервером как фраза на кириллице. у тебя по неведомой для меня причине этого не происходит, и сервер эту строку как есть получает и обрабатывает.

подождем. может кто знающий заглянет в ветку
50 Fram
 
03.05.18
06:17
(47) ну, попробовать не помешает. будет повод и на работе обновить все.

URL из (44) в браузер вставляла?
51 Fram
 
03.05.18
06:30
Пока можешь сделать без кодировки. Просто убери служебные символы URL типа /,?,& и тп.
52 ugorchina
 
03.05.18
06:34
Транслитируйте адрес!
53 ugorchina
 
03.05.18
06:35
+(52) либо передавайте в utf-8
54 Fram
 
03.05.18
06:37
(53) он по умолчанию в utf-8. другую кодировку (там почему то строковый параметр) платформа просто не принимает, чего только не пробовал
55 1CNachalo
 
03.05.18
08:05
(50) да, из 44 вставила в браузер, удалив знак подчеркивания. И в опере, и IE пишет - страница недоступна. А должна что-то выдать? Вы загружаете - у вас выдает?
56 Fram
 
03.05.18
08:13
(55) у меня прекрасно работает - хром и файрфокс возвращают правильный json, IE предлагает скачать тот же json как файл
57 arsik
 
гуру
03.05.18
08:32
(55) А вот это ( https://geocode-maps.yandex.ru/1.x/ ) что ни будь возвращает?
58 arsik
 
гуру
03.05.18
08:34
+(57) попробуй адрес домена урл на ip поменять.
geocode-maps.yandex.ru на 213.180.204.122
Может у тебя с ДНС проблемы.
59 arsik
 
гуру
03.05.18
08:35
+ (58) Не, с ip не прокатит. Там нгинкс прокси на входе.
60 1CNachalo
 
03.05.18
09:22
(51) Просто убери служебные символы URL типа /,?,& и тп.
Откуда? Из передаваемого адреса? Если да, то убрала. Например, при АдресФактическийКонтрагента = "Москва Тверская 7" тоже карту не возвращает.
61 1CNachalo
 
03.05.18
09:23
(52) "Транслитируйте адрес!"
Это как?
62 1CNachalo
 
03.05.18
09:23
(53) либо передавайте в utf-8

Что-то в этом случае надо в коде дописать?
63 ugorchina
 
03.05.18
09:25
где код дайте я покапаюсь )
64 ugorchina
 
03.05.18
09:34
(63) ну да  АдресФактическийКонтрагента = "Москва, Тверская улица, дом 7";

а локация показывает https://yandex.by/maps/?source=wizgeo&utm_source=serp&l=map&utm_medium=maps-desktop&mode=search&text=37.611203%C2%B0N%2055.757972%C2%B0E&sll=55.757972%2C37.611200

интересненько
65 1CNachalo
 
03.05.18
09:34
(56) "у меня прекрасно работает - хром и файрфокс возвращают правильный json, IE предлагает скачать тот же json как файл"
---------------------------------------------------------
приехала на работу. с рабочего компьютера эта ссылка выдает результат, вроде правильный:
{"response":{"GeoObjectCollection":{"metaDataProperty":{"GeocoderResponseMetaData":{"request":"Москва, Тверская улица, дом 7","found":"8","results":"1"}},"featureMember":[{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"house","text":"Россия, Москва, Тверская улица, 7","precision":"exact","Address":{"country_code":"RU","formatted":"Москва, Тверская улица, 7","Components":[{"kind":"country","name":"Россия"},{"kind":"province","name":"Центральный федеральный округ"},{"kind":"province","name":"Москва"},{"kind":"locality","name":"Москва"},{"kind":"street","name":"Тверская улица"},{"kind":"house","name":"7"}]},"AddressDetails":{"Country":{"AddressLine":"Москва, Тверская улица, 7","CountryNameCode":"RU","CountryName":"Россия","AdministrativeArea":{"AdministrativeAreaName":"Москва","Locality":{"LocalityName":"Москва","Thoroughfare":{"ThoroughfareName":"Тверская улица","Premise":{"PremiseNumber":"7"}}}}}}}},"description":"Москва, Россия","name":"Тверская улица, 7","boundedBy":{"Envelope":{"lowerCorner":"37.607098 55.755657","upperCorner":"37.615309 55.760287"}},"Point":{"pos":"37.611203 55.757972"}}}]}}}
Но и здесь адрес, написанный рус.буквами, карту не выдает
66 ugorchina
 
03.05.18
09:35
(61) я имел в виду так КодироватьСтроку(АдресФактическийКонтрагента,СпособКодированияСтроки.КодировкаURL))

извините не правильно выразился
67 1CNachalo
 
03.05.18
09:35
(63) где код дайте я покапаюсь )
====================================================

АдресФактическийКонтрагента = "Москва, Тверская улица, дом 7";

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

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

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

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

    Если МассивЛокаций.Количество() > 0 Тогда

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

        ЗапросККартам = Новый HTTPЗапрос("1.x/?size=450,450&z=13&l=map&pt="+Локация+",pm2rdl1");    
        СоединениеСКартами = Новый HTTPСоединение("static-maps.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);

        Карта = ПоместитьВоВременноеХранилище(Новый Картинка(СоединениеСКартами.Получить(ЗапросККартам).ПолучитьТелоКакДвоичныеДанные()));
        
    КонецЕсли
68 1CNachalo
 
03.05.18
09:37
(66) так вроде у меня в коде так и написано. Или я не правильно Вас поняла?
69 1CNachalo
 
03.05.18
09:38
(57) когда кликаю на эту ссылку - результат:

<ymaps xmlns="http://maps.yandex.ru/ymaps/1.x"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation=" http://maps.yandex.ru/business/1.x http://maps.yandex.ru/schemas/business/1.x/business.xsd http://maps.yandex.ru/geocoder/1.x http://maps.yandex.ru/schemas/geocoder/1.x/geocoder.xsd http://maps.yandex.ru/psearch/1.x http://maps.yandex.ru/schemas/psearch/1.x/psearch.xsd http://maps.yandex.ru/search/1.x http://maps.yandex.ru/schemas/search/1.x/search.xsd http://maps.yandex.ru/web/1.x http://maps.yandex.ru/schemas/web/1.x/web.xsd http://maps.yandex.ru/search/internal/1.x http://maps.yandex.ru/schemas/search/internal/1.x/internal.xsd">;
<GeoObjectCollection>
<metaDataProperty xmlns="http://www.opengis.net/gml">;
<GeocoderResponseMetaData xmlns="http://maps.yandex.ru/geocoder/1.x"; xmlns:arr="http://maps.yandex.ru/arrival/1.x"; xmlns:si="http://maps.yandex.ru/search/internal/1.x">;
<request>empty</request>
<found>0</found>
<results>10</results>
<boundedBy xmlns="http://www.opengis.net/gml">;
<Envelope>
<lowerCorner>37.04842675 55.43644829</lowerCorner>
<upperCorner>38.17590226 56.04690124</upperCorner>
</Envelope>
</boundedBy>
</GeocoderResponseMetaData>
</metaDataProperty>
</GeoObjectCollection>
</ymaps>
70 ugorchina
 
03.05.18
10:04
Вот правильный запрос щас набросаю на 1с
71 ugorchina
 
03.05.18
10:04
72 1CNachalo
 
03.05.18
10:33
(71) немного не поняла, это всё мне надо поставить в общий модуль для вывода карты? или как?
73 ugorchina
 
03.05.18
10:54
(72) у меня работает вот код

АдресФактическийКонтрагента = "Москва, +Тверская +улица, +дом +7";

ЗапросЯндексу = Новый HTTPЗапрос("1.x/?format=json&geocode="+АдресФактическийКонтрагента);
СоединениеСЯндексом= новый HTTPСоединение("geocode-maps.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
Результат = СоединениеСЯндексом.Получить(ЗапросЯндексу);
Если Результат.КодСостояния = 200 Тогда
    ЧтениеДжо = Новый ЧтениеJSON;    
    ЧтениеДжо.УстановитьСтроку(Результат.ПолучитьТелоКакСтроку());    
    
    Джо= ПрочитатьJSON(ЧтениеДжо, Истина);    
    
    МассивЛокаций = Джо ["response"]["GeoObjectCollection"]["featureMember"];    
    
    Если МассивЛокаций.Количество() > 0 Тогда
        
        Локация = СтрЗаменить(МассивЛокаций [0] ["GeoObject"]["Point"]["pos"]," "  ,  ",");
        //1.x/?ll="+Локация+"size=450,450&z=13&l=map&pt="+Локация+",pm2rdl1
        ЗапросККартам = Новый HTTPЗапрос("1.x/?ll="+Локация+"&size=450,450&z=13&l=map&pt="+Локация+",pmwtm1~"+Локация+",pmwtm99");    
        СоединениеСКартами = Новый HTTPСоединение("static-maps.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
        РезультатСКратами = СоединениеСКартами.Получить(ЗапросККартам);
        Если Результат.КодСостояния = 200 Тогда
            Карта = ПоместитьВоВременноеХранилище(Новый Картинка(РезультатСКратами.ПолучитьТелоКакДвоичныеДанные()));
        Иначе
            Сообщить("Второе соединение не удачное код состояния - "+Результат.КодСостояния);
        КонецЕсли;
    КонецЕсли
    
Иначе
    Сообщить("Первое соединение не удачное код состояния - "+Результат.КодСостояния);
КонецЕсли;
74 cons74
 
03.05.18
11:09
(0) Для информации. ERP. http://shot.qip.ru/00Qtkp-4oZhWgxFu/
75 ugorchina
 
03.05.18
11:21
Можно еще так сделать

Процедура КнопкаВыполнить(Кнопка)
    АдресФактическийКонтрагента = "Москва, +Тверская +улица, +дом +7";
    ЗапросЯндексу = Новый HTTPЗапрос("1.x/?format=json&geocode="+АдресФактическийКонтрагента);
    СоединениеСЯндексом= новый HTTPСоединение("geocode-maps.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    Результат = СоединениеСЯндексом.Получить(ЗапросЯндексу);
    Если Результат.КодСостояния = 200 Тогда
        ЧтениеДжо = Новый ЧтениеJSON;    
        ЧтениеДжо.УстановитьСтроку(Результат.ПолучитьТелоКакСтроку());    
        
        Джо= ПрочитатьJSON(ЧтениеДжо, Истина);    
        
        МассивЛокаций = Джо ["response"]["GeoObjectCollection"]["featureMember"];    
        
        Если МассивЛокаций.Количество() > 0 Тогда
            
            Локация = СтрЗаменить(МассивЛокаций [0] ["GeoObject"]["Point"]["pos"]," "  ,  ",");
            
            URL="http://static-maps.yandex.ru/1.x/?ll="+Локация+"&size=450,450&z=13&l=map&pt="+Локация+",pmwtm1~"+Локация+",pmwtm99";;
            ЭтаФорма.ЭлементыФормы.ПолеHTMLДокумента1.Перейти(URL)
            
        КонецЕсли    
    Иначе
        Сообщить("Первое соединение не удачное код состояния - "+Результат.КодСостояния);
    КонецЕсли;
КонецПроцедуры

только на форме в обработке создайте элемент Поле HTML докмуента
76 ugorchina
 
03.05.18
11:29
если в справочники на форме списка тогда создаете опять же HTML поле в Процедуру СправочникСписокПриАктивизацииСтроки()

ложите мой код

адрес надо обрабатывать примерно вот так (не знаю какие поля у Вас)

Адрес = СокрЛП(Город+",+"+область+"+"+Улица+"+",+Дом+"+"+НомерДома)
77 ugorchina
 
03.05.18
11:30
+(76) Адрес я имел  в виду АдресФактическийКонтрагента = "Москва, +Тверская +улица, +дом +7";
78 ugorchina
 
03.05.18
11:50
что то (0) ушла обидел что ли? :-)
79 1CNachalo
 
03.05.18
12:09
(78) нет, сейчас смотрю, что Вы написали. А ушла - так мы смотрели написанный ранее код с руководителем.
Скажите, а у Вас какая версия 1С?
Просто реально, тут правильно было предположение: на 8.3.10 и 8.3.11 работает выше выложенный код без каких либо глюков, не надо переводить на латиницу.
А вот на 8.2.9 - только латиница, а если русский и читает (ооочень редко - то выдает неправильно: Бразилию и т.п.)
80 1CNachalo
 
03.05.18
12:10
(75) Подскажите, у Вас какая версия 1С?
81 1CNachalo
 
03.05.18
12:27
посмотрели, что если не обновлять систему до 8.3.10 (или 11), где json прекрасно отрабатывает, а оставаться на 8.3.9, то качественнее выводится карта в формате xml (хоть и там придется адрес переводить на латиницу).

Только как вывести карту на поле html, если координаты получены именно в формате xml?

Есть некие переменные Рез.lng и Рез.lat, где долгота и широта расположения объекта.
Но если просто взять концовку от предыдущего модуля и в переменную
    Локация = Рез.lng + "," + Рез.lat;
    
а затем продолжить, как в концовке кода при получении карты в формате json, т.е.
СоединениеСКартами= Новый HTTPСоединение ("static-maps.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
ЗапросККартам= Новый HTTPЗапрос("1.x/?lang=ru_RU&size=330,250&z=14&l=map&pt="+Локация+",pm2rdl1");
Карта = ПоместитьВоВременноеХранилище(Новый Картинка(СоединениеСКартами.Получить(ЗапросККартам).ПолучитьТелоКакДвоичныеДанные()));          
TMLТекст = HTMLТекст +" <img src = " + Карта + ">";

То так не работает. А как надо, если уже получены координаты в формате xml?
82 ugorchina
 
03.05.18
13:38
8.3.10.2561
83 ugorchina
 
03.05.18
13:39
а чего Вы в HTML поле выводить не хотите?
пишите на почту ставьте TeamViewer пишите ид и пароль подключусь посмотрю что у Вас не так
84 ugorchina
 
03.05.18
13:40
адрес в личке
85 ugorchina
 
03.05.18
13:40
(81) а чего мой код не используете?
86 1CNachalo
 
03.05.18
16:57
(85) Дело в том, что на 8.3.10 и 8.3.11 он да, работает, спасибо большое. Но на этих версиях работает и мой код.
А вот на более старой (8.3.9) работает совершенно иначе.
Но обновление версии руководство считает нецелесообразным (там ряд объективных причин). Поэтому решили идти другим путем.
А именно: переписываем код карты с json на xml (он тоже в 8.3.9 не читается на русском, требует латиницы, но экспериментальным путем выявили, что он точнее, если уж ему эту латиницу предоставить).
И еще: вроду json дает возможность просто статической картинки, без приближения, перемещения по карте? А формат xml всё это вроде предоставляет, если я правильно поняла.
Если нет, то буду рада, если меня кто-то поправит.
-----------------------------------------------------------------------------------------------------------------
В связи с переходом на формат xml возник новый вопрос. его, наверное, я задам сейчас в другой ветке.
-----------------------------------------------------------------------------------------------------------------
Дорогие опытные и мудрые программисты 1С! Всем огромное Спасибо!!!
87 Fram
 
03.05.18
19:48
(86) извините, но про json и xml полный бред. надеюсь, это не ваш руководитель вас на эти мысли. тогда жаль вашу компанию.
json и xml это просто формат возвращаемых данных. парсинга адреса и формирования картинки на стороне сервера выполняет один и тот же модуль.
88 Fram
 
03.05.18
19:49
*на эти мысли навел
89 Fram
 
03.05.18
19:50
(87)+ имел ввиду один и тот же модуль и в случае json и в случае xml
90 Fram
 
03.05.18
19:51
(60 вы очень невнимательны. вы прочитали второе предложение из (51), но полностью проигнорировали первое предложение.
91 ugorchina
 
03.05.18
19:54
(86) дайте доступ помогу!

это ж над опросишь доступ что бы помочь человеку а он отказывается!

просто мне в лом ставить новую версию меня и моя устраивает )))
92 Fram
 
03.05.18
20:00
(83) зачем вообще HTML поле? картинка на УФ прекрасно выводится через Поле картинки
93 ugorchina
 
03.05.18
20:02
Ну или так Мне так было  проще )
94 ugorchina
 
03.05.18
20:03
(92) человеку помощь была нужна я что в голову вбрело то и сделал главное что работает! а в остальном умаю человек сам решит что лучше для него! или я не прав?
95 Fram
 
03.05.18
20:06
(94) ее теперь переклинило на HTML, и она создала еще 2 ветки.
вообще у человек все технологии смешались в голове. рано ей еще такие задания выполнять.
96 ugorchina
 
03.05.18
20:13
(95) :-)
97 Fram
 
03.05.18
20:14
(86) > Но обновление версии руководство считает нецелесообразным (там ряд объективных причин)

можете назвать хотя бы одну? что то даже представить не могу
98 ugorchina
 
03.05.18
20:19
(97) честно говоря я так и не понял какая версия платформу у нее ))) если обновить хочет то более старая чем у меня или она ее откатывать не хочет вообще не понятно (
99 Fram
 
03.05.18
20:31
(98) смотри (45)
100 Fram
 
03.05.18
20:32
(91) а я вот не понял что ты хочешь сделать подключившись к ней?
101 ugorchina
 
03.05.18
20:32
как по моему должно у нее все работать! я в соседней ее ветке написал ей замечания
102 ugorchina
 
03.05.18
20:33
(100) посмотреть что она сделал и иправить косяк ну и фоток грабануть и других данных )
103 1CNachalo
 
06.05.18
17:58
(97) т.к. клиенту может переход на новую версию быть не удобен. Поэтому код должен отрабатывать и на старой версии. А на новой он прекрасно работает без всяких махинаций и преобразований. На новой - это на 8.3.10 и 8.3.11. У нас (я писала об этом 8.3.9)
104 1CNachalo
 
06.05.18
17:59
(98) 8.3.9
105 1CNachalo
 
06.05.18
18:02
С обоими ветками разобралась. Оба кода в обоих ветках рабочие. Нюансы с языком были - в версии 1С, с выводом интерактивной карты - тоже не в коде (код был верный изначально). Если кому интересно - поясню.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан