Помогите с алгоритмом

YariY

New member
28.06.2010
2
0
#1
Всем привет!
Второй день мучаюсь, помогите с проблемкой разобраться.
Необходимо создать отчёт "Табель учёта рабочего времени", транспортная организация, более 300 водителей. Отчётик должен отработать следующим образом: найти все путевые листы за месяц по всем водителям. По строкам вывести ФИО водителей, по колонкам число (календарные дни месяца). Если время работы по путевым листам (в сумме, за одно число) больше 6 часов, то напротив фамилии водителя, в графе Число должно отобразиться время, иначе - пусто.
Не могу продумать нормальный алгоритм. Необходимо минимум переборов, запросов и условий.
У кого какие соображения, поделитесь.
Спасибо!
 

vbs

Well-known member
18.02.2007
1 708
1
#2
1. Перебор путевых листов (Документами или запросом) за период с заполнением таблицы значений вида :
ФИО
Число // день месяца
Время
2. Группировка ТЗ по "ФИО,Число" с суммированием "Время"
ТЗ.Группировать("ФИО,Число", "Время")
ТЗ.Сортировать("ФИО,Число");


3. Вывод на печать ТЗ с анализом времени на предмет сравнения с 6 часами
Цикл типа такого
Цикл
Выводим секцию, содержащую ФИО
Пока ФИО не поменялось - добавляем секции "Число".
КонецЦикла
 

YariY

New member
28.06.2010
2
0
#3
Спасибо большое за ответ.
Именно так я и собирался поступить (во всяком случае пункты 1 и 2).
С проблемой столкнулся когда сообразил что бывают ситуации когда по два-три дня подряд может не быть ни одного ПЛ.
И машина должна эти чила месяца оставлять чистыми.
Например:
_________ 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20| 21| 22| 23| 24| - Число месяца
Иванов И.И. |6.4|6.2|8.0|7.4| 0 | 0 |6.4|7.2| 0 |6.3|7.2| 0 | 0 |6.5|7.1| - часы.мин

ЗЫ
Или я чего-то не понял...
 

vbs

Well-known member
18.02.2007
1 708
1
#4
Понял правильно. В этом будет основная сложность.
Чтобы не доделывать за тебя, предложу идею.
1. Первая строка ТЗ. Иванов И.И. - выводим 9 пустых секций, затем 10-е число, анализируем 2-ю строку ТЗ - выводим данные, так же в 3-й и 4-й.
2. Если в 5-й строке опять Иванов выводим ДВЕ пустые секции и собственно данные пятой
3. Если ФИО сменилось, смотрим, не надо ли вывести пустых секций до конца месяца предыдущему водителю.
Справишься, будет красивая табличка. Плохо будет - зашлю кусочек аналогичного кода.
 

vbs

Well-known member
18.02.2007
1 708
1
#5
А еще проще заготовить ТЗ как "пустографку" из колонки ФИО и 31 колонки ВРЕМЯ.
При исследовании путевого листа анализировать, если в ТЗ такое ФИО, если нет - создавать новую строку и добавлять в нужную дату количество часов.
Такой способ позволит просто линейно вывести ТЗ на печать