Каталог решений - Вычисления стажа работы в организации запросом. Вычисление разности дат в годах, днях и месяцах запросом. Вычисление знака зодиака. Статистика окладов по знакам зодиака.

Вычисления стажа работы в организации запросом. Вычисление разности дат в годах, днях и месяцах запросом. Вычисление знака зодиака. Статистика окладов по знакам зодиака.

Вычисления стажа работы в организации запросом. Вычисление разности дат в годах, днях и месяцах запросом. Вычисление знака зодиака. Статистика окладов по знакам зодиака.

В наличии

Задача: вывести в отчете «Списки сотрудников организаций» в поля «Лет», «Месяцев», «Дней», объединенных группой «Стаж в организации»  разность между двумя датами в годах, месяцах и днях, используя компоновку данных, но не добавляя функции в общие модули (т.к. конфигурация на поддержке)

Категория:

Описание

Исходные данные:

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 И День([Дата рождения])

                                Тогда «Водолей»

                Иначе «——«

Конец

 

 

 

 

 

 

 

 

has been added to your cart:
Оформление заказа