Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0
Доброго времени суток! есть запрос который высчитывает разность даст между датами:
ВЫБРАТЬ ПростойВагонаСрезПоследних.НомерВагона, ПростойВагонаСрезПоследних.ПрибытияВагона, ПростойВагонаСрезПоследних.ВозвратПВст ПОМЕСТИТЬ ВТ_РСПростой ИЗ РегистрСведений.ПростойВагона.СрезПоследних(&Период, ) КАК ПростойВагонаСрезПоследних ;
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_РСПростой.НомерВагона, ВТ_РСПростой.ПрибытияВагона, ВТ_РСПростой.ВозвратПВстКраматорск КАК СдачаНаСтКраматорск, ВЫБОР КОГДА ВТ_РСПростой.ПрибытияВагона <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) И ВТ_РСПростой.ВозвратПВстКраматорск <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА РАЗНОСТЬДАТ(ВТ_РСПростой.ПрибытияВагона, ВТ_РСПростой.ВозвратПВст, ЧАС) ИНАЧЕ ВЫБОР КОГДА ВТ_РСПростой.ПрибытияВагона <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) И ВТ_РСПростой.ВозвратПВст= ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА РАЗНОСТЬДАТ(ВТ_РСПростой.ПрибытияВагона, &Период, ЧАС) ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК ВсегоЧасовПростоя, ВЫБОР КОГДА ВТ_РСПростой.ПрибытияВагона <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) И ВТ_РСПростой.ВозвратПВст <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА РАЗНОСТЬДАТ(ВТ_РСПростой.ПрибытияВагона, ВТ_РСПростой.ВозвратПВст, СЕКУНДА) ИНАЧЕ ВЫБОР КОГДА ВТ_РСПростой.ПрибытияВагона <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) И ВТ_РСПростой.ВозвратПВст = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА РАЗНОСТЬДАТ(ВТ_РСПростой.ПрибытияВагона, &Период, СЕКУНДА) ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК ВсегоСекундПростоя, "" КАК ВремяПростоя ИЗ ВТ_РСПростой КАК ВТ_РСПростой
Вот что получаю в отчете:
В разных моментах по разному округляет, то в большую то в меньшую сторону. Как вообще работает эта РАЗНОСТЬДАТ()?
[необходимо зарегистрироваться для просмотра ссылки]
Цитата
Третий параметр содержит единицу измерения, в которой необходимо получить результат функции. В качестве третьего параметра можно использовать следующие значения: Секунда, Минута, Час, День, Месяц, Квартал, Год. При расчете результата функция игнорирует единицы измерения, которые меньше, чем указанная в данном параметре единица.
Например, если в качестве третьего параметра указать Час, то при расчете результата будут игнорироваться минуты и секунды, присутствующие в первых двух параметрах. Если же в третьем параметре указать Месяц, то игнорироваться будут дни, часы, минуты и секунды.
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0
Цитата(Petre @ 02.09.15, 13:52)
13 часов 27 числа минус 15 часов 24 числа = 70 часов разницы.
Первая колонка с датой и временем это ПРИБЫТИЕ, а вторая это ОТПРАВКА, нужно от времени ОТПРАКА отнять время ПРИБЫТИЯ, получить часы простоя.
Часы считаю РАЗНОСТЬДАТ(ПРИБЫТИЕ,ОТПРАВКА,ЧАС) Рядом с колонкой часов расположена колонка которая высчитывается вот так РАЗНОСТЬДАТ(ПРИБЫТИЕ,ОТПРАВКА,СЕКУНДА), а потом эти секунды передаются в функцию которая написана выше.
Цитата(Petre @ 02.09.15, 13:52)
13 часов 27 числа минус 15 часов 24 числа = 70 часов разницы.
вроде понял) получается часы с 24 по 27 число = 72, и 15часов - 13 часов = 2 часа, 72-2 = 70 часов.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!