PDA

Просмотр полной версии : Остаток топлива в баках 1с 7.7


semyongorokhov
08.11.2013, 02:17
Можете объяснить, пожалуйста, как получить остаток топлива в баках у определенной машины в определенное время. Через OLE в 1с 7.7.

Добавлено через 19 минут
не могу вставить код. но если автомобиль не находит по индексу, то берет какое-то левый автомобиль и выдает его остатки

Добавлено через 1 минуту
AG=СоздатьОбъект("AutoGRAPH.AutoGRAPHAutomation"); // Создаем COM-объект
ddd=AG.WaitForInitializing(); // Ждем окончания инициализации объекта
НепройденныеКТ = 1; // Устанавливаем чекбокс "Показывать отчет с непройденными КТ" в положение "Да"
Если Вопрос("Документ надо сначала записать. Записать?","Да+Нет")="Да" Тогда
Записать();
ВыбратьСтроки();
ТекДок = СоздатьОбъект("Документ.ИнвентаризацияТо лива");
ТекДок.НайтиДокумент(Текущ ийДокумент());
Часы = "";
Минуты = "";
Секунды = "";
ТекДок.ПолучитьВремя(Часы, инуты,Секунды);
Если Число(Часы)<10 Тогда
Часы = "0"+Часы;
КонецЕсли;
Если Число(Минуты)<10 Тогда
Минуты = "0"+Минуты;
КонецЕсли;
Если Число(Секунды)<10 Тогда
Секунды = "0"+Секунды;
КонецЕсли;
ТСПериодНач=Формат(ДатаЧис ло(ДатаДок),"Ч(0)2.0")+"."+Формат(ДатаМесяц(ДатаДок),"Ч(0)2.0")+"."+Строка(ДатаГод(ДатаДок))+" 00:00:00";
ТСПериодКон=Формат(ДатаЧис ло(ДатаДок),"Ч(0)2.0")+"."+Формат(ДатаМесяц(ДатаДок),"Ч(0)2.0")+"."+Строка(ДатаГод(ДатаДок))+" "+Часы+":"+ Минуты+":"+Секунды;
Пока ПолучитьСтроку()=1 Цикл
Если ВыбАвтомобиль.ИДГлонасс > 0 Тогда
AG.WaitForComputing("*",ВыбАвтомобиль.ИДГлонасс,Т ПериодНач,ТСПериодКон,"GSM",1);
КолРейсов = AG.TripsNum;
Если КолРейсов=0 Тогда
//Предупреждение("Рейсов не обнаружено");
Иначе
AG.TripIndex = КолРейсов;
НомРейса = КолРейсов;
НачРейса = AG.TripStartRealTime;
КонРейса = AG.TripEndRealTime;
AG.TripEntriesListTypeName="tank";
КолТопливаВБаке = СоздатьОбъект("СписокЗначений");
КолТопливаВБаке.ВставитьЗ ачение(1,0);
AG.TripEntriesListKindName="num1"; // ДЛЯ БАКА 1 !!!
КолТопливаВБаке.ВставитьЗ ачение(1,AG.TripTank1EndLevel);
AG.TripEntriesListKindName="num2"; // ДЛЯ БАКА 1 !!!
КолТопливаВБаке.ВставитьЗ ачение(2,AG.TripTank2EndLevel);
AG.TripEntriesListKindName="num3"; // ДЛЯ БАКА 1 !!!
КолТопливаВБаке.ВставитьЗ ачение(3,AG.TripTank3EndLevel);
AG.TripEntriesListKindName="num4"; // ДЛЯ БАКА 1 !!!
КолТопливаВБаке.ВставитьЗ ачение(4,AG.TripTank4EndLevel);
Если ВыбТипДвигателя = Перечисление.ТипыДвигател й.Основной Тогда
КолТопливаВБакеАвтограф = КолТопливаВБаке.ПолучитьЗ ачение(ВыбАвтомобиль.Бак1О снДвиг)+КолТопливаВБаке.По учитьЗначение(ВыбАвтомоби ль.Бак2ОснДвиг);
ИначеЕсли ВыбТипДвигателя = Перечисление.ТипыДвигател й.Дополнительный Тогда
КолТопливаВБакеАвтограф = КолТопливаВБаке.ПолучитьЗ ачение(ВыбАвтомобиль.Бак1Д опДвиг)+КолТопливаВБаке.По учитьЗначение(ВыбАвтомоби ль.Бак2ДопДвиг);
КонецЕсли;
КонецЕсли;
ВыбОстатокТопливаПоГлонас с = КолТопливаВБакеАвтограф;
РазницаОстатков();
КонецЕсли;
КонецЦикла;
Иначе
Возврат;
КонецЕсли;

Добавлено через 1 минуту
отправил. но как-то криво

SK
25.11.2013, 14:27
как получить остаток топлива в баках у определенной машины в определенное время. Через OLE в 1с 7.7

Вот код:

ТСПериодНач= ??? ; // Вставить Начало исследуемого периода, чтоб между началом и концом были записи по топливу
ТСПериодКон= ??? ; // Вставить Конец исследуемого периода
AG.WaitForComputing(ФайлГруппыТС,ТС. СерНом,ТСПериодНач,ТСПерио дКон,"GSM",0); // 0 - не разбивать на рейсы, т.к. интересует только значение на конец периода
Если AG.TripsNum = 0 Тогда
// Предупреждение("Рейсов не обнаружено"); // Раскомментировать, если надо предупреждения
Иначе
AG.TripIndex = 1;
УровеньНаКонецПериода = AG.TripTank1EndLevel; // 1 - заменить на нужный номер бака, если необходимо
КонецЕсли;


Полностью пример со всей инициализацией можно посмотреть из внешнего отчета для 1С 7.7 тут: http://www.tk-chel.ru/download/AutoGRAPH_OLE.zip