ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ»

ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ» (https://forum.tk-chel.ru/index.php)
-   Система «АвтоГРАФ»: Программное обеспечение (https://forum.tk-chel.ru/forumdisplay.php?f=4)
-   -   Внешний модуль отчетов (COM-соединение) (https://forum.tk-chel.ru/showthread.php?t=1369)

kzz1C 15.12.2011 14:30

Внешний модуль отчетов (COM-соединение)
 
Здравствуйте! Пытаюсь получить для отчетов в 1С данные из Автографа. С свойствами самого Автографа, описанными в документе "Описание COM-сервера АвтоГРАФ", проблем никаких нет.
Хотелось бы еще получить данные по обработанной площади для каждого заданного поля и ТС. Есть следующие модули - AGReports и Agricalc. Подскажите, пожалуйста, как с ними работать и есть ли хоть какая-нибудь документация? В особенности хотелось бы вызвать по COM второй модуль, я думаю, что это возможно.

SK 15.12.2011 15:00

Существует ряд функций для расчета площадей с последующей выгрузкой в списки данных. Обновите свою версию описания COM (OLE) - она идет в комплекте с программой. Можно через интернет-инсталлятор.
С модулями Вы никак не работаете. Они сами получают данные от основной программы по OLE.

kzz1C 16.12.2011 06:39

Цитата:

Сообщение от SK (Сообщение 20989)
Существует ряд функций для расчета площадей с последующей выгрузкой в списки данных. Обновите свою версию описания COM (OLE) - она идет в комплекте с программой. Можно через интернет-инсталлятор.
С модулями Вы никак не работаете. Они сами получают данные от основной программы по OLE.

Да, замечательно, действительно, там есть эти функции. Может быть, вы мне еще подскажете, как называются свойства COM-объекта, в которые записываются результаты вычислений? В описании не хватает этих данных. Заранее большое спасибо.

kzz1C 16.12.2011 09:02

Вот смотрите, есть код -
Код:

   
ДатаДляАвтографаНачПериода = Формат(НачПериода,"ДФ='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, то возникает "неизвестная ошибка" без каких-либо еще комментариев. Что я делаю не так?

SK 16.12.2011 11:37

Код:


ДатаДляАвтографаНачПериода = Формат(НачПериода,"ДФ='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 "+Временный);
 
    КонецЦикла;


kzz1C 16.12.2011 11:52

Цитата:

Сообщение от SK (Сообщение 21085)
// 8000 метров - это сильно круто...

хм. вроде мелькала единица измерения "мм" для этой величины. впрочем, ладно. огромное спасибо, буду пробовать.

SK 16.12.2011 11:58

Цитата:

Сообщение от kzz1C (Сообщение 21086)
Цитата:

Сообщение от SK (Сообщение 21085)
// 8000 метров - это сильно круто...

хм. вроде мелькала единица измерения "мм" для этой величины. впрочем, ладно. огромное спасибо, буду пробовать.

Ну там не только в этом было дело...
Код полностью рабочий - я проверил.

kzz1C 16.12.2011 13:13

Скажите, а есть какой-нибудь вариант увидеть данные этого списка, помимо выгрузки в файл? Просто у меня продолжает возникать "Неизвестная ошибка" во время исполнения процедуры "ExportListToFile". Процедура теперь следующего вида:

Код:

    Для каждого СтрокаТранспортноеСредство ИЗ ДанныеТС Цикл
        //Автограф.SetGroupIndexByFileName(СтрокаТранспортноеСредство.грФайл);
        //Автограф.SetCarIndexByDevice    (СтрокаТранспортноеСредство.СерийныйНомер);
//с раскомментированными этими двумя строками то же самое

        Ширина = 8;
        Автограф.WaitForFieldsComputing    (СтрокаТранспортноеСредство.грФайл,СтрокаТранспортноеСредство.СерийныйНомер,ДатаДляАвтографаНачПериода,ДатаДляАвтографаКонПериода,"GSM",Ширина,0);
       
        Если Автограф.TripsNum < 1 Тогда Продолжить; КонецЕсли; //продолжить - это аналог continue;
        Автограф.TripIndex = 1;
       
        Временный = "D:\aut.dbf"; //на тот мистический случай, если программа не имеет прав писать во временный файл
        Автограф.ExportListToFile(Временный,"fields","",1,1);
        ЗапуститьПриложение("excel "+Временный);
    КонецЦикла;

Конечно, для чистоты эксперимента надо попробовать то же самое в какой-нибудь другой среде, но 1с8 вроде всегда корректно работала с внешними приложениями.

Заранее спасибо за внимание.

SK 16.12.2011 14:16

1. Версия ПО какая ???
2. Другие варианты выгрузки по полям - не предусмотрены, да и не нужны в общем-то. Кому хочется текста - модуль отчетов сохранит хоть в тексте, хоть в картинках, хоть в куче других форматов. А в чем собственно проблема ? Для 1С-ки DBF - это родной формат.
3. На какой строке ошибка-то возникает ? У меня вышеприведенный мной код - работает совершенно нормально.
4. В меню ПО, где обработка полей - поля-то есть в списке, помеченные галочками ?
5. Мож у Вас ошибка на операторе ЗапуститьПриложение ???

kzz1C 16.12.2011 14:29

1. В вашем обновляторе 2.21, в окне "О программе" - 3.4.10 (сборка 1932)
2. Может, проще было бы отлаживать, если бы было больше информации. Не в формате дело.
3, 5 - ошибка на строке
Автограф.ExportListToFile(Временны й,"fields","",1,1); (проверяю дебаггером, ошибки быть не может).

4. Есть.

В любом случае спасибо за помощь. Будем искать дальше.


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

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