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

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

Леонид Борисович 17.09.2015 10:34

Запрос из 1с 8 через оле в автограф, ответ из автограф не в файл, а в массив?
 
Добрый день!

Вопрос наверно к SK...
Методика запроса из 1с 8 в автограф через оле обычно использую так...
Как с начало научили....

делаю через файл dbf...

ИмяФайлаБазыDBF= строка("C:\kran.dbf");
Попытка
AG.ExportDataToFile(ИмяФайлаБазыDBF,Р еквизитЗапроса,1);
Исключение
AG.PropertyName = "Last_Error";
Сообщить(AG.PropertyValue);
Сообщить("Не удалось экспортировать данные: "+ОписаниеОшибки());
КонецПопытки;

БД = Новый XBase;
БД.ОткрытьФайл(ИмяФайлаБаз ыDBF,,Истина);

Пока БД.Следующая() Цикл
.................................................. .............................


Когда просматривал ответы, вспомнил, что администратор SK предлагал ... зачем через файл, можно напрямую в массив...

Вопрос... как ?
Перед каждым запросом файл dbf создается 1с на лету c нужными полями и в него падают данные. А в массив как? Просто заместо файла создать любой массив, а ответ из автограф сам создаст структуру массива какую ему надо и туда все "выстрелит"? Или массив также создать с такими же полями, как для формата dbf ?

SK 17.09.2015 10:38

Нет, посмотрите работу с Entry.

Леонид Борисович 17.09.2015 10:41

Знаю, что работа с массивами и структурами в 1с работает практически мгновенно.
Вот и думаю, оптимизировать все запросы из 1с в автограф...:menty:

Добавлено через 38 секунд
Что такое Entry?

SK 17.09.2015 10:45



а потом перебор EntryIndex от 1 до TripEntriesNum


Леонид Борисович 17.09.2015 10:45

так?
для каждого стр из ТабТС цикл
Если стр.Метка = ложь Тогда Продолжить; КонецЕсли;
ТСПериодНач=(НачПериода111) ;
ТСПериодКон=(КонПериода111) ;
AG.SetGroupIndexByFileName(стр.ГрФайл);
AG.SetCarIndexByDevice(стр.СерНом);
AG.WaitForComputing(стр.ГрФайл,стр.С рНом,ТСПериодНач,ТСПериод он,"GSM",1);
КолРейсов = AG.TripsNum;
Если КолРейсов=0 Тогда
//Предупреждение("Рейсов не обнаружено");
Иначе
Для х = 1 По КолРейсов Цикл
AG.TripIndex = х;
AG.TripEntriesListTypeName="sensor_on";
AG.TripEntriesListKindName="num1";
КолСобытий = AG.TripEntriesNum;
Если КолСобытий > 0 Тогда
Для хх = 1 По КолСобытий Цикл
AG.EntryIndex = хх;
Пробегг = Пробегг + AG.TripDistance/1000;
прервать;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Указываем нужные режимы и ловим события?

SK 17.09.2015 10:50

Цитата:

Сообщение от Леонид Борисович (Сообщение 115062)
Пробегг = Пробегг + AG.TripDistance/1000;

Это относится к самому рейсу и для этого достаточно:
Код:

Для х = 1 По КолРейсов Цикл
  AG.TripIndex = х;
  Пробегг = Пробегг + AG.TripDistance/1000;
КонецЦикла;


SK 17.09.2015 10:53

Код:

            Если КолРейсов=0 Тогда
                        //Предупреждение("Рейсов не обнаружено");
                Иначе
                        Для х = 1 По КолРейсов Цикл
                                AG.TripIndex = х;
                                AG.TripEntriesListTypeName="checkpoints";
                                AG.TripEntriesListKindName="points";
                                КолКТ = AG.TripEntriesNum;
                                Если КолКТ > 0 Тогда
                                        Для хх = 1 По КолКТ Цикл
                                                AG.EntryIndex = хх;
                                               
                                                ТабКТ.НоваяСтрока();
                                                ТабКТ.КТИД    = AG.EntryID;
                                                ТабКТ.КТИмя  = AG.EntryStartName;
                                                ТабКТ.КТАдрес = AG.EntryStartAddress;
                                                ТабКТ.КТИДП  = AG.EntryStartIDP;
                                                ТабКТ.КТПриб  = AG.EntryStartRealTime;
                                                ТабКТ.КТОтпр  = AG.EntryEndRealTime;
                                               
                                        КонецЦикла;
                                КонецЕсли;
                        КонецЦикла;
                КонецЕсли;


Леонид Борисович 17.09.2015 11:00

нужен контроль работы крановой установки "ком2"...
меняем
AG.TripEntriesListTypeName="sensor_on";
AG.TripEntriesListKindName="num2";

так?

SK 17.09.2015 11:05

Да.


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

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