PDA

Просмотр полной версии : Доработка: вместо номера рейса, выставить сменность работы


chernicin
27.04.2012, 07:41
День добрый! кто пробовал используя FastReport вместо номера рейса, выставить сменность работы т.е. Номер рейса #1 заменить на "первая смена" "вторая смена". количество выполненных рейсов не информативно. :sos:

storm
27.04.2012, 08:01
chernicin,
есть такое поле
1.1.11. Идентификатор рейса / точки / отрезка
Идентификатор рейса:
0 – время вне смен;
1 – смена I;
2 – смена II;
3 – смена III; ....
делаете по нему проверку, если оно равно 1 - пишите в ячейке 1 смена, 2 - вторая и так далее

chernicin
27.04.2012, 18:57
если верно понинимаю для определения сменности работы необходимо использовать поле SHIFT_ID. подскажите стандартные отчеты из которых можно посмотреть описание условий для работы с данным полем ?

SK
27.04.2012, 21:01
А нет таких отчетов в стандартных.
Только что Вы там увидеть хотели ?
Все просто... вывод ничем не отличается от других полей...

К примеру, добавляю в первую колонку отчета по рейсам к [Dataset1."SERNUM"] немного кода, чтобы получилось:


[Dataset1."SERNUM"]
SHIFT_ID = [Dataset1."SHIFT_ID"]
[IIF(<Dataset1."SHIFT_ID"> = 1, 'Смена 1', IIF(<Dataset1."SHIFT_ID"> = 2, 'Смена 2', IIF(<Dataset1."SHIFT_ID"> = 3, 'Смена 3', IIF(<Dataset1."SHIFT_ID"> = 0, 'Время вне смен', 'N/A'))))]

http://gyazo.com/beb58270719931df3a47d58c7bc8f739.png http://gyazo.com/b28ab8ab4509ef8078f4a772d317070e.png

Вторая строка - вывод SHIFT_ID в числовом виде - для пущей информации - чтоб Вам понятно было, какая цифра во что преобразуется.
Третья строка - сравнение SHIFT_ID с числами и вывод в зависимости от результата - в текстовом виде. Можно добавить в это сравнение и все остальные причины рейса.

Результат (я задействовал все три смены):

http://gyazo.com/5f55cf2e9ca65348585f5282870a4788.png

Вот и всё...

SK
27.04.2012, 21:05
А вот чутка поправил разбивку на рейсы в настройках, чтоб появилось время вне смен:

http://gyazo.com/c2a884ebd6e2a2621bfe6d0a0f5cbe10.png

chernicin
28.04.2012, 07:49
Вот что у меня получилось :) возможно чего то еще не хватет. Хотя более чем уверен что все и так должно быть ясно !

chernicin
28.04.2012, 08:54
если в коде пишу [Dataset1."SHIFT_ID"], то выдает значение "0". таким образом сейчас думаю ошибка не в коде, в чем то еще, но пока не могу понять что нужно настроить в самом Автографе ?

Добавлено через 59 минут
проверил настройки Автографа\Рейсы все разбито на две смены, по другому и не может быть. в чем же причина не понимаю :)

storm
28.04.2012, 09:02
если в коде пишу [Dataset1."SHIFT_ID"], то выдает значение "0". таким образом сейчас думаю ошибка не в коде, в чем то еще, но пока не могу понять что нужно настроить в самом Автографе ?

Добавлено через 59 минут
проверил настройки Автографа\Рейсы все разбито на две смены, по другому и не может быть. в чем же причина не понимаю

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

storm
28.04.2012, 09:05
chernicin,
посмотрел в вашем списке отчетов - у вас это отчет по контрольным точкам, там нет информации по смене рейса, там в это поле выводится другая информация

SK
28.04.2012, 09:10
Вот-вот...

storm
28.04.2012, 09:10
в вашем случае, я не знаю, что вы хотите там видеть, но если в отчете по КТ вам нужна смена, то замените в выражении все <Dataset1."SHIFT_ID"> на <Trip_Case>
и вам тогда будет выведена смена рейса текущей КТ

chernicin
28.04.2012, 09:50
попробовал добавить к контрольным (.) подотчет рейсы, в итоге так же получаю вне смены !

storm
28.04.2012, 09:58
chernicin,
опишите все-таки подробно, что и как вы хотите вывести
PS: решение из моего предыдущего поста вам не подошло?

chernicin
28.04.2012, 10:18
добавил информацию о рейсах сейчас у меня в отчете два подотчета "котрольные точки, рейсы" тем неменее в отчете получаю вне смены !

storm
28.04.2012, 10:28
chernicin,
вы читаете, что я пишу вообще?

chernicin
28.04.2012, 10:59
прикрепил файл temp0.rar

chernicin
28.04.2012, 15:33
Сообщение к сожалению только что прочел. Большое спасибо. Разобрался. Спасибо за консультацию.

chernicin
29.04.2012, 19:45
есть еще вопрос. как будет наиболее верно из итога вычесть один час в моем случает составляет обеденное время. для подведения итогов использую выражение [SUM(StringToSpanTime(<Dataset1."REAL_CONT">))]

Добавлено через 6 минут
есть еще вопрос. как будет наиболее верно из итога вычесть один час в моем случает составляет обеденное время. для подведения итогов использую выражение [SUM(StringToSpanTime(<Dataset1."REAL_CONT">))]

SK
29.04.2012, 20:15
В общем-то Вы можете изначально учесть этот час в разбивке на рейсы, как межрейсовый интервал и снять галочку учета межрейсовых интервалов - тогда они не будут попадать в отчет.

chernicin
30.04.2012, 06:16
Рейсы между сменами поддаются настройкам ? Так как наличия либо отсутствия галочки в рейсах, итоги остаются прежними.

SK
30.04.2012, 09:53
Рейсы между сменами поддаются настройкам ? Так как наличия либо отсутствия галочки в рейсах, итоги остаются прежними.
Объяснитесь: какие именно итоги Вы имеете ввиду и при каких обстоятельствах ? Изложите подробнее.

chernicin
30.04.2012, 10:09
Попробую объяснить. В прикреплен файле отчет "ПростойТехники" из итогов за смену необходимо исключить час времени на обеденное время с 12:00-13:00.. в дальнейшем предполагаю, что понадобится исключить время на переменку. По какому пути пойти ?

SK
30.04.2012, 10:30
Рейсы между сменами поддаются настройкам ? Так как наличия либо отсутствия галочки в рейсах, итоги остаются прежними.
Объяснитесь: какие именно итоги Вы имеете ввиду и при каких обстоятельствах ? Изложите подробнее.
Я бы хотел получить ответ на свой вопрос. Желательно словами и с пояснениями - что в настройках меняли и какие итоги и где не изменились.

SK
30.04.2012, 10:37
Попробую объяснить. В прикреплен файле отчет "ПростойТехники" из итогов за смену необходимо исключить час времени на обеденное время с 12:00-13:00.. в дальнейшем предполагаю, что понадобится исключить время на переменку. По какому пути пойти ?
А если, кстати, только частично будет захвачен данный интервал ? Ну... приехал позже на точку или уехал пораньше ? Или вообще этот интервал не попал в точку ?

Может Вам просто из итога вычитать количество часов, равное количеству рабочих дней, которые входят в отчет ? Если уж все равно еждневно интервал 12:00-13:00 не считается рабочим временем...

chernicin
30.04.2012, 11:05
В отчете необходимо видеть итоги за минусов обеда, по каждой смена. как вариант можно сразу в коде написать итог за минусов обеденного времени. Как верно написать код . пробовал, но не очень большой опыт в программировании.

сумму итогов нахождения в КТ получаю функцией
[SUM(StringToSpanTime(<Dataset1."REAL_CONT">))] - 1:00:00

SK
30.04.2012, 11:27
я ПОНЯЛ, что Вам нужно (это Вы уже повторили неоднократно), но не понял Ваше утверждение (не получил ответ на свой вопрос):

Цитата:
Сообщение от SK
Цитата:
Сообщение от chernicin
Рейсы между сменами поддаются настройкам ? Так как наличия либо отсутствия галочки в рейсах, итоги остаются прежними.

Объяснитесь: какие именно итоги Вы имеете ввиду и при каких обстоятельствах ? Изложите подробнее.

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

SK
30.04.2012, 11:28
В отчете необходимо видеть итоги за минусов обеда, по каждой смена. как вариант можно сразу в коде написать итог за минусов обеденного времени. Как верно написать код . пробовал, но не очень большой опыт в программировании.

сумму итогов нахождения в КТ получаю функцией
[SUM(StringToSpanTime(<Dataset1."REAL_CONT">))] - 1:00:00
В КАКОМ отчете, какие именно итоги, по каким колонкам, при каких условиях ? На базе какого отчета ? По рейсам ?

chernicin
30.04.2012, 11:47
использую Отчет по контрольным точкам, итоги по продолжительности нахождения в контрольных точка в течении смены. В прикрепленном выше файле ОтчетАвтограф_3.rar (28.2 Кб, 1 просмотров)
есть отчет "ПростойТехники" формирую с разбивкой на рейсы, дублировать шапку таблицы.

SK
30.04.2012, 19:13
Отчет по нахождению в КТ, естественно, не скорректируется по межрейсовым интервалам - т.к. это не имеет отношения к нахождению в КТ.
Отчет по рейсам - корректируется в зависимости от настройки межрейсовых интервалов - тут сомнений нет.

SK
30.04.2012, 19:21
В отчете необходимо видеть итоги за минусов обеда, по каждой смена. как вариант можно сразу в коде написать итог за минусов обеденного времени. Как верно написать код . пробовал, но не очень большой опыт в программировании.

сумму итогов нахождения в КТ получаю функцией
[SUM(StringToSpanTime(<Dataset1."REAL_CONT">))] - 1:00:00
В КАКОМ отчете, какие именно итоги, по каким колонкам, при каких условиях ? На базе какого отчета ? По рейсам ?
Если Вы из всей суммы хотите вычесть 1 час, то надо так:
[SUM(StringToSpanTime(<Dataset1."REAL_CONT">))-StringToSpanTime('1:00:00')]
а вернее, надо после вычитания еще и обратную функцию - чтобы преобразовать в удобочитаемый формат, например:
[SpanTimeToHours(SUM(StringToSpanTime(<Dataset1."REAL_CONT">))-StringToSpanTime('1:00:00'))]

Если же вычитать из каждой суммируемой строки таблицы, то:
[SpanTimeToHours(SUM(StringToSpanTime(<Dataset1."REAL_CONT">)-StringToSpanTime('1:00:00')))]

SpanTimeToHours() - при необходимости заменить на соответствующую функцию:
- SpanTimeToDays()
- SpanTimeToHours()
- SpanTimeToSec()

ProgAGKZ
25.04.2014, 11:38
Как посчитать сумму пробега за смену?

Если смена 1 (SHIFT_ID = 1), тогда суммировать переменную smena1
Если смена 2 (SHIFT_ID = 2), тогда суммировать переменную smena2