Объявление

Свернуть
Пока нет объявлений.

Превышение календарного периода

Свернуть
X
  • Фильтр
  • Время
  • Показать
  • Сортировать
  • Упорядочить по
Очистить всё
новые сообщения

    Превышение календарного периода

    Сотрудник был на больничном с 01.01.07 по 23.01.07 - 23 дня
    затем в административном отпуске с 24.01.07 по 11.02.07 - 19 дней

    При проверке в CheckXML от 25.01.2008 почему-то выдается ошибка:

    ***30: Ошибка. Период по больничным листам 0 мес. 23 дн. и административный отпуск 0 мес. 19 дн. в сумме составляют 1 мес. 12 дн., что превышает календарный период 1 мес. 11 дн., определяемый реквизитами <НачалоПериода> = 01.01.2007 и <КонецПериода> = 11.02.2007 блока <ОсновнаяСтрока> первого и последнего периода работы:

    #2
    Ответ: Превышение календарного периода

    Сообщение от NSNW
    Сотрудник был на больничном с 01.01.07 по 23.01.07 - 23 дня
    затем в административном отпуске с 24.01.07 по 11.02.07 - 19 дней

    При проверке в CheckXML от 25.01.2008 почему-то выдается ошибка:

    ***30: Ошибка. Период по больничным листам 0 мес. 23 дн. и административный отпуск 0 мес. 19 дн. в сумме составляют 1 мес. 12 дн., что превышает календарный период 1 мес. 11 дн., определяемый реквизитами <НачалоПериода> = 01.01.2007 и <КонецПериода> = 11.02.2007 блока <ОсновнаяСтрока> первого и последнего периода работы:
    Согласно правил подсчета календарного стажа
    Dк - Dн + 1 = 11 - 01 +1 = 11 дн
    Mк - Mн = 02-01 = 1 м

    01.01.2007 - 31.12.2007 (365дн) = 12м 0 дн ,
    а не 12м 5дн

    Комментарий


      #3
      Просьба разработчиков откликнуться.

      Уважаемые разработчики, просьба прокомменитровать ситуацию описанную автором темы.
      У сотрудника 2 отсутствия, в файле XML 2 блока, отдельно с длительностью больничного и отдельно административный отпуск.
      По логике, ваша программа проверки складывает эти длительности, приводит в месяцы и дни.
      Это значение никогда не совпадет с продолжительностью периода работы...
      Объясните, почему расчет одного и того же периода с разделением на части и без дает разный результат?
      И почему такая ситуация интерпретируется программой проверки как ошибка?

      P.S. В примере выше описана ситуация с различными отсутствиями. Но она достаточно наглядна.
      Столкнулись с такой же проблемой на однотипных отсутствиях (больничный и продленный больничный).
      В нашей системе учет их длительности произведен раздельно, исходя из общих правил подсчета.
      Затем длительность отсутствий просуммирована. Ошибку программа проверки выдает точно такую же.
      Естественно, что ошибки можно было бы избежать, приняв отсутсвия как одно, но насколько это справедливо?
      Последний раз редактировалось -DoKa-; 28.01.2009, 16:50.

      Комментарий


        #4
        Сообщение от -DoKa- Посмотреть сообщение
        Уважаемые разработчики, просьба прокомменитровать ситуацию описанную автором темы.
        У сотрудника 2 отсутствия, в файле XML 2 блока, отдельно с длительностью больничного и отдельно административный отпуск.
        По логике, ваша программа проверки складывает эти длительности, приводит в месяцы и дни.
        Это значение никогда не совпадет с продолжительностью периода работы...
        Объясните, почему расчет одного и того же периода с разделением на части и без дает разный результат?
        И почему такая ситуация интерпретируется программой проверки как ошибка?
        Ничего не поделаешь, при тестировании применяется Алгоритм проверки календарного стажа, в котором месяц=30 дней. Поэтому бывают случаи, когда период стажа реальный и рассчитанный по Алгоритму... не совпадают, напр, период с 25.01 по 3.02 составляет 10 дней (7 дней в январе и 3 дня в феврале), а по Алгоритму - всего 9 дней.
        Выход один - считать продолжительность периодов, исходя из Алгоритма вычисления календарного стажа (по Правилам ...)
        Гн, Мн, Дн; // - год, месяц, день начала периода
        Гк, Мк, Дк; // - год, месяц, день конца периода
        Д=Дк-Дн; если Д<0 тогда Д=Д+30; Мк=Мк-1;
        М=Мк-Мн; если М<0 тогда М=М+12; Гк=Гк-1;
        Г=Гк-Гн;
        Д=Д+1;
        если Д>=30 тогда Д=0; М=М+1;
        если М=12 тогда М=0; Г=Г+1;
        .
        Последний раз редактировалось LoraK; 28.01.2009, 21:30.

        Комментарий


          #5
          LoraK, огромное спасибо за столь полное пояснение. Кажется, разобрались с данным вопросом.

          Комментарий

          реклама

          Свернуть
          Обработка...
          X