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


Формула в калькуляторе стажа

Формула в калькуляторе стажа
Я
   TolstiyBeremenniy
 
02.12.18 - 08:56
Подскажите пожалуйста по формуле.
Табличная часть, в которую вводится дата начала, дата окончания.
Это сколько проработал тот или иной сотрудник.
Вводятся все его рабочие места.
Нужно что бы при вводе 2х дат выводилось года, месяца и дни,
сколько отработал сотрудник. Как это лучше сделать?
 
 
   PuhUfa
 
1 - 02.12.18 - 09:00
Я думаю, что лучше это посчитать
   TolstiyBeremenniy
 
2 - 02.12.18 - 09:07
(1) Форма, табличная часть
в шапке сотрудник, в табличной части места и даты начала и окончания работ в них.
Нужно просто формула рассчитывающая года, месяца и дни между двумя датами.
   Гость из Мариуполя
 
3 - 02.12.18 - 09:34
в типовой ЗУП 2.5 есть 
Процедура РазобратьРазностьДат(Дата1, Дата2, Лет = 0, Месяцев = 0, Дней = 0) Экспорт 

за ЗУП 3.1. ничего не скажу, не копался

(0) >>Как это лучше сделать?
ИМХО, взять типовую и не париться.
Потому что при нефиксированнызх единицах измерения разночтения неизбежны.
Простой пример (приводился на исе)  - разница между 01.03. и 31.01 - это сколько?
1 месяц и 1 день?
или 0 мес и 29 дней?
   Гость из Мариуполя
 
4 - 02.12.18 - 09:38
а так хоть будет какое-то единообразие с типовой.
   TolstiyBeremenniy
 
5 - 02.12.18 - 09:46
(4) Ну понял, посмотрю это в этой конфигурации.
Как то все же не соображу как правильно. Так как не знаю всех моментов.
   SleepyHead
 
6 - 02.12.18 - 12:54
В ЗУП 3.1 есть методы работы с расчетом стажа, я делал так:

// расчет стажа общего и научно-педагогического

МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
// сначала в таблицу ВТИсходныеДанные поместить поля Дата, ФизическоеЛицо, Сотрудник, ВидСтажа

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСотрудников", МассивСотрудников);
Запрос.УстановитьПараметр("Период", КонецПериода);
Запрос.УстановитьПараметр("СтажОбщий", Справочники.ВидыСтажа.НайтиПоРеквизиту("КатегорияСтажа", Перечисления.КатегорииСтажа.Общий));
Запрос.УстановитьПараметр("СтажНаучный", Справочники.ВидыСтажа.НайтиПоРеквизиту("КатегорияСтажа", Перечисления.КатегорииСтажа.ОбщийНаучноПедагогический));
Запрос.Текст =
"ВЫБРАТЬ
|    Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
|    Сотрудники.Ссылка КАК Сотрудник,
|    &Период КАК Дата,
|    &СтажОбщий КАК ВидСтажа
|ПОМЕСТИТЬ ВТИсходныеДанные
|ИЗ
|    Справочник.Сотрудники КАК Сотрудники
|ГДЕ
|    Сотрудники.Ссылка В(&МассивСотрудников)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|    Сотрудники.ФизическоеЛицо,
|    Сотрудники.Ссылка,
|    &Период,
|    &СтажНаучный
|ИЗ
|    Справочник.Сотрудники КАК Сотрудники";
Запрос.Выполнить();

// расчет стажа указанного вида

КадровыйУчетРасширенный.СоздатьВТСтажиСотрудников(Запрос.МенеджерВременныхТаблиц);

// выбрать стаж в месяцах из полученных данных

Запрос.Текст = "
|ВЫБРАТЬ
|   ВТСтажиСотрудников.Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,
|   ВТСтажиСотрудников.Дата КАК Период,
|   ВТСтажиСотрудников.ВидСтажа.КатегорияСтажа КАК КатегорияСтажа,
|   ВТСтажиСотрудников.РазмерМесяцев КАК РазмерМесяцев
|ИЗ ВТСтажиСотрудников";
    
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// мне нужен был размер стажа только в месяцах

// но если прочитать описания в модулях, выбирай что нужно
КонецЦикла;
   mikecool
 
7 - 02.12.18 - 14:33
у расчета стада есть нюансы, не помню уже какие, но есть
надо посоветоваться с кадровиком прежде, чем писать функции
   SleepyHead
 
8 - 02.12.18 - 14:41
(7) Они расскажут, ага :)
   TolstiyBeremenniy
 
9 - 03.12.18 - 09:29
вызываю вот эту функцию

ОбщегоНазначения.РазобратьРазностьДат(ЭлементыФормы.ПриемУвольнение.ТекущаяСтрока.ДатаНачала, ЭлементыФормы.ПриемУвольнение.ТекущаяСтрока.ДатаОкончания, Лет, Месяцев, Дней);


передаю 2 даты, в Лет, Месяцев и дней стоят нули, почему она не работает?
   TolstiyBeremenniy
 
10 - 03.12.18 - 09:35
Мне нужно получить значения лет, месяцев и дней.
Между двумя датами.
как это сделать?
 
 Рекламное место пустует
   TolstiyBeremenniy
 
11 - 03.12.18 - 09:59
Если вызывать вот так. возвращает количество дней, но
не возвращает количество месяцев и лет


    Дата1 = ЭлементыФормы.ПриемУвольнение.ТекущаяСтрока.ДатаНачала;
    Дата2 = ЭлементыФормы.ПриемУвольнение.ТекущаяСтрока.ДатаОкончания;
    ОбщегоНазначения.РазобратьРазностьДат(Дата2, Дата1, Лет, Месяцев, Дней);

Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно задать вопрос "Как сделать?" и получить кучу ответов, что тебе это делать не надо. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует