Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 сен 2021, 01:46

Вывод результата разности дат в годах, в месяцах и в днях

Автор Ledgik, 22 фев 2019, 17:38

0 Пользователей и 1 гость просматривают эту тему.

Ledgik

 Написал код расчета разности дат. Все считается в днях. Помогите преобразовать код так чтобы результат выводился в годах, в месяцах и в днях. К примеру: 1 год 3 месяца 11 дней. Код привожу ниже.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТекущаяДата = НачалоДня(ТекущаяДата());
КонецПроцедуры

&НаКлиенте
Процедура ТЧСотрудникДатаНачалаПриИзменении(Элемент)
Стр = Элементы.ТЧСотрудник.ТекущиеДанные;
ДатаНачала = НачалоДня(Элемент.ТЧСотрудник.ДатаНачала());
КонецПроцедуры

&НаКлиенте
Процедура ТЧСотрудникДатаОкончанияПриИзменении(Элемент)
Стр = Элементы.ТЧСотрудник.ТекущиеДанные;
ДатаОкончания = НачалоДня(Элемент.ТЧСотрудник.ДатаОкончания());
КонецПроцедуры

&НаКлиенте
Процедура ТЧСотрудникТекущаяДатаПриИзменении(Элемент)
Стр = Элементы.ТЧСотрудник.ТекущиеДанные;
ТекущаяДата = НачалоДня(Элемент.ТЧСотрудник.ТекущаяДата());
КонецПроцедуры

&НаКлиенте
Процедура ТЧСотрудникСтажРаботыПриИзменении(Элемент)
Стр = Элементы.ТЧСотрудник.ТекущиеДанные;
СтажРаботы = Элемент.ТЧСотрудник.СтажРаботы;
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Стр = Элементы.ТЧСотрудник.ТекущиеДанные;
Если НЕ ЗначениеЗаполнено(Стр.ДатаОкончания) Тогда
         Стр.СтажРаботы = (ТекущаяДата()-Стр.ДатаНачала)/(60*60*24);
    Иначе
         Стр.СтажРаботы = (Стр.ДатаОкончания-Стр.ДатаНачала)/(60*60*24);
    КонецЕсли;
КонецПроцедуры

Etherial

К примеру: стаж работы 589 дней
ВсегоДней = 589;

СтажЛет = ВсегоДней/365;
СтажЛет = Лев (СтажЛет, Найти(СтажЛет, ","));

Если СтажЛет>1 тогда
РазностьЛет = 365*СтажЛет;
ВсегоДней = ВсегоДней - РазностьЛет;
КонецЕсли;

СтажМесяцев = ВсегоДней/30;
СтажМесяцев = Лев(СтажМесяцев, найти(СтажМесяцев, ",");

Если СтажМесяцев>1 Тогда
РазностьМесяцев = 30* СтажМесяцев;
ВсегоДней = ВсегоДней - РазностьМесяцев;
КонецЕсли;

ДатаНужная = Строка(СтажЛет)+"." Строка(СтажМесяцев)+"."+ВсегоДней;

Писал на коленке, работоспособность не проверял, но вектор приблизительно такой. Ещё, если я не ошибаюсь, функция приведения к определенному виду есть в ЗуПе.


Отправлено с моего MI 5s через Tapatalk


Похожие темы (5)

10644

Ответов: 6
Просмотров: 14066

76475

Ответов: 6
Просмотров: 298

61605

Ответов: 1
Просмотров: 832

68019

Ответов: 3
Просмотров: 1159

Рейтинг@Mail.ru Rambler's Top100

Поиск