Ответ
 
Опции темы
Старый 08.11.2013, 02:17    | »»» |  #1
semyongorokhov
Начинающий
 
Аватар для semyongorokhov
 
Якутск
Регистрация: 29.10.2013
Сообщений: 1
semyongorokhov is on a distinguished road
По умолчанию Остаток топлива в баках 1с 7.7

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

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

Добавлено через 1 минуту
AG=СоздатьОбъект("AutoGRAPH.AutoGRAPH Automation"); // Создаем 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 минуту
отправил. но как-то криво
semyongorokhov вне форума   Ответить с цитированием
Старый 25.11.2013, 14:27    | »»» |  #2
SK
Администратор
 
Аватар для SK
 
Регистрация: 27.05.2010
Сообщений: 29,955
SK has much to be proud ofSK has much to be proud ofSK has much to be proud ofSK has much to be proud ofSK has much to be proud ofSK has much to be proud ofSK has much to be proud ofSK has much to be proud of
Отправить сообщение для SK с помощью Skype™
По умолчанию

Сообщение от semyongorokhov Посмотреть сообщение
как получить остаток топлива в баках у определенной машины в определенное время. Через 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

ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности

Последний раз редактировалось SK; 25.11.2013 в 14:31.
SK вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


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


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