Ответ
 
Опции темы
Старый 18.04.2012, 07:15    | »»» |  #1
kzz1C
Начинающий
 
Аватар для kzz1C
 
АдептИС - софт для АПК
Регистрация: 15.12.2011
Сообщений: 14
kzz1C is on a distinguished road
Question OLE - расчет полей

Здравствуйте! Хочу выгрузить данные расчета полей по OLE в файл, чтобы потом разобрать его в 1С. Пробую следующим образом:

Код:
ДатаДляАвтографаНачПериода = Формат(НачПериода,"ДФ='dd.MM.yy H:mm:ss'");
ДатаДляАвтографаКонПериода = Формат(КонПериода,"ДФ='dd.MM.yy H:mm:ss");
//запускаем процедуру waitForFieldsComputing
WorkSensor = 1; 
WorkWidth = ?(
  ЗначениеЗаполнено(СтрокаТранспортноеСредство.ШиринаИнструмента),
    СтрокаТранспортноеСредство.ШиринаИнструмента,
    ШиринаИнструментаПоУмолчанию); //устанавливается в значение 10
Автограф.WaitForFieldsComputing(
    СтрокаТранспортноеСредство.ГрФайл,
    СтрокаТранспортноеСредство.СерийныйНомер,
    ДатаДляАвтографаНачПериода,ДатаДляАвтографаКонПериода,"GSM",WorkSensor,WorkWidth);
Автограф.TripIndex = 1; //Это важно (!!!), хотя, признаю, что и не прописано в документации... сам получил ошибку без этой строчки и воспользовался помощью главного программера...
Временный = ПолучитьИмяВременногоФайла()+".dbf";
Попытка 
    Автограф.ExportListToFile(Временный,"fields","",1,1);  
    ТаблицаРейсовПолей = DBFвТаблицу(Временный);
Исключение 
    Сообщить("Не удалось экспортировать данные: "+ОписаниеОшибки());
КонецПопытки;
прим. - коммент "Это важно (!!!)" и далее - это комментарий Самцова Константина, он раньше пробовал ответить мне на этот вопрос.

Итог этого кода - это всегда "Не удалось экспортировать данные", описание ошибки - неизвестная ошибка (описаниеошибки(), по идее, возвращает текст исключения, которое вернул Ole-объект).
Поля в папке Fields лежат в виде полигонов, все поля отмечены для расчета в окне "Расчет полей". Сам расчет полей, если его вызывать из программы Автограф, проходит в целом успешно, выгрузка в файл xls отрабатывает корректно. Если выгружать по OLE в файлы dbf, csv, txt, получаю ошибку. Рейсы у данного ТС в эти дни есть, трек проходит по полигону. Лобовое стекло протирала, по колесу пинала.
Что я делаю не так?

1. Надо ли запускать процедуру WaitForComputing перед WaitForFieldsComputing?
2. Надо ли создавать файл dbf перед тем, как выгружать туда поля?
3. Полигоны, которые я получаю путем рисования в вашем редакторе, в программе GPSMapEdit выглядят как незамкнутые контуры. Это может играть какую-то роль?
kzz1C вне форума   Ответить с цитированием
Старый 18.04.2012, 07:35    | »»» |  #2
zsergey
Пользователь
 
Аватар для zsergey
 
Регистрация: 16.03.2011
Сообщений: 178
zsergey is on a distinguished road
По умолчанию

Сообщение от kzz1C Посмотреть сообщение
Автограф.ExportListToFile(Временны й,"fields","",1,1);
хз, я меня все работает, пробовал так (полей нет):
Автограф.ExportListToFile(Временны й,"over_speed",,0,1) //создать dbf-файл
zsergey вне форума   Ответить с цитированием
Старый 18.04.2012, 07:38    | »»» |  #3
kzz1C
Начинающий
 
Аватар для kzz1C
 
АдептИС - софт для АПК
Регистрация: 15.12.2011
Сообщений: 14
kzz1C is on a distinguished road
По умолчанию

zsergey,
Спасибо за ответ, уважаемый.
У меня не работают именно "fields". И именно они, как назло, крайне нужны
kzz1C вне форума   Ответить с цитированием
Старый 18.04.2012, 07:49    | »»» |  #4
programmer
ТехноКом
 
Аватар для programmer
 
Регистрация: 17.12.2010
Сообщений: 2,865
programmer is on a distinguished road
По умолчанию

Сообщение от kzz1C Посмотреть сообщение
Автограф.TripIndex = 1; //Это важно (!!!),
Это была ошибка (ложная проверка индекса рейса, который никак не относится к обр. полей), она уже исправлена. Так что TripIndex можно не задавать после WaitForFieldsComputing.



Сообщение от kzz1C Посмотреть сообщение
1. Надо ли запускать процедуру WaitForComputing перед WaitForFieldsComputing?
Нет



Сообщение от kzz1C Посмотреть сообщение
2. Надо ли создавать файл dbf перед тем, как выгружать туда поля?
Нет. Но у Вас выполняется вызов ExportListToFile(Временный,"fields","",1,1);
где
Add = 1 – добавление записей к уже существующему файлу
CreateAlways = 1 – в случае ошибки создавать пустой файл
Попробуйте так ExportListToFile(Временный,"fields","",0,1);



Сообщение от kzz1C Посмотреть сообщение
3. Полигоны, которые я получаю путем рисования в вашем редакторе, в программе GPSMapEdit выглядят как незамкнутые контуры. Это может играть какую-то роль?
Нет. Вообще, попробуйте для начала просто выполнить расчёт из программы.

ООО «ТехноКом», г. Челябинск
Макаров Константин Евгеньевич - Главный Программист ООО «ТехноКом» (диспетчерское ПО «АвтоГРАФ»)
programmer вне форума   Ответить с цитированием
Старый 18.04.2012, 08:21    | »»» |  #5
kzz1C
Начинающий
 
Аватар для kzz1C
 
АдептИС - софт для АПК
Регистрация: 15.12.2011
Сообщений: 14
kzz1C is on a distinguished road
По умолчанию

programmer, спасибо. Я там написала в первом посте, расчет из программы отрабатывает корректно (если его запускать в гуи, в самом окне Автографа, не по оле). По оле он вроде тоже отрабатывает без ошибок. Исключение вызывается на процедуре ExportListToFile.

Попробовала указать 0 в параметре Add, все равно "Ошибка при вызове метода контекста (ExportListToFile): Неизвестная ошибка". Что интересно, файл тоже не создается, хотя в параметре CreateAlways я поставила 1.
Посоветуете что-нибудь?

Код:
    ДатаДляАвтографаНачПериода = Формат(НачПериода,"ДФ='dd.MM.yy H:mm:ss'");
    ДатаДляАвтографаКонПериода = Формат(КонПериода,"ДФ='dd.MM.yy H:mm:ss");
    WorkSensor = 1; WorkWidth = 10;
    Если Автограф = Неопределено Тогда ИнициализироватьCOMОбъект(); КонецЕсли;    
    Автограф.WaitForFieldsComputing(
    "ООО Вектор.ini",
    153508,
    ДатаДляАвтографаНачПериода,ДатаДляАвтографаКонПериода,"GSM",WorkSensor,WorkWidth);
    Временный = "D:\1.dbf";
    Попытка 
        Автограф.ExportListToFile(Временный,"fields","",0,1);
    Исключение 
        Сообщить("Не удалось экспортировать данные: "+ОписаниеОшибки());
    КонецПопытки;

Последний раз редактировалось kzz1C; 18.04.2012 в 08:25.
kzz1C вне форума   Ответить с цитированием
Старый 18.04.2012, 09:44    | »»» |  #6
storm
Опытный пользователь
 
Аватар для storm
 
Регистрация: 22.12.2010
Сообщений: 2,121
storm is on a distinguished road
Отправить сообщение для storm с помощью Skype™
По умолчанию

kzz1C,
попробуйте в блок Исключение добавить код
Автограф.PropertyName = "Last_Error";
Сообщить(Автограф.PropertyValue);
и напишите, какое сообщение у вас выведется

г. Челябинск
Ахмедьянов Алексей Адлерович
storm вне форума   Ответить с цитированием
Старый 18.04.2012, 09:57    | »»» |  #7
zsergey
Пользователь
 
Аватар для zsergey
 
Регистрация: 16.03.2011
Сообщений: 178
zsergey is on a distinguished road
По умолчанию

Сообщение от kzz1C Посмотреть сообщение
Автограф.ExportListToFile(Временны й,"fields","",0,1);
Попробуйте убрать кавычки в третьем параметре.
Вот так: Автограф.ExportListToFile(Временны й,"fields", ,0,1)
СОМ-сервер может не правльно интерпретировать эти кавычки!
zsergey вне форума   Ответить с цитированием
Старый 18.04.2012, 11:45    | »»» |  #8
kzz1C
Начинающий
 
Аватар для kzz1C
 
АдептИС - софт для АПК
Регистрация: 15.12.2011
Сообщений: 14
kzz1C is on a distinguished road
По умолчанию

zsergey, спасибо, убрала.


storm, "Неверный индекс рейса (0)" )) Версия Автографа - 3.4.12 (1955 билд)
Попробовала установить tripIndex в 1, получила:

Ошибка при установке значения атрибута контекста (TripIndex)
Автограф.TripIndex = 1;
по причине:
Произошла исключительная ситуация (AutoGRAPH.AutoGRAPHAutomation): Неверный индекс рейса (1)
kzz1C вне форума   Ответить с цитированием
Старый 18.04.2012, 11:53    | »»» |  #9
storm
Опытный пользователь
 
Аватар для storm
 
Регистрация: 22.12.2010
Сообщений: 2,121
storm is on a distinguished road
Отправить сообщение для storm с помощью Skype™
По умолчанию

kzz1C,
Сообщение от programmer Посмотреть сообщение
Это была ошибка (ложная проверка индекса рейса, который никак не относится к обр. полей), она уже исправлена. Так что TripIndex можно не задавать после WaitForFieldsComputing.
обновитесь до последней сборки(1960 билд, поставить можно через инсталляторы), там не нужно будет задавать номер рейса
а если выставлять рейсы, то вначале надо их рассчитать функцией WaitForComputing

г. Челябинск
Ахмедьянов Алексей Адлерович
storm вне форума   Ответить с цитированием
Старый 18.04.2012, 12:28    | »»» |  #10
kzz1C
Начинающий
 
Аватар для kzz1C
 
АдептИС - софт для АПК
Регистрация: 15.12.2011
Сообщений: 14
kzz1C is on a distinguished road
По умолчанию

storm,спасибо, уважаемый, сейчас попробую.

Добавлено через 29 минут
все равно та же фигня.

storm,вы не могли бы, чтобы я лучше понимала, привести полный работающий листинг какогонить модуля с участием процедуры расчета полей? Если не желаете флудить в теме, можно сбросить на nastya@adeptis.ru .
kzz1C вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 07:22. Часовой пояс GMT.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot