|
Алгоритм расчёта времени при пересечении периодов
|
|||
---|---|---|---|
#18+
Возникла следующая задача: Имеются транспортные средства (ТС), которые расставляются во времени по проектам и подразделениям в документе (форма обычная). Табличная часть документа расстановки: ТС Проект Подразделение ДатаНачала ДатаОкончания КоличествоЧасов Сначала пользователь расставляет нужные ему ТС, потом нажав кнопку "Рассчитать время" должно рассчитаться время в колонке "КоличествоЧасов" по формуле: t(ТС, Дата) = 12 часов / К Где t(ТС, Дата) - Время использования ТС в заданный день, К - количество проектов, на которых участвует данное ТС в заданный день. Например, если 15.05.13 выбранное ТС по данным табличной части документа работает на 4 проектах, то время работы на каждом проекте равномерно и равно 12/4 = 3 ч. Соответственно, за заданный период ДатаНачала - ДатаОкончания в колонке "Количество Часов" должно просуммироваться время каждого дня, рассчитанного по формуле выше. Я реализовав этот алгоритм через циклы, на небольших объёмах данных (количество ТС, проектов и продолжительность периодов ДатаНачала и ДатаОкончания) он считает достаточно быстро. На периодах планирования год (максимально 01.01.13 - 31.12.13) ОЧЕНЬ долго считает, я так и не дождался его окончания. Осложняется ещё и тем, что мне нужно выдать рассчитанное время с разбивкой помесячно, т.е. строку типа: ТС1 Проект1 Подразделение1 01.01.13 15.03.13 КоличествоЧасов Мне нужно сначала разбить на 3 строки и рассчитать для каждой: ТС1 Проект1 Подразделение1 01.01.13 31.01.13 КоличествоЧасов ТС1 Проект1 Подразделение1 01.02.13 28.02.13 КоличествоЧасов ТС1 Проект1 Подразделение1 01.03.13 15.03.13 КоличествоЧасов Привожу свой алгоритм: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66.
Подскажите, можно ли как-то оптимизировать данный алгоритм расчёта? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 06:50 |
|
Алгоритм расчёта времени при пересечении периодов
|
|||
---|---|---|---|
#18+
А ЗАПРОСОМ НЕ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 07:06 |
|
Алгоритм расчёта времени при пересечении периодов
|
|||
---|---|---|---|
#18+
авторА ЗАПРОСОМ НЕ? Что именно запросом? Поясните, плиз. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 07:13 |
|
Алгоритм расчёта времени при пересечении периодов
|
|||
---|---|---|---|
#18+
все) делаешь подзапрос там групируешь по КоличествоПроектовВДеньТС.. и в следущем запросе пересекаешь 2 таблицы с делением... циклы зло)) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 08:38 |
|
Алгоритм расчёта времени при пересечении периодов
|
|||
---|---|---|---|
#18+
И ещё вопрос: насколько я знаю, максимальное количество строк в табличной части 99 999. Вполне вероятно, что у меня может возникнуть ситуация, когда количество строк выйдет за этот предел. Как в этом случае поведёт себя система? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 09:12 |
|
Алгоритм расчёта времени при пересечении периодов
|
|||
---|---|---|---|
#18+
RudgeИ ещё вопрос: насколько я знаю, максимальное количество строк в табличной части 99 999. Вполне вероятно, что у меня может возникнуть ситуация, когда количество строк выйдет за этот предел. Как в этом случае поведёт себя система?Разбивайте на несколько документов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 10:07 |
|
Алгоритм расчёта времени при пересечении периодов
|
|||
---|---|---|---|
#18+
Программист 1сRudgeИ ещё вопрос: насколько я знаю, максимальное количество строк в табличной части 99 999. Вполне вероятно, что у меня может возникнуть ситуация, когда количество строк выйдет за этот предел. Как в этом случае поведёт себя система?Разбивайте на несколько документов. ))) или табличных частей ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 10:07 |
|
|
start [/forum/topic.php?fid=28&fpage=40&tid=1519661]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 148ms |
0 / 0 |