Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Как в запросе из даты вычесть дату и получить количество: год.месяц.дней

Как в запросе из даты вычесть дату и получить количество: год.месяц.дней
Я
   PAvel321
 
09.02.18 - 19:18
Добрый вечер.
Ситуация такая:
Есть дата приема на работу и текущая дата. Нужно получить стаж сотрудника на последнем месте работы. В виде например 4 года3 месяца 12 дней. Как это можно сделать. Пока что на ум приходит РАЗНОСТЬДАТ но там получу лишь количество дней. А это не удобно для вычисления и не совсем точно.
Кто нибуть знает метод получше?
 
 
   Базис
 
1 - 09.02.18 - 19:20
На примере покажи, как ты САМ это считаешь.

С 10 января 2013 по сегодня.
   PAvel321
 
2 - 09.02.18 - 19:23
ВЫБОР
КОГДА СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА РАЗНОСТЬДАТ(&ДатаОкончания, СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДЕНЬ)
ИНАЧЕ РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаУвольнения, СотрудникиОрганизаций.ДатаПриемаНаРаботу, ДЕНЬ)
    КОНЕЦ КАК НепрерывныйСтажРаботы
   ПегийЛунь
 
3 - 09.02.18 - 19:24
   H A D G E H O G s
 
4 - 09.02.18 - 19:24
(2) Обработай при выводе
   PAvel321
 
5 - 09.02.18 - 19:25
Получаю количество дней. После этого смогу вычислить примерное время. С количеством лет то легко, а вот с месяцами и днями будут расхождения.
Но лучше способ я не придумал.
   H A D G E H O G s
 
6 - 09.02.18 - 19:25
Расстрелять за (3) такое.
   romix
 
7 - 09.02.18 - 19:26
(0) В СКД можно вызывать функции общего модуля, ими всё вычислять.
   ПегийЛунь
 
8 - 09.02.18 - 19:28
(6) Задача - сделать в _запросе_
Если постобработка, то прям из ЗиУП выдернуть функцию.
   romix
 
9 - 09.02.18 - 19:29
А строку вида "4 года 3 месяца 12 дней" можно получить вычитанием в цикле внутри функции (не запросом), или более интеллектуально - операцией "знак процента" (остаток от целочисленного деления).
   Cyberhawk
 
10 - 09.02.18 - 19:30
С 1 марта 2015 по 1 марта 2016 прошел 1 год
С 1 марта 2016 по 1 марта 2016 прошел 1 год
Но количество дней разное :)
 
 Рекламное место пустует
   Cyberhawk
 
11 - 09.02.18 - 19:30
*по 1 марта 2017 во второй строчке
   Cyberhawk
 
12 - 09.02.18 - 19:30
Так что арифметические манипуляции не прокатят
   Cyberhawk
 
13 - 09.02.18 - 19:31
Но автору нужен какой-то "стаж". Что это?
   romix
 
14 - 09.02.18 - 19:34
(12) Может устроить ДобавитьМесяц(Дата, СколькоМесяцевДобавить) - остальное дни. Это делать в цикле. 12 месяцев считать одним годом.
   PAvel321
 
15 - 09.02.18 - 19:34
Ладно попробую в СКД с помощью функции.
Я просто надеялся что может существует какое нибуть элегантное решение в запросе о котором я не знал.
   PAvel321
 
16 - 09.02.18 - 19:35
(14) как вариант.
Потеря 1 дня в высокосный год не должна стать трагедией
   Cyberhawk
 
17 - 09.02.18 - 19:40
(14) Пока нет понимания, что же требуется получить на выходе, всякие такие придумки несут мало пользы
   breezee
 
18 - 09.02.18 - 20:23
(0) А период между работами вы учитывете?
   Serg_1960
 
19 - 09.02.18 - 20:49
Имхо, "стаж" в виде лет, месяцев и дней - абстрактная величина. Я не буду упоминать  среднее количество календарных дней 29,3 :)), объясню на более простом примере:
период в 31 день == 1 месяц == 1 месяц + 1 день == 1 месяц + 2 дня == 1 месяц + 3 дня. Все варианты - верные, но в зависимости от ситуации.

О чём мой спич? Сначала устанавливаем правила определения значений, потом рассчитываем.
   Cyberhawk
 
20 - 09.02.18 - 20:53
(19) Ты опоздал, начиная с (10) Я двигаю эту тему )
   SleepyHead
 
21 - 10.02.18 - 07:33
(2) Если бы еще автор ответил, какую задачу он решает, можно было бы двигать. А так задроство какое-то, извините за выражение.
   pasha_d
 
22 - 12.02.18 - 09:31
чо за конфа? юзай регламентированный календарь.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует