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

  • Автор темы Автор темы motogarri
  • Дата начала Дата начала
M

motogarri

Пытаюсь вычислить количество дней включая выходные и праздники. Цикл не срабатывает, дает ошибку "Превышен максимальный размер допустимой памяти"

Код:
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)));
 
крутой цикл :)
может не стоит юзать собаки... да еще с циклами (при таком подходе)
 
Тогда непонятно чем @BusinessDays заменить на скрипте.

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

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

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

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, классная ссылочка, спасибо.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab