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

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 1317 16.01.20 11:07 Сейчас в теме
(1) Может все-таки из даты необходимо вычесть количество дней/недель/месяцев/кварталов? Действительно непонятно, что вы хотите увидеть, когда вычитаете, например, "25 декабря 2019 года - 11 марта 2001 года". В контексте дат вычитание в 1С дает расстояние между датами в секундах
11. tvm 16.01.20 11:18 Сейчас в теме
(1) в УПП в общем модуле "ОбщегоНазначения" есть процедура "РазобратьРазностьДат". Возвращает то что нужно
ZergKRSK; +1 Ответить
13. dakork 32 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 32 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, то есть с точки зрения среднемесячного количества дней февраль не является полным месяцем...
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день