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

Шиловская шишка — самая высокая точка Ульяновской области. А рядом с ним расположена гора «Граное ухо» — очень интересное место. На местности эти возвышенности расположены в 2х километрах от поселка Цемзавод, в котором делают цемент, и «Граное ухо» в свое время использовали для добычи мела. Половина горы «Граное Ухо» покрыта лесом, а вот вторая половина […]


28 апреля 2011 · Всячина, Кино

Пользователем интернета от Билайн я являюсь еще со времен Корбины, а тут к нам в город пришло еще и IP телевидение. Проходит акция, согласно которой приставки раздают бесплатно, вернее не взимают за пользование арендную плату. Решил подключиться. Принесли коробку, в которой лежало: 1. Собственно приставка Motorolla 2262 2. Свитч TrendNet 3. Пульт ДУ 4. Набор […]


Метки

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

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

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

Для одного из проектов понадобилось отображать точки на карте прямо на форме 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 равно еще хуже Касперского . Иди в жопу с ним
  • просто_чайник: Не люблю этот антивирус. Заметил такую особенность. Если обновить базы в начале работы, довольно часто...
  • Елена: Самое главное. Файл для совместной работы открыть нельзя! Если надо что-то отредактировать — только...
  • Виктор: Поставили мне на работе эту замечательную программку. Работать невозможно, ужасные тормоза. Стали...

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

Ссылки