Расчет даты окончания #743583


#0 by greenscarf
Добрый день! Ломаю голову, не могу придумать, как решить задачу. Дано: Дата начала работ Количество часов на работы График работы пятидневка 9-18 Найти: Дату окончания работ Конфа значения не имеет, нужно сделать без использования производственного календаря, например, по типу дня
#1 by greenscarf
Например, дата начала работ 25.05 в 9.00 Количество часов - 10 дата окончания работ 26.05 в 10.00
#2 by shuhard_серый
[График работы пятидневка 9-18 ]+[нужно сделать без использования производственного календаря] = отменная трава
#3 by Фокусник
что с праздниками делать?
#4 by MrKartez
Перебирай даты в цикле, + добавь условие: если деньнедели 6 или 7, то не суммируй к дате 9 часов.
#5 by greenscarf
Понять бы алгоритм, условие на неиспользование производственного календаря необязательное, просто в конфе его нет
#6 by greenscarf
какие даты перебирать? у меня есть одна дата
#7 by Timon1405
Цикл пока можно вычесть по 8 часов делаем это +проверяем день функцией ДеньНедели(<Дата>) + проверка на остаток часов от деления на 8, если что прибавляем день опять же с проверкой на ДеньНедели. или вам все в запросе надо?
#8 by MrKartez
КолвоЧасовработы=КолвоЧасовРаботы-РабочиеЧасы.
#9 by MrKartez
Забыл строчку ТекДата=ТекДата+8*60*60; КолВоЧасовРаботы=КолВоЧасовРаботы-8 Но тут вместо 8 может быть другое значение, нужно делать проверку через оператор ?; КонецЕсли;
#10 by greenscarf
Спасибо, я проверю. В запросе предпочтительнее, но совершенно не обязательно.
#11 by Одинесю
1       ОБЪЕДИНИТЬ       2       ОБЪЕДИНИТЬ       3       ОБЪЕДИНИТЬ       4       ОБЪЕДИНИТЬ       5       ОБЪЕДИНИТЬ       6       ОБЪЕДИНИТЬ       7       ОБЪЕДИНИТЬ       8       ОБЪЕДИНИТЬ             1              ОБЪЕДИНИТЬ          2              ОБЪЕДИНИТЬ          3              ОБЪЕДИНИТЬ          4              ОБЪЕДИНИТЬ          5              ОБЪЕДИНИТЬ          6              ОБЪЕДИНИТЬ          7              ОБЪЕДИНИТЬ          8              ОБЪЕДИНИТЬ                 1              ОБЪЕДИНИТЬ          2              ОБЪЕДИНИТЬ          3              ОБЪЕДИНИТЬ          4              ОБЪЕДИНИТЬ          5              ОБЪЕДИНИТЬ          6              ОБЪЕДИНИТЬ          7              ОБЪЕДИНИТЬ          8              ОБЪЕДИНИТЬ                 1              ОБЪЕДИНИТЬ          2              ОБЪЕДИНИТЬ          3              ОБЪЕДИНИТЬ          4              ОБЪЕДИНИТЬ          5              ОБЪЕДИНИТЬ          6              ОБЪЕДИНИТЬ          7              ОБЪЕДИНИТЬ          8              ОБЪЕДИНИТЬ
#12 by shuhard_серый
[просто в конфе его нет] сделай и не ипи мозг заказчику, не будет ни кто 07 января работать
#13 by ИУБиПовиц
угу, а праздников нет, а обеда нет, а сокращенных дней нет:) Есть дата время  25.05 в 9.00  каким то способом получаешь сколько рабочих часов есть, загружаешь задачей эти часы, оставшуюся часть проверяешь на след день и пока не закончится часы. А если оборудование, и ли что то там с помощью которого делается этот процесс в ремонте, это нужно учитывать или как?
#14 by greenscarf
Как-то запрос некорректно прикрепился видимо.
#15 by Одинесю
Ты его скопируй и в консоли запросов выполни.
#16 by greenscarf
Попробую, правда не до конца понимаю, загадочные обозначения aa.a и других
#17 by Одинесю
Я тоже, это не мое )
#18 by Ненавижу 1С
все равно без учета выходных, праздников и их переносов
#19 by Ненавижу 1С
+ не забываем про обеденный часовой перерыв
#20 by greenscarf
Получилось, по обработке: 25.05 в 9.00 +10 часов = 26.05 01.00, а по факту надо 10.00
#21 by Ненавижу 1С
не взлетит без календаря короче можно делать другими таблицами (исключения и т.д.), но что-то храниться в базе должно
#22 by greenscarf
Запрос не понятный, требует входные параметры - дату начала и дату окончания, хотя последнюю я как раз и хотел бы узнать
#23 by Fish
Делай с календарём, и не изобретай велосипедов.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С