Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:59

Выкрутасы с датой в запросе

Автор ferrari314, 28 окт 2015, 14:07

0 Пользователей и 1 гость просматривают эту тему.

ferrari314

Возникла задача в отчете рассчитать количество рабочих часов требуемых на то или иное задание.
То есть у нас есть задание которое выполняется с 10.10.2015 : 12.00 по 12.10.2015 : 14.00
Необходимо посчитать сколько рабочих часов ушло на задание.
Количество часов в целых рабочих днях (11.10.2015) посчитать легко = если этот день в регистре рабочих дней плюсуем от него часы в общую миску.
Вопрос как посчитать хвостики (время с 10.10.2015 : 12.00 до конца рабочего времени 10.10.2015)
и с начала (рабочего времени 12.10.2015 до 12.10.2015 : 14.00)
подсчет делается в СКД и на каждую задачу.
Задать параметром начало 9.00 и конец рабочего дня 18.00 и юзать разностьдат - не получается ввиду того что у каждого элемента даты свой день месяц и год.
Как посчитать в коде - вижу прекрасно, а вот запросом - не знаю.

ferrari314

Придумал уже.
Беру начало факт дня начала + 8ч и начало факт дня конца + 18ч

Vladimir_Sh

Предлагаю вот такой вариант. На мой взгляд более наглядный:

|(18 - ЧАС(&Дата1) + ЧАС(&Дата2) - 9) + ((РАЗНОСТЬДАТ(&Дата1, &Дата2, ДЕНЬ) - 1) * 8)

Расшифровка метода:
1. Получаем кол-во рабочих часов за первый день.
|18 - ЧАС(&Дата1)
2. Получаем кол-во рабочих часов за последний день.
|ЧАС(&Дата2) - 9 
3. Получаем кол-во дней (без учета частичного дня).
|(РАЗНОСТЬДАТ(&Дата1, &Дата2, ДЕНЬ) - 1) 
4. Вычисляем кол-во рабочих часов и собираем все вместе.

Из плюсов вижу возможность наглядно менять расписание работы подставляя параметры в запрос.
Если я Вам помог, нажми - Спасибо!

Теги: дата Запрос 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск