Операторы и наиболее употребительные функции, используемые в формулах расчёта значений полей, определяемых пользователем

Поля таблицы работ с именами Число1…Число20, Дата1…Дата10,

Начало1…Начало10,Окончание1…Окончание10,Длитель-ность1…Длительность10,Затраты1…Затраты10,Код структуры1…Код структуры10,Текст1…Текст30,Флаг1…Флаг20предназначены для данных,

произвольно вводимых менеджером проекта для его собственных целей либо автоматически вычисляемых согласно заданным формулам или правилам. Ана-логичные поля предусмотрены и в таблице ресурсов. Они часто используются для автоматизации аналитических расчётов на основе плана и данных монито-ринга. В данном приложении приведён список операторов и наиболее употре-бительных функций, используемых в формулах. При назначении формул следу-ет заботиться о том, чтобы тип данных результата соответствовал типу данных выбранного поля.

Операторы

+,–,*,/,^ — арифметические операторы: сложение, вычита-  
\ ние, умножение, деление, возведение в степень.  
— целочисленное деление (остаток отбрасывается).  
МОД — остаток от деления. Например, значение выраже-  
& ния 8 MOD 3 равно 2.    
— конкатенация (объединение) двух текстовых  
=,<>,<,>,>=,<= строк.    
— операторы сравнения (результат имеет значения  
И,ИЛИ,НЕ «истина» или «ложь»)1.    
— логические операции "и", "или", "не".  
Математические функции    
sqr(x),log(x),exp(x) — x, ln(x), ex.    
sin(x),cos(x),tan(x),atn(x) — sin(x), cos(x), tg(x), arctg(x).    
abs(x) — |x|.    
fix(x) — округление отбрасыванием дробной части.  
sgn(x) — 1, если x > 0; 0, если x = 0; –1, если x < 0.  

Операторы и наиболее употребительные функции, используемые в формулах расчёта значений полей, определяемых пользователем - student2.ru

1 Эти операторы могут использоваться для сравнения не только чисел и дат, но и текстовых строк (в лексикографическом порядке). Регистр символов учитывается.


rnd() — равномерно распределённая случайная величина  
  в интервале [0; 1). Значение обновляется при ка-  
  ждом пересчёте модели проекта.  
Логические функции  
isnumeric(x) — «истина», если аргумент числовой; иначе «ложь».  
isdate(x) — «истина», если аргумент — дата; иначе «ложь»1.  
isnull(x) — «истина», если аргументу не присвоено никакое  
iif(x,y,z) значение; иначе «ложь».  
— y, если x имеет значение «истина»; в противном  
  случае — z.  
choose(i,x1,x2…) — возвращает значение xi.  
switch(c1,x1,c2,x2…) — аргументы ci содержат логические условия, xi  
  некоторые значения. Результат — первое слева  

значение xi, для которого соответствующее ci принимает значение «истина».

Функции даты и времени

К календарным значениям можно прибавлять и вычитать вещественные числа, трактуемые в этом случае как число дней (возможно, дробное) согласно астрономическому времени.

В столбцах для представления календарных значений могут отображать-  
ся только даты в интервале с 1 января 1984 г. по 31 декабря 2049 г.    
now() — текущие дата и время по системным часам ком-  
  пьютера (обновляются при каждом пересчёте  
date() модели проекта).      
— текущая дата по системным часам компьютера.  
cdate(x) — преобразование текстового значения к типу «да-  
  та».        
dateserial(y,mn,d),timeserial(h,m,s) — формирование календарного значе-  
  ния из номеров года y, месяца mn и числа d; но-  
  меров часа h, минуты m и секунды s. Например,  
  чтобы сформировать календарное значение, со-  
  ответствующее моменту h часов 15 минут  
  30 секунд 17 июня y-го г., можно записать  
  dateserial(y,6,17) + time-  
  serial(h,15,30).      

1 В справочной системе программы Microsoft Project эта функция отнесена к числу функций даты и времени.


dateadd(u,n,d) — дата, отстоящая от даты d (возможно её задание в  
  форме текста) на n периодов, специфицирован-  
  ных аргументом u. Последняя может принимать  
  одно из следующих значений: "h", "d", "m",  
  "y", что означает соответственно часы, дни, ме-  
  сяцы и годы. Время астрономическое. Например,  
  результат вычисления функции  
  dateadd("m",1,"23.05.2006") — 23 ию-  
datediff(u,d1,d2) ня 2006 г.      
— число полных и неполных периодов заданной  
  продолжительности между двумя указанными  
  датами d1 и d2 (возможно их задание в форме  
  текста по образцу "23.05.2006 23:59"). Пе-  
  риод задаётся аргументом u, который может  
  принимать значения "h", "d", "w", "m" (часы,  
  дни, недели, месяцы). Если d1 > d2, результат от-  
datepart(u,d,f) рицательный.      
— в зависимости от значения аргумента u выдаёт:  
  "h" — час, "d" — календарное число, "m" —  
  номер месяца, "w" — номер дня недели, "y" —  
  номер дня в году, соответствующие дате d (дата  
  может задаваться как календарным значением,  
  так и текстом по образцу "23.05.2006  
  23:59"). Аргумент f используется только при  
  u ="w":если он равен0,первым днём недели  
  считается понедельник, если 1 — воскресенье.  
  В других случаях он игнорируется и может быть  
  опущен.      

Замечание . Результат вычислений функций datediff и date-partявляется числом,а не календарным значением(датой).Попытка ото-бражения числового значения в календарных столбцах, определяемых пользователем, вызовет сообщение об ошибке.

year(d) — номер года, соответствующий дате d.

month(d) — равносильно datepart("m",d).

weekday(d,f) — равносильно datepart("w",d,f).

day(d) — равносильно datepart("d",d).

hour(d) — равносильно datepart("h",d).

minute(d)

projdateadd(d,n,c)

projdatesub(d,n,c)projdurvalue(n)

projdatediff(d1,d2,c)

projdurconv(n,f)

— минута, соответствующая дате d (например, для даты "17.06.2006 9:15" результат равен

15).

— дата, отстоящая от даты d на период рабочего

времени n согласно календарю c. Дата задаётся календарным или текстовым (например,

"17.06.2006 9:15") значением. Кален-

дарь — именем. Период может задаваться чис-лом (обозначающим число минут) или текстовой строкой со спецификацией периода: например,

"3m" — 3 минуты; "4h" — 4 часа; "5d" —
рабочих дней; "6w" — 6 рабочих недель;
"7mon" — 7 рабочих месяцев; "8ed" —
24-часовых периодов рабочего времени;
           

"9ew" — 9 168-часовых периодов рабочего вре-мени; "10emon" — 10 720-часовых периодов рабочего времени. Продолжительность рабочего дня, рабочей недели и рабочего месяца устанав-ливается параметрами текущего проекта (Сервис

→ Параметры… → Календарь). Если агру-

мент c опущен, используются календари, назна-ченные текущей строке таблицы работ или ре-сурсов, а при отсутствии таковых — календарь проекта.

— функция аналогична projdateadd, но вычисляется дата, предшествующая d на период n.

— вычисляет продолжительность периода n, задан-

ного так же, как в функции projdateadd, — в минутах.

— количество минут рабочего времени между дата-ми d1 и d2 согласно календарю c. Если аргумент c опущен, используются календари, назначенные текущей строке таблицы работ или ресурсов, а при отсутствии таковых — календарь проекта.

— вычисляет продолжительность периода n, задан-

ного так же, как в функции projdateadd, в еди-ницы, заданные флагом f. Флаг должен содер-жать целое значение. Нечётные значения от 3 до 11 обозначают единицы рабочего времени —


  минуты, часы, дни, недели, месяцы. Чётные от  
  4 до 12 — соответствующие единицы астроно-  
  мического времени.    
Текстовые функции    
format(x,f) — отображение числа или даты x по формату f.  
Например: format(cdate("15.1.04 10:30"), "hh ч. mm  
♦ функция  

мин. d mmmm yyyy г.") выдаст текст "10 ч. 30 мин. 15 января 2006 г.";

♦ функция format(cdate("5.1.06 10:30"), "dd mmm yyг. в hh:mm") выдаст текст "05 янв 04г. в 10:30";

♦ функция format(3.14159, "#.###") выдаст текст "3.142";

♦ функция format(0.14159, "#.###") выдаст текст ".142";

♦ функция format(3.14, "000.000") выдаст текст "003.140".

Наши рекомендации