Имя: Пароль:
1C
1C 7.7
v7: Посчитать количество дней
0 Deenka
 
05.10.12
13:25
Помогите, плиз, решить задачку. Есть табличная часть. В ней есть поля Сотрудник, Объект, ДатаНач, ДатаКон.
Сотрудник на протяжении месяца мог иметь в распоряжении несколько Объектов.
К примеру:
Васильев Объект1   3.09.12-7.09.12
Васильев Объект2   3.09.12-7.09.12
Васильев Объект3   5.09.12-8.09.12
Васильев Объект4   17.09.12-26.09.12
Васильев Объект5   7.09.12-10.09.12

Нужно узнать сколько дней в месяце сотрудник был занят объектами. Взять   период с 3.09.12 по 26.09.12 не могу, так как есть дни, которые выпадают с этого периода
1 Voronve
 
05.10.12
13:27
ДатаКон-ДатаНач+1. И свернуть таблицу по сотруднику объекту и вычисленному выражению
2 GLazNik
 
05.10.12
13:27
А если в один период сотрудник имел в распоряжении несколько Объектов, то они должны суммироваться? или нет?
3 Deenka
 
05.10.12
13:30
не должны суммироваться, это один и тот же период
4 GLazNik
 
05.10.12
13:31
(3) тогда ответ в (1)
5 Deenka
 
05.10.12
13:33
но есть периоды, которые перекрываются
к примеру : 3.09.12-7.09.12 и 5.09.12-8.09.12
6 Voronve
 
05.10.12
13:40
(5) И ? Что из тебя постановку задачи тянуть приходиться ?
7 Эльниньо
 
05.10.12
13:40
(5) Ну и что?
Сворачиваешь по ("Субъект,Объект", "СкокаДней")
8 Deenka
 
05.10.12
13:41
Поэтому таким методом рассчитать не получится(
9 Voronve
 
05.10.12
13:41
млять
10 Deenka
 
05.10.12
13:45
примеру:
Васильев Объект1   3.09.12-7.09.12      
Васильев Объект2   3.09.12-7.09.12
Васильев Объект3   5.09.12-8.09.12
Васильев Объект4   17.09.12-26.09.12
Васильев Объект5   7.09.12-10.09.12

Работал  с 3 по 10 число на Обьектах 1,2,3,5 = 8 дней
        с 17 по 26 на Объекте4 = 10 дней.
Сотрудник был занят объектами -  18 дней.
11 Deenka
 
05.10.12
13:51
3.09.12-7.09.12  = 5 дней
5.09.12-08.09.12 = 4 дня
В сууме получится 9 дней, но если взять период 3.09.12-08.09.12, то должно быть 6 дней
12 Надсмотрщик
 
05.10.12
13:59
Берешь ТЗ. Каждое число - отдельная колонка. Заносишь все периоды по строкам. Колонки где Итог = 0 удаляешь. Количество оставшихся колонок - твоя премия.
13 1Сергей
 
05.10.12
14:21
я бы сделал одну ТЗ по периодам, потом пробежался бы по ТЧ и заносил бы периоды в ТЗ с проверкой пересечения периодов и корректировкой данных
14 Надсмотрщик
 
05.10.12
14:23
(13) Там и нужна 1 ТЗ
15 1Сергей
 
05.10.12
14:32
(14) а что толку? по (12) ты будешь иметь ТЗ с числами, когда сотр был занят. А ему нужны периоды
16 Mikeware
 
05.10.12
14:36
(12) а зачем - "Каждое число - отдельная колонка"? Хватит колонки "число".
Заполняешь, сворачиваешь, сортируешь - и все
(15) А в чем проблема?
отсортируй, и  пробегай, считай периоды... один цикл, и все...
скукотищща...
17 Deenka
 
05.10.12
14:42
нужно количество дней, когда сотрудник был занят
18 Mikeware
 
05.10.12
14:43
(17) ну и в чем проблема?
19 Deenka
 
05.10.12
14:45
Mikeware каким образом это сделать с одной колонкой?
20 Mikeware
 
05.10.12
14:51
(19) дату, свернуть, посчитать количество строк
21 Mikeware
 
05.10.12
14:54
+(20) надо, чтоб было известно, чем занят - бери индексированнуюТаблицу, и метод Группировать(), получишь объекты, которыми он занимался в каждый день...
22 Прохожий
 
05.10.12
14:56
Там и спискаЗначений хватит.
23 Прохожий
 
05.10.12
14:57
По РазмерСписка() определишь сколько дней.
24 Прохожий
 
05.10.12
14:57
Каждый работаный день заносишь как именованый элемент.
25 Deenka
 
05.10.12
15:02
Mikeware каким образом свернуть дату? колонки ДатаНач и Датакон?
26 sidalexsandr
 
05.10.12
15:04
3.09.12-7.09.12
7.09.12-10.09.12

Сделай так
ДатаНачало-ДатаКонец

// Установи переменным значения из первой строки 3.09.12-7.09.12
Пока   цикл
    Если ДатаНачало > ДатаНачалоПоТекущемуОбъекту  Тогда
         ДатаНачало = ДатаНачалоПоТекущемуОбъекту;
    КонецЕсли;
    Если ДатаКонец> ДатаКонецПоТекущемуОбъекту  Тогда
         ДатаКонец = ДатаКонецПоТекущемуОбъекту;
    КонецЕсли;
КонецЦикла;

КоличествоДнейИтог = ДатаКонец - ДатаНачало;
27 Deenka
 
05.10.12
15:11
sidalexsandr, нужно не рабочие дни не по обьекту, а вообще дни, когда он был занят
28 Надсмотрщик
 
05.10.12
15:12
(27) Ты (12) Читал?
29 Mikeware
 
05.10.12
15:14
(25) может, вам проще программиста поискать, а?
(28) да не нужна колонка на каждую дату...
нужна просто колонка "дата"
30 Надсмотрщик
 
05.10.12
15:16
(29) Мой вариант быстрее работает, и меньше кода писать.
31 Mikeware
 
05.10.12
15:18
(30) Спорим? :-)
32 Mikeware
 
05.10.12
15:20
(30) у меня 17 строк получилось...
33 Mikeware
 
05.10.12
15:31
+(32) пардон, 4 строки лишних. итого 13 строк.
34 Deenka
 
05.10.12
16:13
Большое спасибо всем за помощь! сделал за методом Mikeware
35 Mikeware
 
05.10.12
16:21
(34) сколько строк?
36 Deenka
 
05.10.12
16:32
18 строк
37 Vladal
 
05.10.12
16:33
А выходные считали?
38 Mikeware
 
05.10.12
16:36
Встречаются директора советского и японского предприятий. Предприятия изготавливают совершенно одинаковую продукцию и в одинаковых количествах. Директор нашего завода спрашивает:
- Сколько людей у тебя работает?
- Девять. А у тебя?
У нашего вообще-то пятьсот, но он говорит:
- Десять!
На следующий день японец говорит:
- Слушай, я всю ночь думал и никак не могу понять: что у тебя этот десятый делает?
©