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

Рассказ от первого лица — установщика — писал мой друг.))) Неделю назад поступил заказ – установить Радугу… Приехали, посмотрели… и немного афигели… Никогда еще не было случая, когда мы не смогли бы найти решение для установки антенны. Но вот столкнулись с таким. У клиента квартира в двухэтажном доме, а дом обнесен тополиными деревьями, метров 20 […]


27 января 2009 · DozoR

Паехалт тут с Кериллом в дазор в иго икипаже…. Нада атметить, што авто у ниго уникальное…. старая капейка, от каторой пастаянно чет атваливаеццо…))) Вся ночь прашла в напряге…. За щастье было остановиццо и выйти из машины, патамушта ганяет он как угарелый… На вапрос Керилла — «Ну че. па встречке паедем?», весь икипаж хором начал арать […]


Метки

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

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

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

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

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

Ссылки