Имя: Пароль:
1C
1С v8
Помогите рассчитать плановую дату окончания работ
0 EVGA
 
24.01.20
11:18
Всем добрый день.
Задача рассчитать плановую дату окончания работ.
Имеем:
Дата время начала работ,
Количество трудозатрат в часах (целое число, без минут).
график пятидневка с 9 до 18.
Нужно посчитать дату и время окончания работы с учетом графика (выходные и праздничные дни выкидываем).

Наверняка в типовых есть подобная функция, но не могу найти, может кто-нибудь помочь?
1 p-soft
 
24.01.20
11:30
есть такая штука, как производственный календарь.
но вообще, шпаргалки и списывать контрольную у соседа - это плохо!
2 8 bit
 
24.01.20
11:31
(0) Ну поищи где-нибудь в ЗиК-е, где отпуск считается. Использование производственного календаря для определения выходных, праздничных и сокращенных дней тебе поможет.
3 Deon
 
24.01.20
11:34
(2) Сомневаюсь, что там есть расчет в часах с учетом времени смены
4 piter3
 
24.01.20
11:35
(3) Ну готовое вряд ли будет сразу
5 8 bit
 
24.01.20
11:35
(3) а надо в конкретный модуль и в конкретную строку носом его ткнуть? Пусть хоть палец о палец ударит для решения своей задачи.
6 Deon
 
24.01.20
11:38
(0) В любом случае, для решения задачи достаточно регистра ПроизводственныйКалендарь, который везде есть
7 EVGA
 
24.01.20
11:41
(5) Я знаю как производить расчеты по производственному календарю, но у меня его нет в конфигурации, а добавлять новые регистры нельзя. Приходится городить велосипед. Чтобы этого не делать, пытался найти процедуру подходящую. может в каких-нибудь конфах есть что-то подобное
8 p-soft
 
24.01.20
11:46
(7) без отдельной структуры данных не получится рассчитать рабочие дни.
в стандартных конфигурациях используется производственный календарь.
9 p-soft
 
24.01.20
11:48
хотя, рабочие дни можно получить приблизительно, заполнив по данным открытых сервисов.
10 Deon
 
24.01.20
11:50
(7) Можно в цикле ломиться в интернет и спрашивать, рабочий день или нет https://isdayoff.ru/20200124. Но это, конечно, так себе вариант
11 Кодер
 
24.01.20
11:52
Пока ОстатокПлановыхЧасов > 0 ЦЫКЛ

Если ДеньНедели(ОчереднойДень) < 6 Тогда
Секунд = 24*60*60;
ПлановаяДата = ПлановаяДата + Секунд;
ОчереднойДень = ПлановаяДата + Секунд;
ОстатокПлановыхЧасов = Макс(0, ОстатокПлановыхЧасов - Секунд);

КонецЦыкла;
12 EVGA
 
24.01.20
11:52
(9) у меня есть итилиум, в нем подобная функция есть, но она с префиксом и вся перепиленная, считает неправильно. Написал свою, считает как следует, но это очередной костыль. хочу заменить эту ересь на что-то, что в типовых присутствует(если присутствует)
13 dka80
 
24.01.20
12:10
(11) переносы выходных дней тоже через "<6" проверять?
14 dka80
 
24.01.20
12:11
В производственном календаре выходные суббота, воскресенье да еще несколько праздничных дней. Занеси эти праздничные дни в свою обработку а далее как в (11)
15 dka80
 
24.01.20
12:13
Еще сокращенные дни нужно учесть. Но их тоже несколько
16 EVGA
 
24.01.20
12:17
Я понял, что не существует готового метода. либо с производственным календарем, либо свой костыль
17 Кодер
 
24.01.20
12:20
(16) Я тебе именно под твои требования набросал код функции. Если хочешь время рассчитывать, правь предпоследнюю строку. Для начала хватит, а нюансов там будет на диссертацию.
18 piter3
 
24.01.20
12:20
Еще локальные праздники территорий так сказать
19 dka80
 
24.01.20
12:22
(12) думаю в ERP есть. В модуле, где планирование происходит
20 EVGA
 
24.01.20
12:26
(17) Благодарю за помощь, но прямо под твоим кодом я написал, что я свою функцию сделал и что она считает так, как мне надо. Вопрос был не в том - как написать свой собственный костыль, а в том - где взять типовой механизм, если таковой имеется.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн