Вычисление срока

Тема в разделе "Lotus - Программирование", создана пользователем motogarri, 23 сен 2010.

  1. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Пытаюсь вычислить количество дней включая выходные и праздники. Цикл не срабатывает, дает ошибку "Превышен максимальный размер допустимой памяти"

    Код (LotusScript):
    i := 0;
    CountWorkDays := @BusinessDays(DateBegin; DateBegin; 1:7; Holidays);

    @While(CountWorkDays < 14; i := i + 1);

    @Prompt([Ok]; ""; "Количество дней всего - " + @Text(i) + @Char(13) +
    "Дата окончания - " + @Text(@Adjust(DateBegin; 0; 0; i; 0; 0; 0)));
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    крутой цикл :)
    может не стоит юзать собаки... да еще с циклами (при таком подходе)
     
  3. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Что-то мне подсказывает, что этот цикл будет "вечным" (если проггеру не заменить батарейки :) (с))
     
  4. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Тогда непонятно чем @BusinessDays заменить на скрипте.

    Добавлено:
    С батарейками беда. Он, видимо и есть вечный, только не пойму почему.
    Нет, это понятно. Делаю так:
    i := 0;
    CountWorkDays := @BusinessDays(DateBegin; @Adjust(DateBegin ; 0 ; 0 ; i ; 0 ; 0 ; 0); 1:7; Holidays);

    @While(CountWorkDays < 14 ; i := i + 1);

    Тот же результат.
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Этот цикл проверяет, что CountWorkDays < 14. Если да, то увеличивает i на 1. Поскольку CountWorkDays в цикле не изменяется, то "эта музыка будет вечной" (с). Поместите в тело цикла оператор изменения CountWorkDays типа так:
    Код (Text):
    @While(CountWorkDays < 14; @Set("CountWorkDays"; i := i + 1; @BusinessDays(TU_DateDocIn; @Adjust(TU_DateDocIn; 0; 0; i; 0; 0; 0); 1:7; Holidays)));
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  7. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Спасибо, вот в таком варианте работает как надо.

    i := 0;
    CountWorkDays := 0;
    @While(CountWorkDays < 14; i := i+ 1 ; CountWorkDays := @BusinessDays(DateBegin; @Adjust(DateBegin; 0 ; 0 ; i ; 0 ; 0; 0); 1:7; Holidays));

    DateEnd := (@Adjust(DateBegin; 0 ; 0 ; i ; 0 ; 0 ; 0))

    Вычисляется конечная дата от назначенного срока (у меня это 14 рабочих дней) с учетом выходных и праздников, если Holidays = список праздничных дат. (это если кому понадобится)

    lmike, классная ссылочка, спасибо.
     
Загрузка...
Похожие Темы - Вычисление срока
  1. Tipo4ek
    Ответов:
    1
    Просмотров:
    1.050
  2. Extrem
    Ответов:
    4
    Просмотров:
    1.271
  3. ballack
    Ответов:
    0
    Просмотров:
    1.106
  4. Gelergo
    Ответов:
    1
    Просмотров:
    1.758
  5. VladSh
    Ответов:
    27
    Просмотров:
    8.755

Поделиться этой страницей