15.12.2011, 14:30
|
| »»» |
#1
|
Начинающий
АдептИС - софт для АПК
Регистрация: 15.12.2011
Сообщений: 14
|
Внешний модуль отчетов (COM-соединение)
Здравствуйте! Пытаюсь получить для отчетов в 1С данные из Автографа. С свойствами самого Автографа, описанными в документе "Описание COM-сервера АвтоГРАФ", проблем никаких нет.
Хотелось бы еще получить данные по обработанной площади для каждого заданного поля и ТС. Есть следующие модули - AGReports и Agricalc. Подскажите, пожалуйста, как с ними работать и есть ли хоть какая-нибудь документация? В особенности хотелось бы вызвать по COM второй модуль, я думаю, что это возможно.
|
|
|
|
15.12.2011, 15:00
|
| »»» |
#2
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,956
|
Существует ряд функций для расчета площадей с последующей выгрузкой в списки данных. Обновите свою версию описания COM (OLE) - она идет в комплекте с программой. Можно через интернет-инсталлятор.
С модулями Вы никак не работаете. Они сами получают данные от основной программы по OLE.
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
16.12.2011, 06:39
|
| »»» |
#3
|
Начинающий
АдептИС - софт для АПК
Регистрация: 15.12.2011
Сообщений: 14
|
Сообщение от SK
|
Существует ряд функций для расчета площадей с последующей выгрузкой в списки данных. Обновите свою версию описания COM (OLE) - она идет в комплекте с программой. Можно через интернет-инсталлятор.
С модулями Вы никак не работаете. Они сами получают данные от основной программы по OLE.
|
Да, замечательно, действительно, там есть эти функции. Может быть, вы мне еще подскажете, как называются свойства COM-объекта, в которые записываются результаты вычислений? В описании не хватает этих данных. Заранее большое спасибо.
|
|
|
|
16.12.2011, 09:02
|
| »»» |
#4
|
Начинающий
АдептИС - софт для АПК
Регистрация: 15.12.2011
Сообщений: 14
|
Вот смотрите, есть код -
Код:
|
ДатаДляАвтографаНачПериода = Формат(НачПериода,"ДФ='dd.MM.yy H:mm:ss'");
ДатаДляАвтографаКонПериода = Формат(КонецДня(КонПериода),"ДФ='dd.MM.yy H:mm:ss");
Для каждого СтрокаТранспортноеСредство ИЗ ДанныеТС Цикл
Автограф.SetGroupIndexByFileName(СтрокаТранспортноеСредство.грФайл);
Автограф.SetCarIndexByDevice (СтрокаТранспортноеСредство.СерийныйНомер);
Автограф.WaitForComputing (СтрокаТранспортноеСредство.грФайл,СтрокаТранспортноеСредство.СерийныйНомер,ДатаДляАвтографаНачПериода,ДатаДляАвтографаКонПериода,"GSM",1);
Автограф.WaitForFieldsComputing (СтрокаТранспортноеСредство.грФайл,СтрокаТранспортноеСредство.СерийныйНомер,ДатаДляАвтографаНачПериода,ДатаДляАвтографаКонПериода,"GSM",8000,0);
Временный = ПолучитьИмяВременногоФайла()+".txt";
Автограф.ExportListToFile(Временный,"trips","",1,1);
Автограф.ExportListToFile(Временный,"fields","",1,1);
ЗапуститьПриложение("notepad "+Временный);
КонецЦикла; |
Процедура Автограф.ExportListToFile(Временны й,"trips","",1,1) отрабатывает как надо, данные экспортируются в файл txt. Если поставить тип выгрузки fields, то возникает "неизвестная ошибка" без каких-либо еще комментариев. Что я делаю не так?
|
|
|
|
16.12.2011, 11:37
|
| »»» |
#5
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,956
|
Код:
|
ДатаДляАвтографаНачПериода = Формат(НачПериода,"ДФ='dd.MM.yy H:mm:ss'");
ДатаДляАвтографаКонПериода = Формат(КонецДня(КонПериода),"ДФ='dd.MM.yy H:mm:ss");
Для каждого СтрокаТранспортноеСредство ИЗ ДанныеТС Цикл
ШиринаОргана = 8; // 8000 метров - это сильно круто...
Автограф.WaitForFieldsComputing (СтрокаТранспортноеСредство.грФайл,СтрокаТранспортноеСредство.СерийныйНомер,ДатаДляАвтографаНачПериода,ДатаДляАвтографаКонПериода,"GSM",ШиринаОргана,0);
Автограф.TripIndex = 1; //Это важно (!!!), хотя, признаю, что и не прописано в документации... сам получил ошибку без этой строчки и воспользовался помощью главного программера...
Временный = ПолучитьИмяВременногоФайла()+".dbf"; //экспорт ведется в файлы DBF !!!
Автограф.ExportListToFile(Временный,"fields","",1,1);
ЗапуститьПриложение("excel "+Временный);
КонецЦикла; |
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
16.12.2011, 11:52
|
| »»» |
#6
|
Начинающий
АдептИС - софт для АПК
Регистрация: 15.12.2011
Сообщений: 14
|
Сообщение от SK
|
// 8000 метров - это сильно круто...
|
хм. вроде мелькала единица измерения "мм" для этой величины. впрочем, ладно. огромное спасибо, буду пробовать.
|
|
|
|
16.12.2011, 11:58
|
| »»» |
#7
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,956
|
Сообщение от kzz1C
|
Сообщение от SK
|
// 8000 метров - это сильно круто...
|
хм. вроде мелькала единица измерения "мм" для этой величины. впрочем, ладно. огромное спасибо, буду пробовать.
|
Ну там не только в этом было дело...
Код полностью рабочий - я проверил.
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
16.12.2011, 13:13
|
| »»» |
#8
|
Начинающий
АдептИС - софт для АПК
Регистрация: 15.12.2011
Сообщений: 14
|
Скажите, а есть какой-нибудь вариант увидеть данные этого списка, помимо выгрузки в файл? Просто у меня продолжает возникать "Неизвестная ошибка" во время исполнения процедуры "ExportListToFile". Процедура теперь следующего вида:
Код:
|
Для каждого СтрокаТранспортноеСредство ИЗ ДанныеТС Цикл
//Автограф.SetGroupIndexByFileName(СтрокаТранспортноеСредство.грФайл);
//Автограф.SetCarIndexByDevice (СтрокаТранспортноеСредство.СерийныйНомер);
//с раскомментированными этими двумя строками то же самое
Ширина = 8;
Автограф.WaitForFieldsComputing (СтрокаТранспортноеСредство.грФайл,СтрокаТранспортноеСредство.СерийныйНомер,ДатаДляАвтографаНачПериода,ДатаДляАвтографаКонПериода,"GSM",Ширина,0);
Если Автограф.TripsNum < 1 Тогда Продолжить; КонецЕсли; //продолжить - это аналог continue;
Автограф.TripIndex = 1;
Временный = "D:\aut.dbf"; //на тот мистический случай, если программа не имеет прав писать во временный файл
Автограф.ExportListToFile(Временный,"fields","",1,1);
ЗапуститьПриложение("excel "+Временный);
КонецЦикла; |
Конечно, для чистоты эксперимента надо попробовать то же самое в какой-нибудь другой среде, но 1с8 вроде всегда корректно работала с внешними приложениями.
Заранее спасибо за внимание.
|
|
|
|
16.12.2011, 14:16
|
| »»» |
#9
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,956
|
1. Версия ПО какая ???
2. Другие варианты выгрузки по полям - не предусмотрены, да и не нужны в общем-то. Кому хочется текста - модуль отчетов сохранит хоть в тексте, хоть в картинках, хоть в куче других форматов. А в чем собственно проблема ? Для 1С-ки DBF - это родной формат.
3. На какой строке ошибка-то возникает ? У меня вышеприведенный мной код - работает совершенно нормально.
4. В меню ПО, где обработка полей - поля-то есть в списке, помеченные галочками ?
5. Мож у Вас ошибка на операторе ЗапуститьПриложение ???
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
16.12.2011, 14:29
|
| »»» |
#10
|
Начинающий
АдептИС - софт для АПК
Регистрация: 15.12.2011
Сообщений: 14
|
1. В вашем обновляторе 2.21, в окне "О программе" - 3.4.10 (сборка 1932)
2. Может, проще было бы отлаживать, если бы было больше информации. Не в формате дело.
3, 5 - ошибка на строке
Автограф.ExportListToFile(Временны й,"fields","",1,1); (проверяю дебаггером, ошибки быть не может).
4. Есть.
В любом случае спасибо за помощь. Будем искать дальше.
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 03:53. Часовой пояс GMT.
|
|