Имя: Пароль:
1C
1С v8
Разбивка периода на подпериоды в запросе
0 fantomrik
 
05.09.13
22:47
Есть ТЧ сотрудника с временем. к примеру Иванов 01.01.13 13:25 - 15.01.13  10:30. Нужно получить строки с периодами в пределах суток в рамках этих дат. То есть должно получится что то типа
01.01.13. Иванов 11(ч) 35 (м)
02.01.13. Иванов 24(ч) 00 (м)
03.01.13. Иванов 24(ч) 00 (м)
....
....
15.01.13. Иванов 10 (ч) 30 (м)
Или Петров 01.01.13  22.00 - 02.01.13 02:00 должно быть
01.01.13. Петров 2(ч) 00 (м)
02.01.13. Петров 2(ч) 00 (м)
Период может быть от нескольких часов до месяца.
Реально это реализовать в запросе? Пример к мыслям -"да, проще простого.." очень приветствуется!
1 Kom-off
 
06.09.13
00:22
(0) У тебя весь период разбит на три разных, по алгоритму подсчета, части. Первая часть, это конец первых суток, который следует за началом период и до начала вторых суток, вторая часть, это сутки целиком (и, возможно, не одни), буде таковые имеются, и третья часть - это начало последних суток, с момента их начала и до конца периода. В запросе, используя конструкцию ВЫБОР, функции РАЗНОСТЬДАТ(), НАЧАЛОПЕРИОДА() и КОНЕЦПЕРИОДА() создаешь три ветки для трех разных частей и получаешь для них при помощи РАЗНОСТЬДАТ(). Да, есть еще один вариант, когда период полностью находится в пределах суток, это будет отельная ветка конструкции ВЫБОР. Таким образом, имеем 3 условия: когда период полностью в сутках, когда это начало суток и когда это конец суток. Для каждой из этих веток будет свой алгоритм подсчета периода, а все остальное будет целыми сутками, для них в ветке ИНАЧЕ прописываем длину периода равного суткам.
2 fantomrik
 
06.09.13
11:36
(1) Алгоритм понятен, спасибо, но как я смогу с помощью него создать N-ое количество строк в зависимости от количества периодов?
3 fantomrik
 
06.09.13
11:37
Наверное эти данные нужно программно в коде обработать и как то передать в СКД как ТЗ...
4 fantomrik
 
07.09.13
14:18
(0) Решением стало формирование нужной ТЗ через цикл, и передача ее в СКД как набор объект и программным формированием СКД в модуле объекта отчета.
5 Kom-off
 
07.09.13
14:40
(2) N-ое количество строк в запросе можно создать при помощи грамотно составленного ЛЕВОЕ СОЕДИНЕНИЕ. Тут народ наоборот борется с дуплением строк, а тут вон какая маза - размножить надо...