Просмотр полной версии : Внешний модуль отчетов (COM-соединение)
Здравствуйте! Пытаюсь получить для отчетов в 1С данные из Автографа. С свойствами самого Автографа, описанными в документе "Описание COM-сервера АвтоГРАФ", проблем никаких нет.
Хотелось бы еще получить данные по обработанной площади для каждого заданного поля и ТС. Есть следующие модули - AGReports и Agricalc. Подскажите, пожалуйста, как с ними работать и есть ли хоть какая-нибудь документация? В особенности хотелось бы вызвать по COM второй модуль, я думаю, что это возможно.
Существует ряд функций для расчета площадей с последующей выгрузкой в списки данных. Обновите свою версию описания COM (OLE) - она идет в комплекте с программой. Можно через интернет-инсталлятор.
С модулями Вы никак не работаете. Они сами получают данные от основной программы по OLE.
Существует ряд функций для расчета площадей с последующей выгрузкой в списки данных. Обновите свою версию описания COM (OLE) - она идет в комплекте с программой. Можно через интернет-инсталлятор.
С модулями Вы никак не работаете. Они сами получают данные от основной программы по OLE.
Да, замечательно, действительно, там есть эти функции. Может быть, вы мне еще подскажете, как называются свойства COM-объекта, в которые записываются результаты вычислений? В описании не хватает этих данных. Заранее большое спасибо.
Вот смотрите, есть код -
ДатаДляАвтографаНачПериод а = Формат(НачПериода,"ДФ='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, то возникает "неизвестная ошибка" без каких-либо еще комментариев. Что я делаю не так?
ДатаДляАвтографаНачПериод а = Формат(НачПериода,"ДФ='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 "+Временный);
КонецЦикла;
// 8000 метров - это сильно круто...
хм. вроде мелькала единица измерения "мм" для этой величины. впрочем, ладно. огромное спасибо, буду пробовать.
// 8000 метров - это сильно круто...
хм. вроде мелькала единица измерения "мм" для этой величины. впрочем, ладно. огромное спасибо, буду пробовать.
Ну там не только в этом было дело...
Код полностью рабочий - я проверил.
Скажите, а есть какой-нибудь вариант увидеть данные этого списка, помимо выгрузки в файл? Просто у меня продолжает возникать "Неизвестная ошибка" во время исполнения процедуры "ExportListToFile". Процедура теперь следующего вида:
Для каждого СтрокаТранспортноеСредств о ИЗ ДанныеТС Цикл
//Автограф.SetGroupIndexByFileName(Стро аТранспортноеСредство.грФ айл);
//Автограф.SetCarIndexByDevice (СтрокаТранспортноеСредст о.СерийныйНомер);
//с раскомментированными этими двумя строками то же самое
Ширина = 8;
Автограф.WaitForFieldsComputing (СтрокаТранспортноеСредст о.грФайл,СтрокаТранспортн еСредство.СерийныйНомер,Д таДляАвтографаНачПериода, ДатаДляАвтографаКонПериод а,"GSM",Ширина,0);
Если Автограф.TripsNum < 1 Тогда Продолжить; КонецЕсли; //продолжить - это аналог continue;
Автограф.TripIndex = 1;
Временный = "D:\aut.dbf"; //на тот мистический случай, если программа не имеет прав писать во временный файл
Автограф.ExportListToFile(Временны й,"fields","",1,1);
ЗапуститьПриложение("excel "+Временный);
КонецЦикла;
Конечно, для чистоты эксперимента надо попробовать то же самое в какой-нибудь другой среде, но 1с8 вроде всегда корректно работала с внешними приложениями.
Заранее спасибо за внимание.
1. Версия ПО какая ???
2. Другие варианты выгрузки по полям - не предусмотрены, да и не нужны в общем-то. Кому хочется текста - модуль отчетов сохранит хоть в тексте, хоть в картинках, хоть в куче других форматов. А в чем собственно проблема ? Для 1С-ки DBF - это родной формат.
3. На какой строке ошибка-то возникает ? У меня вышеприведенный мной код - работает совершенно нормально.
4. В меню ПО, где обработка полей - поля-то есть в списке, помеченные галочками ?
5. Мож у Вас ошибка на операторе ЗапуститьПриложение ???
1. В вашем обновляторе 2.21, в окне "О программе" - 3.4.10 (сборка 1932)
2. Может, проще было бы отлаживать, если бы было больше информации. Не в формате дело.
3, 5 - ошибка на строке
Автограф.ExportListToFile(Временны й,"fields","",1,1); (проверяю дебаггером, ошибки быть не может).
4. Есть.
В любом случае спасибо за помощь. Будем искать дальше.
Вопрос не открывая новую тему .Экспорт в MS Access 2007 не определяет класс при компиляции.В объектах ссылка есть ,а строчку
Set ag = CreateObject("AutoGRAPH.AutoGRAPHAutomation") пишет объект не найден
Вопрос не открывая новую тему .Экспорт в MS Access 2007 не определяет класс при компиляции.В объектах ссылка есть ,а строчку
Set ag = CreateObject("AutoGRAPH.AutoGRAPHAutomation") пишет объект не найден
99%, что COM-объект не зарегистрирован в системном реестре из-за пользовательских прав доступа. Запустите диспетчерскую программу АвтоГРАФ от имени администратора.
vBulletin® v3.8.5, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot