Добрый день, не могу сообразить нужно рассчитать количество отработанного времени сотрудника до минут как правило работники начинают смену днём, а заканчивают ночью следующего числа как это учесть в расчётах накидал функцию

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | РАЗНОСТЬДАТ(ВремяНачалаРаботы.ВремяНачалаРаботы, ВремяОкончанияРаботы.ВремяОкончанияРаботы, СЕКУНДА) КАК Время
    |ИЗ
    | РегистрСведений.ВремяНачалаРаботы КАК ВремяНачала,
    | РегистрСведений.ВремяОкончанияРаботы КАК ВремяОкончанияРаботы
    |ГДЕ
    | ВремяНачалаРаботы.Дата = &Дата
    |И
    | ВремяОкончанияРаботы.Дата = &Дата";

    Запрос.УстановитьПараметр("Дата", Формат(ТекущаяДата(), "ДЛФ=Д"));

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

    Пока Выборка.Следующий() Цикл

    ЧасовВСЕГО = Выборка.Время/3600;

    КонецЦикла;

    Возврат ЧасовВСЕГО;
```

, но она возвращает только часы не всё время и не учитывает дату следующего дня ?
---
1)Формат(ТекущаяДата(), "ДЛФ=Д") - это строка. у вас в регистре даты - строки?

обычно просто ТекущаяДата()

2) если надо анализировать 2 дня (сегодня начал, сегодня или завтра закончил)

```1c
    | ВремяНачалаРаботы.Дата >= &ДатаНачала
    |И
    | ВремяОкончанияРаботы.Дата <= &ДатаОкончания";

    Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("ДатаОкончания", ТекущаяДата() + 24*60*60);
```

3) поищите в типовой базе это. думаю все эти вопросы уже решены
---
но она возвращает только часы

ЧасовВСЕГО = Выборка.Время/3600

МинутВсего = (Выборка.Время- ЧасовВСЕГО * 3600)/60
---
о текущедате с полями Дата в РС не дел

еще смотрите чтоб тип сравнения был не = а > или <

иначе запрос будет искать дату 14 09 2021 9:28. т.е слишком точно.
---
МинутВсего = (Выборка.Время- Окр(ЧасовВСЕГО * 3600,0))/60

попробуйте с округлением
---
```1c
    ЧасовВСЕГО = Цел(Выборка.Время/3600);
    МинутВсего = (Выборка.Время- ЧасовВСЕГО * 3600)/60;
```
---
1)Формат(ТекущаяДата(), "ДЛФ=Д") - это строка. у вас в регистре даты - строки?

обычно просто ТекущаяДата()

2) если надо анализировать 2 дня (сегодня начал, сегодня или завтра закончил)

```1c
    | ВремяНачалаРаботы.Дата >= &ДатаНачала
    |И
    | ВремяОкончанияРаботы.Дата <= &ДатаОкончания";

    Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("ДатаОкончания", ТекущаяДата() + 24*60*60);
```

3) поищите в типовой базе это. думаю все эти вопросы уже решены
---
Формат(ТекущаяДата(), "ДЛФ=Д") - это строка. у вас в регистре даты - строки? да
---
Понять не могу почему по текущедате с полями Дата в РС не делает выборку ?
---
Может в поле "Дата" все же значение типа Дата, а не строка?
---
о текущедате с полями Дата в РС не дел

еще смотрите чтоб тип сравнения был не = а > или <

иначе запрос будет искать дату 14 09 2021 9:28. т.е слишком точно.
---
но она возвращает только часы

ЧасовВСЕГО = Выборка.Время/3600

МинутВсего = (Выборка.Время- ЧасовВСЕГО * 3600)/60
---
ЧасовВСЕГО = Выборка.Время/3600

МинутВсего = (Выборка.Время- ЧасовВСЕГО * 3600)/60 с минутами какая то ерунда получается если человек отработал с 8. 00 до 17.00 результат выдаёт 9 часов понятно 1 час на обед, а если он отработал 17: 50 то минуты выдаёт -0,000000000000000000000000013333333333333333333333333333 по моему должно быть 9:50 минут
---
МинутВсего = (Выборка.Время- Окр(ЧасовВСЕГО * 3600,0))/60

попробуйте с округлением
---
```1c
    ЧасовВСЕГО = Цел(Выборка.Время/3600);
    МинутВсего = (Выборка.Время- ЧасовВСЕГО * 3600)/60;
```
---
наверно потому что у вас нет такого, чтобы дата начала была сегодня и дата окончания была сегодня
ну и вы понимаете, конечно, что у вас в запросе нет привязки к сотруднику.
то есть если сто человек работает, то будет 100 дат начала и 100 дат конца и результат будет 100*100 = 10 000 строк