Последнее обновление: 23 мая 2015 в 14:58
Подпишись на RSS
rss Подпишитесь на RSS, чтобы всегда быть в курсе событий.
28 апреля 2010 · Всячина, Игрушки

Что такое игра на мобильном телефоне? Это то же самое, что мы наблюдали лет десять, а то и все пятнадцать назад на первых персональных компьютерах. По правде сказать, уровень нынешних операционных систем для мобильников, будь то Android или Simbian OS, или новые наработки Bing оказывается очень похож на уровень первых DOS и Windows систем. Сегодня […]


28 июня 2009 · Всячина

Есть у друга машина, копейка, покупал он ее год назад за 15 тысяч российских денег и работая автослесарем постоянно над ней экпериментирует — то рычаг переключения передач перенесет, то цилиндры расточит, то с подвеской что-то намутит. Ну то, что машина у него гламурная — это конечно же само собой. И вот снес он ползада Ланцеру, […]


Метки

Метки записей
открыть xlsx docx Пошаговая свертка антивирус Взлом 1 Жизнь Вся свертка торговли Фото Оборудование HP Pavilion dv6000 автозапуск партии Интерент сайт сбились номера документов Свертка по партиям пакетный запуск 1С Отчет Армия Подключить 1С к MySQL Система Автомобили Оптимизация Asus Eee удаляем пароли дравер MySQL скачать Сайты Установка Windows код защита Игры СМС перенумарация День жестянщика перенос документов Делаем LiveCD Спутниковое ТВ Добавить новую метку вирус SMS свертка в картинках 1с реестр Отношения портативный аккумулятор Взлом Видео Интренет контент-провайдер Файлы 1С бесплатно узнать пароль Обработки Вирусы восстановить нумерацию заблокирован мошенничество связь Работа Печатные формы Методика свертки 1С Бухгалтерия переустановка windows 1с и MySQL homachi локальная сеть через интернет Проблемы Кино Скачать 1С Ошибки 1С Лирика Oracle office 2003 Загрузка с компакт - диска Свертка 1С Структура 1С свертка Обзоры автоматизация LiveCD Dr.Web Вопросы реестр скачать конвертер office 2003-2007 Деньги Анализ ПДЗ Альпинизм Интернет Удаление партий удаление документов Отзывы вирус эмулирует нажатие Win Программы для 1С сверка базы 1С Мужчина и женщина Спорт Экономика антивирусы Экстремальные игры Драйвера Командная строка Свертка базы 1С сертфикаты Windows XP Zver DVD Взлом 1С Drivers Юмор программы для слепых ZverCD Финансы Программы Новая форма счет-Фактуры новости расчет ПЗД уменьшить размер базы гаджеты XPE редактирование DBF печать от поставщика просроченная дебиторская задолженность взломать пароль Интересные места Драйвер ODBC скачать Документы на почту вирус СМС оплата office 2007 jaws
5 октября 2011

Работаем с API Goggle и Яндекса в 1С 8.х

Автор статьи: , 5 октября 2011 в рубрике , Вопросы и ответы. Метки: , , . Просмотров: 12 327

Для одного из проектов понадобилось отображать точки на карте прямо на форме 1С, и изучив вопрос, я пришел к выводу, что ничего сложного в этом нет.

Сильно облегчил мне жизнь мой коллега — тоже программист 1С, его статьи помогли быстро разобраться с Google maps.

yamap Работаем с API Goggle и Яндекса в 1С 8.х

Яндекс - карты в 1С Предприятие

Разбираясь, я написал обработку, которая выводит на Яндекс или гугл карту информацию о расположении контрагента. Неограниченное количество точек.

Авторские права на предоставленный материал принадлежат автору сайта http://extremallife.ru

Обработка запоминает установленные контрагенту координаты и восстанавливает при следующем открытии. Информация хранится во внешнем XML файле, следовательно в конфигурацию не записывается никаких данных.

Почему и Яндекс и Гугл карты? У каждого из этих сервисов есть свои преимущества и недостатки и их сочетание может быть очень эффективным.

Как вставить Яндекс карты или Google maps в 1С 8.х

Все просто. Нам надо кинуть на форму поле HTML документа, сформировать код HTML страницы и вывести созданную страницу на форму.

Вставляем в 1С Яндекс-карты

Собственно, нам понадобится такой код:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" style="height: 100%">
<head>
<title>Точки посещенные агентом</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7"/>
<script src="http://api-maps.yandex.ru/1.0/index.xml?key=КлючАПИ" type="text/javascript"></script>
<script type="text/javascript">
var map;
window.onload = function () {
map = new YMaps.Map(document.getElementById("YMapsID"));
map.setBounds(new YMaps.GeoBounds(new YMaps.GeoPoint(МинимумМаксимум

map.enableScrollZoom();
map.addControl(new YMaps.TypeControl());
map.addControl(new YMaps.ToolBar());
map.addControl(new YMaps.Zoom());
map.addControl(new YMaps.ScaleLine());
map.addControl(new YMaps.Zoom());

var objManager = new YMaps.ObjectManager();
map.addOverlay(objManager);

PiterPenPoints
}
function onunloadpage(){
map.destructor();
}
</script>
</head>
<body style="height: 100%" onunload ="onunloadpage()">
<div id="YMapsID" style="width: 100%; height: 90%"></div>
</body>
</html>

Здесь есть несколько параметров-переменных ,которые мы будем подставлять из вне, например «PiterPenPoints"

В эту переменную мы запишем координаты всех необходимых точек.


Для Каждого Стр из ТКонтр Цикл
ТекстТочек = ТекстТочек + "
|            pm = new YMaps.Placemark(new YMaps.GeoPoint(" + Формат(СтрЗаменить(Долгота,",","."),"ЧРД=.; ЧН=; ЧГ=0")+","+Формат(СтрЗаменить(Широта,",","."),"ЧРД=.; ЧН=; ЧГ=0")+ "), {style:""default#" + ТипКонтрагента + "Point"", hideIcon: false});
|            pm.description = '" + СтрЗаменить(Представление,"'","""") + "';
|            objManager.add(pm);";
КонецЦикла;

и затем подменим их в шаблоне


ТекстСтраницы = СтрЗаменить(ТекстСтраницы,"PiterPenPoints", ТекстТочек);

И выведем полученную страницу на форму


Попытка
ЭлементыФормы.СтраницаХТМЛ.УстановитьТекст(ТекстХТМЛ);//Перейти(_КаталогВременныхФайлов + "temp.html");
Исключение
Сообщить("Произошла ошибка при работе с картой. Возможно отсутствует интренет-соединение. Попробуйте обносить страницу");
КонецПопытки;

Вставляем в 1С гугл-карты

Аналогично яндексу нам необходимо пробежаться по всем точкам и добавить их в код отображаемой страницы.

Тест страницы для Google


<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251"/>
<title>Google Maps координаты точек</title>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=googleapikey"
type="text/javascript"  charset="utf-8"></script>
<style type="text/css">
v:* {
behavior:url(#default#VML);
}
</style>
</head>
<body>
<script type="text/javascript"  charset="utf-8">
var map;
var geocoder = null;
var micon = new GIcon();
var miconr = new GIcon();
var iasizet='32,32';
var iasize=new Array();
iasize=iasizet.split(',');
iasize[0]=iasize[0]/2;

micon.image = "http://extremallife.ru/googlemaps/marker_green.png";
micon.shadow = "http://extremallife.ru/googlemaps/markers.png";
micon.iconSize = new GSize(32,32);
micon.shadowSize = new GSize(59,32);
micon.iconAnchor = new GPoint(iasize[0], iasize[1]);
micon.infoWindowAnchor = new GPoint(iasize[0], 0);

miconr.image = "http://extremallife.ru/googlemaps/marker_red.png";
miconr.shadow = "http://extremallife.ru/googlemaps/markers.png";
miconr.iconSize = new GSize(32,32);
miconr.shadowSize = new GSize(59,32);
miconr.iconAnchor = new GPoint(iasize[0], iasize[1]);
miconr.infoWindowAnchor = new GPoint(iasize[0], 0);

function ffManager_initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("ffManager_map"));
map.setCenter(new GLatLng(latvalue,lonvalue), 15);
geocoder = new GClientGeocoder();
map.addControl(new GMapTypeControl());
map.setMapType(G_NORMAL_MAP);
map.addControl(new GLargeMapControl());
map.enableScrollWheelZoom();
map.disableDoubleClickZoom();
GEvent.addListener(map, "moveend", function() {
});
GEvent.addListener(map, "click", function(overly,point) {
if(!marker && point) {
ffManager_set_vals(point);
map.clearOverlays();
var marker = new GMarker(point,{draggable: true,icon:micon});
GEvent.addListener(marker, "dragend", function() { ffManager_set_vals(marker.getPoint());});
map.addOverlay(marker);
}
});
ffManager_set_map();
}
if(typeof window.onunload == 'function') {
var prevonu= onunload;
window.onunload = function() {
prevonu();
GUnload();
}} else{window.onunload = GUnload;}

if (ShowAddressAtStart) {
showAddress("adressvalue");
}
}

function ffManager_set_vals(point){
document.getElementById('lat').value= point.y;
document.getElementById('lon').value= point.x;
}

function ffManager_set_map(){
var point=new Array();
point.y=document.getElementById('lat').value;
point.x=document.getElementById('lon').value;
map.setCenter(new GLatLng(point.y,point.x));
map.clearOverlays();
var marker = new GMarker(point,{draggable: true,icon:micon});
GEvent.addListener(marker, "dragend", function() { ffManager_set_vals(marker.getPoint());});
map.addOverlay(marker);

PiterPenPoints

}
function showAddress(address) {
if (geocoder) {
geocoder.getLatLng(
address,
function(point) {
if (!point) {
alert(address + " not found");
} else {
ffManager_set_vals(point)
ffManager_set_map();
}
}
);
}
}
</script>
<form action="#" onsubmit="showAddress(this.address.value); return false">
<input type="text" size="60" name="address" value="adressvalue" />
<input type="submit" value="Найти" />
<input type="text" id="lat" name="lat" value="latvalue"> <input type="text" id="lon" name="lon" value="lonvalue">
<div id="ffManager_map" style="width:850px; height:460px"></div>
</form>
</table>
<script type="text/javascript">
window.setTimeout(ffManager_initialize,'0');
</script>
</body>
</html>

В PiterPenPoints добавляем нужные точки


Для Каждого Стр Из Тконтр Цикл
ТекстТочек = ТекстТочек + "
|var point"+й+"=new Array();
|point"+й+".y="""+СтрЗаменить(СокрЛП(Стр.Широта),",",".")+""";
|point"+й+".x="""+СтрЗаменить(СокрЛП(Стр.Долгота),",",".")+""";
|var marker"+й+" = new GMarker(point"+й+",{draggable: true,icon:miconr});
|map.addOverlay(marker"+й+");
|";
й = й + 1;
КонецЦикла;

В итоге получаем вот такую красивую картинку с картой на форме 1С

gogmap Работаем с API Goggle и Яндекса в 1С 8.х

Гугл мапс на форме 1С

Практическое применение у данной обработки не большое, но в комплексе с другими проектами оно может быть весьма значительное. Например, она может быть использована логистом компании для расчета расстояний, оценки эффективности движения транспорта, осуществляющего доставку товаров.

Скачать обработку




К записи "Работаем с API Goggle и Яндекса в 1С 8.х" 3 комментария

для чего это надо

Ответить

Я еще не придумал… Жду предложений от клиентов )))

Ответить

Есть необходимость в следующей обработке:1. Подключить Google Map в 1с со следующими возможностями: — Поиск адреса по введенной строке — Возможность построения маршрута по списку заданных точек с расчетом дистанции и времени в пути- Получение координат при ручном выборе точки-Возможность построения маршрута между указанными вручную точками с расчетом дистанции и времени в пути Сможете ли создать такую обработку и ее стоимость?

Ответить


Оставить комментарий

*

Блог программиста 1С. Программирование 1С
Если Вас что-то заинтересовало или возникли вопросы, пишите.
petr@evseev.ru
Skype - evseev_petr
ICQ - 262808698

Сохраните меня в социальных сервисах

Комментарии

Присоединяйтесь к обсуждению
  • Леха: Мало того, что это говно-антивирус требует .Net Framework не ниже 4.0, так он еще пожирает ресурсы компьютера,...
  • tommy: AVG равно еще хуже Касперского . Иди в жопу с ним
  • просто_чайник: Не люблю этот антивирус. Заметил такую особенность. Если обновить базы в начале работы, довольно часто...
  • Елена: Самое главное. Файл для совместной работы открыть нельзя! Если надо что-то отредактировать — только...
  • Виктор: Поставили мне на работе эту замечательную программку. Работать невозможно, ужасные тормоза. Стали...

Избранное видео

Ссылки