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

Сроки нахождения в должности

Автор Алексей_1985_06, 14 фев 2020, 15:05

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

Алексей_1985_06

Ребят, помогите справиться...
В ТЧ "Послужной список" необходимо вести расчет срока нахождения в должности (год, месяц, день), есть поле "ДатаНачала" и "ДатаОкончания", при их заполнении должен рассчитаться срок в этой должности (скрин во вложении)
В модуле объекта сделал так, но выходит ошибка
Процедура ПриЗаписи(Отказ)
ТЧ = ЭтотОбъект.ПослужнойСписок;
Если ТЧ.ДатаОкончания = '00000000000000' Тогда // Если даты окончания нет (последняя запись) тогда расчет идет на текущую дату
ТЧ.СрокВДолжности = ТекущаяДата()- ТЧ.ДатаНачала;
Иначе
ТЧ.СрокВДолжности = (ТЧ.ДатаОкончания - ТЧ.ДатаНачала)/86400;// Получаем срок в днях

КонецЕсли;
КонецПроцедуры


Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
{Справочник.ЛичныйСостав.МодульОбъекта(41)}: Поле объекта не обнаружено (ДатаОкончания)
   Если ТЧ.ДатаОкончания = '00000000000000' Тогда

Да, и как сделать чтоб расчет был не в днях..... а в годах, месяцах и днях?
Помогите, кто занет!!!!:befhbt::befhbt::befhbt:

wise

Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Алексей_1985_06

Цитата: wise от 14 фев 2020, 15:11
(0) Пустая дата = Дата(1,1,1)

Что-то не совсем понял Вашу подсказку!

LexaK

вот простенький алгоритм для раскладки стажа в строку,
интересно как вы его сможете использовать в своей программе...

д1 = Дата(2017,8,5);
д2 = Дата(2019,2,23);
Разность = д2 - д1;
лкСтр = Формат(Дата(2000,1,1) + Разность, "ДФ=yy-MM-dd");
мЧасти = СтрРазделить(лкСтр,"-");
лкСтаж = ""
    + ?(Число(мЧасти[0])=0,"","" + Число(мЧасти[0])+" лет ")
    + (Число(мЧасти[1])-1) +" мес " // -1 компенсация месяца!!!
    + мЧасти[2] +" дней";

Сообщить(лкСтаж);

//результат сообщения: 1 лет 6 мес 21 дней

если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск