27.12.2012, 10:24
|
| »»» |
#1
|
Начинающий
Екатеринбург, ООО ЕСК
Регистрация: 18.09.2012
Сообщений: 38
|
Как подключить функционал - преобразование широты и долготы в улицы, город, область?
Добрый день Всем !
Есть такая проблема....
Подключаемся из 1с 8.1 через ОЛЕ к Автограф....
ТСПериодНач=НачалоДня(НачП ериода) ;
ТСПериодКон=КонецДня(КонПе риода) ;
AG.SetGroupIndexByFileName(стр.ГрФайл);
AG.SetCarIndexByDevice(стр.СерНом);
AG.WaitForComputing(стр.ГрФайл,стр.С рНом,ТСПериодНач,ТСПериод он,"GSM",1);
КолРейсов = AG.TripsNum;
ФайлКТ = AG.CarCheckPointsFile;
//если КолРейсов > 0 тогда
// AG.TripIndex = 1;
//конецесли ;
СерийныйНомерКрана = стр.Серном ;
ИмяФайлаБазыDBF1= строка("D:\gdekran.dbf");
Попытка
AG.ExportDataToFile(ИмяФайлаБазыDBF1,1 ,1);
Исключение
AG.PropertyName = "Last_Error";
Сообщить(AG.PropertyValue);
Сообщить("Не удалось экспортировать данные: "+ОписаниеОшибки());
КонецПопытки;
БД = Новый XBase;
БД.ОткрытьФайл(ИмяФайлаБаз ыDBF1,,Истина);
Пока БД.Следующая() Цикл
..................................
дальше перебираем строки dbf -ки и видим только широта и долгота.
Есть какая то "галка" или какой то параметр, чтобы можно было преобразовывать сразу в конкретную улицы?!
Заранее спасибо... Леонид Борисович.
|
|
|
|
27.12.2012, 11:26
|
| »»» |
#2
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,977
|
И ? Обрыв на полуслове...
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
27.12.2012, 11:29
|
| »»» |
#3
|
Начинающий
Екатеринбург, ООО ЕСК
Регистрация: 18.09.2012
Сообщений: 38
|
Если расширенный вариант открыть, там полный текст
Добавлено через 31 секунду
что то система сама обрезала...
Добавлено через 59 секунд
Код:
|
AG.WaitForComputing(стр.ГрФайл,стр.СерНом,ТСПериодНач,ТСПериодКон,"GSM",1);
КолРейсов = AG.TripsNum;
ФайлКТ = AG.CarCheckPointsFile;
//если КолРейсов > 0 тогда
// AG.TripIndex = 1;
//конецесли ;
СерийныйНомерКрана = стр.Серном ;
ИмяФайлаБазыDBF1= строка("D:\gdekran.dbf");
Попытка
AG.ExportDataToFile(ИмяФайлаБазыDBF1,1 ,1);
Исключение
AG.PropertyName = "Last_Error";
Сообщить(AG.PropertyValue);
Сообщить("Не удалось экспортировать данные: "+ОписаниеОшибки());
КонецПопытки;
БД = Новый XBase;
БД.ОткрытьФайл(ИмяФайлаБаз ыDBF1,,Истина);
Пока БД.Следующая() Цикл
.................................. |
дальше перебираем строки dbf -ки и видим только широта и долгота.
Есть какая то "галка" или какой то параметр, чтобы можно было преобразовывать сразу в конкретную улицы?!
Заранее спасибо... Леонид Борисович.
Последний раз редактировалось SK; 27.12.2012 в 11:41.
|
|
|
|
27.12.2012, 11:32
|
| »»» |
#4
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,977
|
Ну... а что нужно-то ?
Вроде адреса есть для всех событий, начала и конца отрезков и т.п.
Соответствующие переменные содержат либо адрес (если определился), либо широту и долготу (если не определился).
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
27.12.2012, 11:35
|
| »»» |
#5
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,977
|
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
27.12.2012, 11:40
|
| »»» |
#6
|
Начинающий
Екатеринбург, ООО ЕСК
Регистрация: 18.09.2012
Сообщений: 38
|
Где ? Как получить адрес? В приведенном коде только можно получить широту и долготу... Как обратится то через какое событие , чтобы получить адрес?
Добавлено через 3 минуты
запрос делаем через ExportDataToFile (0x0000001 – координаты , лучше через ExportListToFile?
|
|
|
|
27.12.2012, 11:43
|
| »»» |
#7
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,977
|
Леонид Борисович, если система будет для каждой координатной точки трека искать адрес - то недельный отчет будет неделю и делаться.
Для событий: сработки датчиков, заправки, сливы и т.д. и т.п. - адреса есть.
P.S.: Когда выводите текст программы - используйте тег [СODE] текст программы [/СODE] - соответствующая кнопка есть на панельке редактора.
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
27.12.2012, 12:00
|
| »»» |
#8
|
Начинающий
Екатеринбург, ООО ЕСК
Регистрация: 18.09.2012
Сообщений: 38
|
За неделю делать отчет не надо. Необходимо в любой момент посмотреть, где любая машина находится. Почему из 1с? там привязки к документам... заказы, путевые листы... Чтобы понять, что машина едет именно по запланированному по времени заказу на ТС , а не на "лево".
Добавлено через 8 минут
Все таки через какой параметр все таки лучше запрос делать?
Через ExportDataToFile с каким параметром "DataTypes" или через ExportListToFile ?
|
|
|
|
27.12.2012, 12:36
|
| »»» |
#9
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,977
|
Сообщение от Леонид Борисович
|
Необходимо в любой момент посмотреть, где любая машина находится.
|
На текущий момент или из архива (где она была месяц назад) ?
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
27.12.2012, 12:40
|
| »»» |
#10
|
Начинающий
Екатеринбург, ООО ЕСК
Регистрация: 18.09.2012
Сообщений: 38
|
На текущий момент
|
|
|
|
27.12.2012, 13:37
|
| »»» |
#11
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,977
|
Леонид Борисович, обратите внимание на отчет "Список транспорта" из демо для 1С, приложенного к архиву с OLE.
Нет необходимости работать через DBF - тут как раз Вы получаете состояние одной или всех машин на момент запроса.
Причем безо всякого нудного ожидания расчета !!!
Код:
|
//****************************************************************************************************************************
// Процедура СписокГрупп()
// Выводит отчет по группам ТС
//****************************************************************************************************************************
Процедура СписокГрупп()
ОчиститьОкноСообщений();
ТекВер=AG.CurrentVersion; // Текущая версия ПО «АвтоГРАФ»
ЧислоГрупп=AG.GroupsNum; // Количество групп ТС
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("ГруппыТС");
Таб.ВывестиСекцию("Шапка");
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
Если ЧислоГрупп>0 Тогда
Для х = 1 По ЧислоГрупп Цикл
AG.GroupIndex = х; //******************************************************************************
ГрИмя = AG.GroupName; //
ГрАдрес = AG.GroupAddress; //
ГрКонтакт = AG.GroupContacts; // Выводим информацию по группе ТС
ГрФайлТС = AG.GroupFileName; //
ГрЧислоТС = AG.GroupCarsNum; //
Таб.ВывестиСекцию("ГруппаТС"); //******************************************************************************
Если ГрЧислоТС > 0 Тогда
Таб.ВывестиСекцию("ШапкаТС");
Для хх = 1 По ГрЧислоТС Цикл
AG.CarIndex = хх;
СерНом = AG.CarDevice; //****************************************************
Марка = AG.CarModel; //
НомерТС = AG.CarNumber; //
Название = AG.CarAlias; //
НомерТел = AG.CarTelNum; //
КонтрТ = AG.CarCheckPointsFile; //
Широта = Окр(AG.CarLatitude,5); //
Долгота = Окр(AG.CarLongitude,5); //
Направление = Окр(180 * AG.CarCourse / 3.1415,5); //
Скорость = Окр(AG.CarSpeed,5); // Выводим информацию по ТС
Простой = AG.CarParkTime; //
Если Широта = -1 Тогда //
Широта = ""; //
Долгота = ""; //
Направление = ""; //
Скорость = ""; //
Простой = ""; //
КонецЕсли; //
ПослЗапись = AG.CarLastTime; //
ПослТ = AG.CarLastATime; //
Таб.ВывестиСекцию("ТС"); //****************************************************
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.Показать("СПИСОК ГРУПП","");
КонецПроцедуры |
И, получив широту и долготу последнего принятого местоположения ТС, с помощью функции FindNearestAddress получить ближайший адрес.
При этом, надо, конечно, обращать внимание на время последних полученных координат, чтоб отсеять ТС, по которым не было данных и, кроме того, если адрес не получается получить в первой итерации из-за отсутствия близлежащих объектов с адресом, то можно запросить адрес повторно, увеличив значение MaxDistance.
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 14:40. Часовой пояс GMT.
|
|