Тренинг по подготовке к аттестации.
Второй поток – Задача 14

Приветствуем!

Публикуем задачу под номером 3.44 сборника задач по подготовке к аттестационному экзамену.

Решение и условие задачи опубликовано ниже.

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.

Если не активировали токен — посмотрите видео-инструкцию (видео N5)

Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.

комментариев 18 на “Тренинг по подготовке к аттестации.
Второй поток – Задача 14”

  1. Ошибка в расчете разности дат для оклада (когда отработано 2 дня подряд разность дат между ними даст 1 день) – нужно прибавить 1 секунду к ОсновныеНачисленияФактическийПериодДействия.ПериодДействияКонец

  2. NikolaySVysotsky 17.10.2012 в 22:17

    Здравствуйте, Павел!
    В тестовом примере , при получении факта дней в запросе используется конструкция

    РАЗНОСТЬДАТ(ОсновныеНачисленияФактическийПериодДействия.ПериодДействияНачало, ОсновныеНачисленияФактическийПериодДействия.ПериодДействияКонец, ДЕНЬ)

    .
    Если ОсновныеНачисленияФактическийПериодДействия.ПериодДействияНачало = 02.01.2012 0:00:00 и ОсновныеНачисленияДанныеГрафика.ПериодДействияКонец = 03.01.2012 23:59:59 мы получаем ФактДней = 1 , хотя человек реально отработал 2 дня. Разве это верно?

    • Добрый день!

      Нет, не верно. Нужно прибавить еще один день.

  3. Vadim Kashirny 16.09.2012 в 23:01

    Здравствуйте, Павел!
    Снова вернулся к задачам с табелем и появился такой вот вопрос-идея…
    Фактически данные об отработанном времени внесенные табелем можно рассматривать как индивидуальный график сотрудника. Если это так, тогда табелем можно сделать записи в регистр сведений графиков, что позволит нам при расчете получить время штатными средствами. Мне кажется это будет идеальный вариант решения такой задачи, но более трудоемкий.
    Что Вы думаете по поводу этого?

    • Интересный вариант. Для этой задачи может вполне подойти.

  4. Здравствуйте, Павел!

    Прокомментируйте, пожалуйста, моё решение.
    При проведении табеля я сначала формирую запись в регистре расчета об окладе за всю неделю, а потом обхожу табличную часть и при необходимости создаю записи о больничном и невыходе. Т.к. они вытесняют оклад по периоду действия, то факт. кол-во дней по окладу я беру из таблицы данных графика из поля “Фактический Период Действия”.
    Т.о. я решил задачу без использования таблицы фактического периода действия (как в Вашем решении).

    И еще, будет ли ошибкой на экзамене то, что мы используем для табеля практически полностью весь расчетный механизм платформы, не создавая оборотный регистр накопления для кол-ва факт. дней?

    Спасибо, Николай.

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

      • Спасибо, а логику моего решения, описанного выше можно считать правильной?

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

    «Дневная ставка рассчитывается как начальное значение оклада, деленное на количество РАБОЧИХ дней в том же периоде, что и фактически отработанные дни.»

    Используя таблицу фактический период действия мы не можем получить РАБОЧИЕ дни, а только получим интервалы, в которые сотрудник по графику мог как работать работать, так и отдыхать.

    • В представленном решении рабочие дни не могут отличаться от отработаннных.

  6. Условие вроде не выполняется
    “Дневная ставка рассчитывается как начальное значение оклада, деленное на количество рабочих дней в том же периоде, что и фактически отработанные дни.”
    Фактический период действия дает нам интервалы фактического действия, а не реально рабочие дни по графику.

  7. Здравствуйте, штраф  за невыход  сумма со знаком минус 200 рублей?

    • Почему с минусом? Когда мне вот штрафы выписывали, там всегда положительное значение стояло ;)