Дата - дата = дата

1. Provorez 16.01.20 10:54 Сейчас в теме
Как вычесть из даты дату и получить дату? Либо можно получить отдельно год, месяц, день.
Зарплата и управление персоналом, редакция 3.1 (3.1.11.106)
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 34 16.01.20 10:56 Сейчас в теме
(1) Приведите пример, что именно нужно?
8. Provorez 16.01.20 11:13 Сейчас в теме
(2) Нужно получить стаж сотрудников в таком виде 1 год 1 месяц 1 день.
3. user856012 13 16.01.20 10:57 Сейчас в теме
(1)
Как вычесть из даты дату и получить дату?
На пальцах: если из пятницы вычесть понедельник - что должно получиться? Среда? Или все-таки 5 дней?

P.S. Думать хоть немного надо, прежде чем такие вопросы задавать.
Fox-trot; +1 Ответить
9. Provorez 16.01.20 11:15 Сейчас в теме
(3) Нужно получить разность дат, например 16.02.2020 - 15.01.2019 = 1 год 1 месяц 1 день
12. Sashares 34 16.01.20 11:21 Сейчас в теме
(9)Тогда так и делать.
Из большей даты вычитать меньшую, потом результат (секунды) приводить к нужным единицам.
6. soft_wind 16.01.20 11:04 Сейчас в теме
(1) что бы вам было понятно, в 1С дата это число (секунд)
разница между двумя датами как раз и сесть целое число секунд между двумя датами
а уж секундами, можете сделать то что вам надо, посчитать сколько часов/дней прочшло между датами и т.д.
7. RocKeR_13 1321 16.01.20 11:07 Сейчас в теме
(1) Может все-таки из даты необходимо вычесть количество дней/недель/месяцев/кварталов? Действительно непонятно, что вы хотите увидеть, когда вычитаете, например, "25 декабря 2019 года - 11 марта 2001 года". В контексте дат вычитание в 1С дает расстояние между датами в секундах
11. tvm 16.01.20 11:18 Сейчас в теме
(1) в УПП в общем модуле "ОбщегоНазначения" есть процедура "РазобратьРазностьДат". Возвращает то что нужно
ZergKRSK; +1 Ответить
13. dakork 33 16.01.20 11:24 Сейчас в теме
(11)
РазобратьРазностьДат


в ЗУП в общем модуле ОбщегоНазначения есть и такое

// Возвращает строковое представление интервала между переданными датами или
// относительно переданной даты и текущей даты сеанса.
//
// Параметры:
// ВремяНачала - Дата - начальная точка интервала.
// ВремяОкончания - Дата - конечная точка интервала, если не задана - берется текущая дата сеанса.
//
// Возвращаемое значение:
// Строка - представление интервала времени.
//
Функция ИнтервалВремениСтрокой(ВремяНачала, ВремяОкончания = Неопределено) Экспорт
user613191_olgargor; +1 Ответить
16. wertep 23 16.01.20 18:01 Сейчас в теме
(11) Посмотрел. А что вот так работать будет не правильно?
Разница = Дата(2020,2,16,0,0,0) - Дата(2019,1,3,0,0,0);
РазницаДат = Дата(1,1,1,0,0,0) + Разница;

Деней = День(РазницаДат) - 1;
Месяцев = Месяц(РазницаДат) - 1;
Лет = Год(РазницаДат) - 1;
14. danjer74 3 16.01.20 12:14 Сейчас в теме
(1)Запросом РазностьДат
17. user613191_olgargor 16.01.20 22:49 Сейчас в теме
Оператором "-". А потом рассчитывать, сколько это дней, годов....

Функция РазбитьСекунды(ВсегоСекунд)

Секунды = ВсегоСекунд % 60;
ВсегоМинут = (ВсегоСекунд - Секунды) / 60;
Минуты = ВсегоМинут % 60;
ВсегоЧасов = (ВсегоМинут - Минуты) / 60;
Часы = ВсегоЧасов % 24;
Дни = (ВсегоЧасов - Часы) / 24;

ПредставлениеДней = ?(ЗначениеЗаполнено(Дни), Строка(Дни) + " дн.", "");

Результат = СтрШаблон("%1 %2 ч. %3 мин. %4 сек.", ПредставлениеДней, Строка(Часы), Строка(Минуты), Строка(Секунды));

Возврат Результат;

КонецФункции
Показать
4. lmnlmn 69 16.01.20 11:01 Сейчас в теме
Вот как вы написали так и надо сделать. Получите как раз разницу между датами в секундах. А дальше просто математика с некоторыми календарными нюансами.
Так же не лишне ознакомиться с функциями работы с датой из синтакс-помощника. Там есть кое что интересное.
5. maks_20 164 16.01.20 11:03 Сейчас в теме
для отдельного вывода дня, года, месяца почитайте тут: https://helpme1c.ru/funkciya-format-v-yazyke-1s-8-v-primerax
10. dakork 33 16.01.20 11:17 Сейчас в теме
(9) Дата(2020,02,16)-Дата(2019,01,15) = КоличествоСекунд. и т.д.
15. YanTsys 12 16.01.20 13:29 Сейчас в теме
Тут нужно с заказчиком отдельно оговаривать что для данной задачи считается расчетным месяцем например 1 марта 2019 - 1 февраля 2019 это 28 дней что меньше чем 365/12=30.417, то есть с точки зрения среднемесячного количества дней февраль не является полным месяцем...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот