Имя: Пароль:
1C
1C 7.7
v7: Просчет маршрутов доставки
0 linoblack
 
17.05.16
15:54
Добрый день, нужен совет знатоков.

предприятие осуществляет доставку проданного товара покупателям. в базе уже имеются географические координаты с привязкой к торговым точкам и контрагентам. как бы мне побыстрее и попроще, используя бесплатные решения, сделать просчет километража по маршруту следования по картам? сами маршруты уже составлены и в базе есть - торговые точки расставлены в нужном порядке.
1 lodger
 
17.05.16
16:15
так у вас маршруты уже составлены, или надо километраж считать с нуля?
2 lodger
 
17.05.16
16:16
яндекс.апи может по 2 точкам дать дальность пробега в километрах.
3 Mikeware
 
17.05.16
16:22
(2) это хохлы вроде. Для них тоже есть?
4 Mikeware
 
17.05.16
16:23
кстати, в 2гис такое работает.  с учетом "однонаправленности" некоторых улиц, ну и т.п.
5 linoblack
 
17.05.16
16:28
(1) составлены только списки объезда торговых точек. но уже с учетом расположения. т.е. точки расставлены в порядке посещения. нужно теперь километраж посчитать.
6 Mikeware
 
17.05.16
16:29
(5) смотри апи гуглемапа.
7 linoblack
 
17.05.16
16:33
(6) гугла или все же яндекса? у кого карты лучше?
8 Mikeware
 
17.05.16
16:35
(7) в России я поставлю одинаково на яндекс ни на гуглю (и воспользуюсь 2гис), а вот вне россии - на гуглю.
9 linoblack
 
17.05.16
16:49
нашел пример работы в epf. как бы его посмотреть без восьмерки?
10 Mikeware
 
17.05.16
16:56
(9) посмотри в семерке
11 Злопчинский
 
17.05.16
16:56
на ИС посмотри - их там есть таких обработок
12 ADirks
 
18.05.16
09:47
А у кого-нибудь эти сервисы реально работают?

У нас примерно с февраля яндекс-карта сломалась. Причём, сломалась даже не карта наверное, а чё-то эти сволочи из мелкософта накрутили в эксплорере. Открываешь любой примитивный пример, и эта скотина пишет "в целях безопасности InternetExplorer не разрешает этому веб-узлу выполнение сценариев или элементов ActiveX, блаблабла". В активиксе, который в 1С встраивается, ничего такого не пишется, а просто не работает. Копание в настройках ИЕ ни разу не помогло. Я уж хотел было прикрутить любую другую карту, но внезапно выяснилось, что с ними со всеми такая шляпа.
13 linoblack
 
18.05.16
17:15
(12) прям щас мучаю яндекс мап апи 1.0 - работает.
14 ADirks
 
19.05.16
08:43
(13) а можно примерчик какой-нить?
Работает именно в IE?  В нормальных то браузерах всё и так работает, только IE выделывается.
15 smitti911
 
19.05.16
09:51
У меня тоже с февраля не работает.В активиксе, который в 1С встраивается - просто не работает, но html-ку если открыть в IE - открывается и строит маршрут без ошибок.
16 linoblack
 
19.05.16
17:18
(14) в гугл хроме работает. геокодирование и отображение маршрута
17 linoblack
 
19.05.16
17:19
Функция ПолучитьШироту(ВыАдрес,Шир)          
СтрокаAnsi = СОкрЛП(ВыАдрес);        
ScrptCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");        
    ScrptCtrl.Language="vbscript";    
    ScrptCtrl.AddCode(    
    "Function EncodeURIcomponent(SourceString)
    |        Dim I, C, Out
    |        For I = 1 To Len(SourceString)
    |          C = Asc(Mid(SourceString, I, 1))
    |          '/// Пробелы заменяем на плюс
    |          If C = 32 Then
    |            EncodeURIcomponent = EncodeURIcomponent + ""%20""
    |            '/// Запрещённые символы заменяем на ""%"" и HEX значение от кода символа
    |          ElseIf (C = 44) Then
    |            EncodeURIcomponent = EncodeURIcomponent + "",""
    |          ElseIf (C < 48 Or C > 126) Or (C > 56 And C <= 64) Then
    |            EncodeURIcomponent = EncodeURIcomponent + ""%"" + Hex(C)
    |          Else
    |          '/// Разрещённые символы добавляем как есть
    |            EncodeURIcomponent = EncodeURIcomponent + Chr(C)
    |          End If
    |        Next
    |    End Function);"    
    СтрокаURL = ScrptCtrl.CodeObject.EncodeURIcomponent(СтрокаAnsi);    
    Сервер = "geocode-maps.yandex.ru";    
    Страница = "/1.x/?geocode="+СтрокаURL+"&key=ANpUFEkBAAAAf7jmJwMAHGZHrcKNDsbEqEVjEUtCmufxQMwAAAAAAAAAAAAvVrubVT4btztbduoIgTLAeFILaQ==";    
    HTTP = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");    
    ЧтениеXML = гXMLАнализатор.СоздатьПоследовательноСчитываемыйДокумент();    
    ИмяОбъекта = "";    
    urlSend = Сервер + Страница;    
    HTTP.Open("GET","https://"+urlSend,0);    
    HTTP.Send();      
    ЧтениеXML.СвязатьСоСтрокой(HTTP.responseText);    
    ТабОбъектов = СоздатьОбъект("ТаблицаЗначений");    
    ТабОбъектов.НоваяКолонка("Адрес");    
    ТабОбъектов.НоваяКолонка("Широта");    
    ТабОбъектов.НоваяКолонка("Долгота");    
    ТипТега = ЧтениеXML.Спуститься();    
    ТипТега = ЧтениеXML.Спуститься();    
    ТипТега = ЧтениеXML.Спуститься();     
    Если ЧтениеXML.СвойстваТекущегоУзла.Имя = "metaDataProperty" Тогда    
         ТипТега = ЧтениеXML.Следующий();    
    КонецЕсли;    
    ТипТега = ЧтениеXML.Спуститься();    
    ТипТега = ЧтениеXML.Спуститься();    
    Попытка    
        Если ЧтениеXML.СвойстваТекущегоУзла.Имя = "metaDataProperty" Тогда
            ТипТега = ЧтениеXML.Следующий();
             ТипТега = ЧтениеXML.Следующий();
             ТипТега = ЧтениеXML.Следующий();
        КонецЕсли;
    Исключение    
    КонецПопытки;    
    ТипТега = ЧтениеXML.Следующий();     
    СтрокаКординат = ЧтениеXML.ТекущийЭлементВВидеСтроки();    
    //"<pos xmlns="http://www.opengis.net/gml">37.615165 55.731597</pos>"    
    Темп = Найти(СтрокаКординат,"<pos>")+5;    
    Темп2 = Найти (СтрокаКординат,"</pos>");    
    СтрокаКординат = Сред(СтрокаКординат,Темп,Темп2);     
    //СтрокаКординат = СтрЗаменить(СтрокаКординат,"</pos>", "" );     
    СтрокаКординат = СтрЗаменить(СтрокаКординат, " ", РазделительСтрок);       
    Широта  = Число(СтрПолучитьСтроку(СтрокаКординат,2));    
    Долгота = Число(СтрПолучитьСтроку(СтрокаКординат,1));    
    Если ПустоеЗначение(Широта)=1 Тогда Широта =0 КонецЕсли;        
    Если ПустоеЗначение(Долгота)=1 Тогда Долгота = 0 КонецЕсли;    
    Если Шир = 1 Тогда    
        Возврат Широта
    Иначе     
        Возврат Долгота;
    КонецЕсли;    
КонецФункции //ПолучитьШироту
18 ADirks
 
20.05.16
07:36
(16, 17) Это конечно здорово, но надо всё же чтобы карта отображалась.
19 linoblack
 
20.05.16
15:10
пример работы с картой


Процедура ОтобразитьМаршрут(ТЗТочкиМаршрута)
    Адреса = СоздатьОбъект("ТаблицаЗначений");
    Адреса.НоваяКолонка("Адрес");
    Адреса.НоваяКолонка("Широта");
    Адреса.НоваяКолонка("Долгота");
    СтаршийИндекс = ТЗТочкиМаршрута.КоличествоСтрок();
    Для Сч = 1 по СтаршийИндекс Цикл
         Адреса.НоваяСтрока();
         Адреса.Адрес = ТЗТочкиМаршрута.ПолучитьЗначение(СЧ,"Адрес");
         Адреса.Широта = ПолучитьШироту(СокрЛп(ТЗТочкиМаршрута.ПолучитьЗначение(СЧ,"Адрес")),1);
         Адреса.Долгота = ПолучитьШироту(СокрЛп(ТЗТочкиМаршрута.ПолучитьЗначение(СЧ,"Адрес")),0);
    КонецЦикла;
    Файл = СоздатьОбъект("Текст");
    Файл.ДобавитьСтроку("<!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"">";);
    Файл.ДобавитьСтроку("<head>");
    Файл.ДобавитьСтроку("<title>Обработка маршрута</title>");
    Файл.ДобавитьСтроку("<meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1251"" />");
    Файл.ДобавитьСтроку("<script src=""https://api-maps.yandex.ru/1.1/index.xml?key=ANpUFEkBAAAAf7jmJwMAHGZHrcKNDsbEqEVjEUtCmufxQMwAAAAAAAAAAAAvVrubVT4btztbduoIgTLAeFILaQ==""; type=""text/javascript""></script>");
    Файл.ДобавитьСтроку("<script type=""text/javascript"">");
    Файл.ДобавитьСтроку("YMaps.jQuery(function () {");
    Файл.ДобавитьСтроку("var map = new YMaps.Map(YMaps.jQuery(""#YMapsID"")[0]);");
    Файл.ДобавитьСтроку("map.setCenter(new YMaps.GeoPoint(30.117269, 49.795806), 10);");
    Текст = "var router = new YMaps.Router([";
    Адреса.ВыбратьСтроки();
    Пока Адреса.ПолучитьСтроку()=1 Цикл
        Текст = Текст + "new YMaps.GeoPoint(" + Адреса.Долгота + "," + Адреса.Широта + "),";
    КонецЦикла;                                                                            
    Текст = Текст + "],[],{viewAutoApply: true});";
    Файл.ДобавитьСтроку(Текст);
    Файл.ДобавитьСтроку("map.addOverlay(router);");
    Файл.ДобавитьСтроку("});");
    Файл.ДобавитьСтроку("</script>");
    Файл.ДобавитьСтроку("</head>");
    Файл.ДобавитьСтроку("<body>");
    Файл.ДобавитьСтроку("<div id=""YMapsID"" style=""width:800px;height:600px""></div>");
    Файл.ДобавитьСтроку("</body>");
    Файл.ДобавитьСтроку("</html>");
    Файл.Записать("Маршрут.html");
    ЗапуститьПриложение("Маршрут.html");
КонецПроцедуры
20 ADirks
 
20.05.16
15:16
(19) Ну да, тоже в эту сторону начал колупать. Не шибко удобно, но хоть как-то.  А то доставка бедная исстрадалась вся.
21 trad
 
20.05.16
15:47
(20) у мну работают якарты на апи 2.1
важны по-моему такие строки
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=9"></meta>
    <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"; type="text/javascript"> </script>
22 ADirks
 
23.05.16
08:50
(21) Неа, не помогло.
я всё-же думаю, что дело в каких-то настройках IE. найти бы их ещё...
23 linoblack
 
23.05.16
14:22
(21) не поделитесь?
24 Карупян
 
23.05.16
14:24
(22) Может в домене какие настройки включили?
25 smitti911
 
01.06.16
09:01
Решил проблему :
Действительно важны  такие строки
<meta http-equiv="X-UA-Compatible" content="IE=9"></meta>
и еще
To run a WebBrowser control in IE8 Standards Mode, use the following new value into the registry:

    [(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
    “1с77.exe” = dword 8000 (Hex: 0x1F40)
26 smitti911
 
01.06.16
11:18
Как исправить ? В модальном режиме карта не двигается и не работают контролы линейка,масштаб и т.д. В обычном режиме все работает.
27 trad
 
01.06.16
11:35
(26) проверил. у меня в модальном режиме карта двигается, а вот контролы на click не реагируют, только на dblclick
28 trad
 
01.06.16
11:36
имхо не побороть, смотри в сторону отказа от мадального режима
29 trad
 
01.06.16
11:36
и вообще семерка в итоге упала ((
30 smitti911
 
01.06.16
11:37
У меня в модальном двигается только если хватануть за балун