Исходные данные:
1) [Параметры.Период]- дата формирования отчета, т.е. дата на которую вычисляется стаж
2) [Дата приема]– дата приема, т.е. дата с которой считается стаж
Порядок выполнения:
1) открываем отчет (Кадровый учет->Списки сотрудников организаций);
2) нажимаем в правом нижнем углу: Настройка варианта отчета -> Настройка структуры;
3) в левом нижнем углу окна «Настройка структуры отчета» включаем флаг «Расширенная настройка», переходим на закладку «Пользовательские поля»;
4) добавляем пользовательское поле-выражение . В открывшемся окне заполняем заголовок «Стаж в организации (Лет)», в поле выражения детальных записей вводим листинг, приведенный ниже. Аналогично добавляем поля-выражения «Стаж в организации (Месяцев)» и «Стаж в организации (Дней)»;
5) в окне настройки структуры отчета переходим на закладку «Поля» и добавляем в таблицу используемых полей созданные пользовательские поля;
6) в окне настройки структуры отчета (сверху) настраиваем структуру отчета для вывода.
Схема вычисления поля «Лет».
А = |
Выбор Когда День([Параметры.Период]) < День([Дата приема]) Тогда ДобавитьКДате([Параметры.Период], "МЕСЯЦ", -1) Иначе [Параметры.Период] Конец |
В = |
Выбор Когда Месяц( А ) < Месяц([Дата приема]) Тогда ДобавитьКДате( А , "МЕСЯЦ", -12) Иначе А Конец |
С = |
Выбор Когда Год( В ) - Год([Дата приема]) > 0 Тогда Год( В ) - Год([Дата приема]) Иначе 0 Конец
|
С – это разность между датами [Параметры.Период] и [Дата приема] в годах.
Листинг:
//&ПарамДата - дата на которую требуется рассчитать стаж работы в организации
//РаботникиОрганизацийСрезПервых.Период - дата приема в организацию
//для пользовательского поля в СКД в выражение заменить на <ДобавитьКДате(&ПарамДата, "МЕСЯЦ", -1)>
Выбор Когда Год(Выбор Когда Месяц(Выбор Когда День(&ПарамДата) < День(РаботникиОрганизацийСрезПервых.Период)
Тогда ДобавитьКДате(&ПарамДата, МЕСЯЦ, -1)
Иначе &ПарамДата
Конец) < Месяц(РаботникиОрганизацийСрезПервых.Период)
Тогда ДобавитьКДате(Выбор Когда День(&ПарамДата) < День(РаботникиОрганизацийСрезПервых.Период)
Тогда ДобавитьКДате(&ПарамДата, МЕСЯЦ, -1)
Иначе &ПарамДата
Конец, МЕСЯЦ, -12)
Иначе Выбор Когда День(&ПарамДата) < День(РаботникиОрганизацийСрезПервых.Период)
Тогда ДобавитьКДате(&ПарамДата, МЕСЯЦ, -1)
Иначе &ПарамДата
Конец
Конец) - Год(РаботникиОрганизацийСрезПервых.Период) > 0
Тогда Год(Выбор Когда Месяц(Выбор Когда День(&ПарамДата) < День(РаботникиОрганизацийСрезПервых.Период)
Тогда ДобавитьКДате(&ПарамДата, МЕСЯЦ, -1)
Иначе &ПарамДата
Конец) < Месяц(РаботникиОрганизацийСрезПервых.Период)
Тогда ДобавитьКДате(Выбор Когда День(&ПарамДата) < День(РаботникиОрганизацийСрезПервых.Период)
Тогда ДобавитьКДате(&ПарамДата, МЕСЯЦ, -1)
Иначе &ПарамДата
Конец, МЕСЯЦ, -12)
Иначе Выбор Когда День(&ПарамДата) < День(РаботникиОрганизацийСрезПервых.Период)
Тогда ДобавитьКДате(&ПарамДата, МЕСЯЦ, -1)
Иначе &ПарамДата
Конец
Конец) - Год(РаботникиОрганизацийСрезПервых.Период)
Иначе 0
Конец
Схема вычисления поля «Месяцев».
А = |
Выбор Когда День([Параметры.Период]) < День([Дата приема]) Тогда ДобавитьКДате([Параметры.Период], "МЕСЯЦ", -1) Иначе [Параметры.Период] Конец |
В = |
Выбор Когда Месяц(А) < Месяц([Дата приема]) Тогда 12 Иначе 0 Конец + Месяц(Выбор Когда Месяц(А) < Месяц([Дата приема]) Тогда ДобавитьКДате(А, "МЕСЯЦ", -12) Иначе А Конец) - Месяц([Дата приема]) |
С = |
Выбор Когда В>0 Тогда В Иначе 0 Конец |
С – это разность между датами [Параметры.Период] и [Дата приема] в месяцах.
Листинг:
//&ПарамДата - дата на которую требуется рассчитать стаж работы в организации
//РаботникиОрганизацийСрезПервых.Период - дата приема в организацию
//для пользовательского поля в СКД в выражение заменить на <ДобавитьКДате(&ПарамДата, "МЕСЯЦ", -1)>
ВЫБОР
КОГДА ВЫБОР
КОГДА МЕСЯЦ(ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ) < МЕСЯЦ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА 12
ИНАЧЕ 0
КОНЕЦ + МЕСЯЦ(ВЫБОР
КОГДА МЕСЯЦ(ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ) < МЕСЯЦ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ, МЕСЯЦ, -12)
ИНАЧЕ ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ
КОНЕЦ) - МЕСЯЦ(РаботникиОрганизацийСрезПервых.Период) > 0
ТОГДА ВЫБОР
КОГДА МЕСЯЦ(ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ) < МЕСЯЦ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА 12
ИНАЧЕ 0
КОНЕЦ + МЕСЯЦ(ВЫБОР
КОГДА МЕСЯЦ(ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ) < МЕСЯЦ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ, МЕСЯЦ, -12)
ИНАЧЕ ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ
КОНЕЦ) - МЕСЯЦ(РаботникиОрганизацийСрезПервых.Период)
ИНАЧЕ 0
КОНЕЦ
Схема вычисления поля «Дней».
А1 = |
Выбор Когда День([Параметры.Период]) < День([Дата приема]) Тогда РазностьДат(ДобавитьКДате([Параметры.Период], "МЕСЯЦ", -1), [Параметры.Период], "ДЕНЬ") Иначе 0 Конец |
А2 = |
Выбор Когда День([Параметры.Период]) < День([Дата приема]) Тогда ДобавитьКДате([Параметры.Период], "МЕСЯЦ", -1) Иначе [Параметры.Период] Конец |
В = |
А1 + День(Выбор Когда Месяц(А2) Тогда ДобавитьКДате(А2,"Месяц",-12) Иначе А2 ) - День([Дата приема]) |
С = |
Выбор Когда В>0 Тогда В Иначе 0 Конец |
С – это разность между датами [Параметры.Период] и [Дата приема] в днях.
Листинг:
//&ПарамДата - дата на которую требуется рассчитать стаж работы в организации
//РаботникиОрганизацийСрезПервых.Период - дата приема в организацию
//для пользовательского поля в СКД в выражение заменить на
ВЫБОР
КОГДА ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1), &ПарамДата, ДЕНЬ)
ИНАЧЕ 0
КОНЕЦ + ДЕНЬ(ВЫБОР
КОГДА МЕСЯЦ(ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ) < МЕСЯЦ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ, МЕСЯЦ, -12)
ИНАЧЕ ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ
КОНЕЦ) - ДЕНЬ(РаботникиОрганизацийСрезПервых.Период) > 0
ТОГДА ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1), &ПарамДата, ДЕНЬ)
ИНАЧЕ 0
КОНЕЦ + ДЕНЬ(ВЫБОР
КОГДА МЕСЯЦ(ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ) < МЕСЯЦ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ, МЕСЯЦ, -12)
ИНАЧЕ ВЫБОР
КОГДА ДЕНЬ(&ПарамДата) < ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ТОГДА ДОБАВИТЬКДАТЕ(&ПарамДата, МЕСЯЦ, -1)
ИНАЧЕ &ПарамДата
КОНЕЦ
КОНЕЦ) - ДЕНЬ(РаботникиОрганизацийСрезПервых.Период)
ИНАЧЕ 0
КОНЕЦ
Полезные ссылки: http://www.kb.mista.ru/article.php?id=664
Схема вычисления поля «Знак зодиака».
Выбор
Когда Месяц([Дата рождения]) = 12 И День([Дата рождения]) >= 22 Или Месяц([Дата рождения]) = 1 И День([Дата рождения])
Тогда "Козерог"
Когда Месяц([Дата рождения]) = 11 И День([Дата рождения]) >= 23 Или Месяц([Дата рождения]) = 12 И День([Дата рождения])
Тогда "Стрелец"
Когда Месяц([Дата рождения]) = 10 И День([Дата рождения]) >= 24 Или Месяц([Дата рождения]) = 11 И День([Дата рождения])
Тогда "Скорпион"
Когда Месяц([Дата рождения]) = 9 И День([Дата рождения]) >= 21 Или Месяц([Дата рождения]) = 10 И День([Дата рождения])
Тогда "Весы"
Когда Месяц([Дата рождения]) = 8 И День([Дата рождения]) >= 22 Или Месяц([Дата рождения]) = 9 И День([Дата рождения])
Тогда "Дева"
Когда Месяц([Дата рождения]) = 7 И День([Дата рождения]) >= 21 Или Месяц([Дата рождения]) = 8 И День([Дата рождения])
Тогда "Лев"
Когда Месяц([Дата рождения]) = 6 И День([Дата рождения]) >= 21 Или Месяц([Дата рождения]) = 7 И День([Дата рождения])
Тогда "Рак"
Когда Месяц([Дата рождения]) = 5 И День([Дата рождения]) >= 21 Или Месяц([Дата рождения]) = 6 И День([Дата рождения])
Тогда "Близнецы"
Когда Месяц([Дата рождения]) = 4 И День([Дата рождения]) >= 21 Или Месяц([Дата рождения]) = 5 И День([Дата рождения])
Тогда "Телец"
Когда Месяц([Дата рождения]) = 3 И День([Дата рождения]) >= 21 Или Месяц([Дата рождения]) = 4 И День([Дата рождения])
Тогда "Овен"
Когда Месяц([Дата рождения]) = 2 И День([Дата рождения]) >= 20 Или Месяц([Дата рождения]) = 3 И День([Дата рождения])
Тогда "Рыбы"
Когда Месяц([Дата рождения]) = 1 И День([Дата рождения]) >= 21 Или Месяц([Дата рождения]) = 2 И День([Дата рождения])
Тогда "Водолей"
Иначе "-----"
Конец