Производственный календарь ELMA, настройка и использование

Где применять производственный календарь elma?

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

Мы использовали механизмы производственного календаря elma не один раз и даже перенесли его в свою соседнюю систему. (интегрирована с elma и написана на c#)

Например:

На задачу нужно 3 дня, какой поставить срок, если впереди праздники и выходные?

В ELMA есть специальный инструмент — производственный календарь. Сюда можно внести выходные, время рабочего дня и перерывы на обед — и в нужном месте воспользоваться этой информацией.

Настройки календаря находятся в Администрирование -> Календарь.

По умолчанию календарь настроен на обычные выходные — суббота и воскресенье и рабочий день с 9 до 18.
Elma активно пользуется производственным календарем.

Например: при установке задач — если поставить задачу в elma c плановым временем 3 дня, то elma автоматически установит ей срок до вторника 18:00.

Настроить производственный календарь может обычный пользователь — но лучше пусть это сделает ваш администратор или аналитик.

Как разработчику использовать производственный календарь?

В elma есть внутренний сервис IProductionCalendarService, который можно получить с помощью локатора ELMA (что то вроде диспетчера сервисов, расскажу отдельно).

Описание методов сервиса IProductionCalendarService ELMA.

Я считаю плохо описан метод EvalTargetTime, при использовании появляется много вопросов и перед вызовом приходится тестировать как же он работает на самом деле.

  • Если говорить о перегрузке метода которая принимает на вход часы — то все ясно приняла 5 часов и посчитала — если startTime понедельник утро — то с учетом обеда вернется 15:00 того же дня.
  • Но если на входе TimeSpan и мы берем хотим прибавить 2 дня (TimeSpan.FromDays(2)) — то казалось бы должно прибавиться 48 часов, но это не так, вам прибавится всего два рабочих дня — startTime понедельник утро, +2 дня будет 18:00 вторника.

А что прибавить к дате 2 дня и 5 часов?

  • понедельник плюс 53 часа (TimeSpan.FromHours(53)) — вернет 15:00 среды, для обычного человека все кажется логичным, но программисту это взорвет мозг
    • ELMA определила что 53 часа это 2 полных дня (т.е. 48 часов) и посчитала их за 2 рабочих дня и прибавила остаток в рабочих часах — учитывайте это.

Если нужно прибавить рабочие дни — воспользуйтесь методом AddDays:
— передав startTime понедельник и прибавить 2 дня то вернется среда.

Как протестировать?

Создайте в демо версии elma (портлет код доступен для редактирования только администратору)—  портлет код и поиграться с этим сервисом, чтобы до конца понять логику работы, пример кода для портлета:

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

%d такие блоггеры, как:

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: