PDA

Просмотр полной версии : Определение реального начала рейса


Vasiliy_09_05
25.12.2013, 08:20
Доброго времени суток Дамы и Господа.
Я понимаю что уже всех достал своими вопросами, но прошу НЕ :tomato: :)
Вопрос в следующем - есть рейс, например с 09.11.2013 23:53:00 по 10.11.2013 00:05:00, он благополучно попал в регистр 1с, но тут пользователь решил обновить данные по рейсам (данная возможность есть у пользователя), и указал период, например, с 10.11.2013 00:00:00 по 10.11.2013 23:59:59.
В результате при получении рейсов WaitForComputing с периодом с 10.11.2013 00:00:00 по 10.11.2013 23:59:59 первый рейс по параметру TripStartRealTime имеет данные 10.11.2013 00:00:07, а не 09.11.2013 23:53:00, что не является в началом рейса, зафиксированного АвтоГРАФом.
Параметров OLE сервера, которые бы мне помогли я не нашел к сожалению :(
Подскажите плиз, каким образом можно получить начало (либо окончание рейса), который не ограничен периодом пользователя, а периодом АвтоГРАФа.
Заранее спасибо и заранее сорри за столь большое количество тем :)

SK
25.12.2013, 09:18
Ну как бы это логично, что расчет проводится именно на том интервале, который Вы задали. Если это кусок рейса, то расчет ведется по куску рейса.
А иначе Вы закажете посчитать данные за 15 минут, а он Вам от начала рейса расчет всегда выполнять будет, который может и неделю длиться и 3 года (тут как кто разбивку задаст).
Плюс еще тогда логично и конец последнего рейса искать, если он лежит за пределами расчетного интервала...
В Вашем случае следует просто-напросто добавлять к анализируемому интервалу х часов или дней запаса (и справа и слева интервала) для чего можно ввести специальную константу и потом отфильтровывать рейсы, окончание которых раньше, чем нерасширенный интервал и начало позже, чем нерасширенный интервал. Что совсем несложно и быстро сделать средствами 1С.
Как считаете ?

Vasiliy_09_05
25.12.2013, 09:29
Согласен, так и сделал, но это все отражается на:
1) Скорости обработки (+- час, это не проблема, если ТС единицы и сервер мощьный)
2) Какую константу ставить? Если настройка АвтоГРАФа - рейс - это от точки к точке, то ТС может проехать за 1 час, а может за месяц, утрирую конечно :) , поэтому и сделал проверку, если в периоде +-час только 1 рейс, то расширяем период, но опять же, см пункт 1
Я если, четно, думал что параметр TripStartRealTime - реальная дата начала рейса, то есть дата/время, зафиксированная АвтоГРАФом. Поэтому и сидел радостный что все так хорошо :)
Спасибо за ответ :) :temazakryta:

SK
25.12.2013, 12:53
1) Скорости обработки (+- час, это не проблема, если ТС единицы и сервер мощьный)
В каком смысле на скорости ? ПО АвтоГРАФ ПОЛНЫЕ данные за все время жизни машинки в памяти не держит. Это может оказаться годами... ПО тоже получает и отображает по запросу данные, согласно введенному в окно программы временному интервалу. Кстати, 1С тоже интервалы дат вроде однозначно трактует при работе со своими внутренними объектами.
Чтобы ПО автоматом искало начало рейса оно точно так же должно ступенями (или фиксированной дельтой) откатываться назад по времени... что я и предложил сделать через OLE. А затраты процессорного времени на отфильтровку лишних рейсов - они смехотворны.

Да и при чем тут сервер, кстати ??? OLE у Вас локально на машине отрабатывает.

SK
25.12.2013, 12:55
Vasiliy_09_05, кстати, Вы пробовали замерить время на расчет, допустим, 100 машин за сутки и за сутки + 1 час, 2 часа, 4 часа ? Какие дельты времени у Вас получились ?

Vasiliy_09_05
25.12.2013, 13:57
Про скорость я говорил в следующем плане:
Допустим первый свой рейс ТС №1 начала в 01.10.2013, оператор ввел команду на обновление с 01.01.2010 (вероятность небольшая, но все же), алгоритм такой - у левой стороны периода (начало периода) отнимаем константу (час,день,неделя,месяц - чисто эмпирическая константа, какую поставлю, та и будет) а к правой, соответственно прибавляем ту же константу и определяем, получили полный рейс или нет (то есть что не ограничили рейс периодом, а получили его полностью).
Теперь что касается скорости и выбора константы - выберем слишком маленькую константу (например в 1 час), цикл (пока ПолныйРейс=Ложь, то есть пока не вытащили весь рейс), будет крутиться очень долго, в моем примере (с 01.01.2010 по 01.10.2013) я даже не хочу на калькуляторе считать :) Если ставим большую константу - АвтоГРАФ может выдать (не помню как точно звучало сообщение, но что то типа слишком мало памяти, выберете меньший период)
В своем посте я говорил про данную ситуацию

SK
25.12.2013, 14:16
Теперь что касается скорости и выбора константы - выберем слишком маленькую константу (например в 1 час), цикл (пока ПолныйРейс=Ложь, то есть пока не вытащили весь рейс), будет крутиться очень долго, в моем примере (с 01.01.2010 по 01.10.2013) я даже не хочу на калькуляторе считать Если ставим большую константу - АвтоГРАФ может выдать (не помню как точно звучало сообщение, но что то типа слишком мало памяти, выберете меньший период)
В своем посте я говорил про данную ситуацию
Я честно сказать не понимаю - зачем крайности ? Разве между 5 минутами и 1 годом нет других величин ?
У Вас реально рейсы сколько суток длятся в максимуме ?
Можете такую статистику сделать для себя ? На 1С такая обработка пишется за 5 минут. Или 4.