кол-во рабочих дней по подразделению.

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

кол-во рабочих дней по подразделению.

Сообщение Alexander »

Как узнать кол-во рабочих дней по подразделению.? нашел только по табелю...! И заодно общее кол-во дней в месяце.
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Дайте определение "рабочих дней по подразделению", пожалуйста.
Виталий
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

одно подразделение работает 5 дней в неделю, второе-6, третье - круглосуточно без выходных(производственный цикл). Отсюда нужно считаеть и ко-во рабочих дней... Можно ли?
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Прошу прощения за задержку с ответами.
Каким образом в системе указывается... режим работы подразделения?
Виталий
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

да вот я и спрашиваю: есть ли? :-)
хотя уже не актуально по-другому сделал, но все же? :-)
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Нет, штатного средства нету. Разве что внешние атрибуты прикрутить... Но это неудобный способ.
Виталий
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

А как же поле "График" в настройке подразделения? Ведь в нем и задается график работы подразделения.
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Это может сработать! Для работы с графиком понадобится нижеследующее:

GrafFunc.vih:

Код: Выделить всё

#ifndef _GRAFFUNC_INCLUDED_
#define _GRAFFUNC_INCLUDED_

#ifdef ComponentVersion
#component "Z_Calendar"
#end

#doc
  Объектный интерфейс для доступа к общесистемным графикам.
#end
objinterface IGrafikFunctions;
  #doc
    Возвращает количество рабочих часов между датами по данному
    графику.</brief>

    <p>В параметре PrRec передается nrec графика, в D1 и D2 - начальная и
    конечная даты диапазона.</p>
  #end
  function RabChasBetweenDates(prrec: comp; d1: date; d2: date): double;

  #doc
    Возвращает количество часов по графику, приходящихся на заданную
    дату.</brief>

    <p>В параметре PrRec передается nrec графика, в PrDate - дата.</p>
  #end
  function RabChasOnDate(prrec: comp; prdate: date): double;

  #doc
    Возвращает количество рабочих минут между датами по данному
    графику.</brief>

    <<p>В параметре PrRec передается nrec графика, в D1 и D2 - начальная и
    конечная даты диапазона.</p>

  #end
  function RabMinBetweenDates(prrec: comp; d1: date; d2: date): double;

  #doc
    Возвращает количество минут по графику, приходящихся на заданную
    дату.</brief>

    <p>В параметре PrRec передается nrec графика, в PrDate - дата.</p>
  #end
  function RabMinOnDate(prrec: comp; prdate: date): double;

  #doc
    Возвращает количество рабочих смен между датами по данному графику.</brief>

    <p>В параметре PrRec передается nrec графика, в D1 и D2 - начальная и
    конечная даты диапазона.</p>

  #end
  function RabSmenBetweenDates(prrec: comp; d1: date; d2: date): longint;

  #doc
    Возвращает количество рабочих смен по графику, приходящихся на заданную
    дату.</brief>

    <p>В параметре PrRec передается nrec графика, в PrDate - дата.</p>
  #end
  function RabSmenOnDate(prrec: comp; prdate: date): longint;

  #doc
    Возвращает количество рабочих дней между датами по данному
    графику.</brief>

    <p>В параметре PrRec передается nrec графика, в D1 и D2 - начальная и
    конечная даты диапазона.</p>
  #end
  function RabDayBetweenDates(prrec: comp; d1: date; d2: date): longint;

  #doc
    Возвращает 1, если на заданную дату приходится рабочий день, или 0 в
    противном случае.</brief>

    <p>В параметре PrRec передается nrec графика, в PrDate - дата.</p>
  #end
  function RabDayOnDate(prrec: comp; prdate: date): longint;

  #doc
    Рассчитывает количество рабочих, вечерних, ночных часов и часов разрывов
    между сменами по графику за данный период. Возвращает true в случае
    удачного завершения, иначе - false.</brief>

    <p>В параметре PrRec передается nrec графика, в Dt1 и Dt2 - начальные и
    конечные даты и время диапазона. Количество рабочих часов возвращается в
    res_Day, вечерние - в res_Evning, ночные - в res_Night, часы разрывов между
    сменами - в res_raz. Параметр res_din зарезервирован для дальнейшего
    использования.</p>
  #end
  function AllChasBetweenDateTime(
    prrec: comp;
    dt1: datetime; dt2: datetime;
    var res_Day, res_Evning, res_Night, res_raz, res_din: double): boolean;
end;

vipinterface GrafikFunctions implements IGrafikFunctions
#ifdef ATL51
  licensed(Free)
#end
;
#end

Виталий
varvara
Постоянный обитатель
Сообщения: 130
Зарегистрирован: 21 дек 2005, 19:12

Сообщение varvara »

Не могу посчитать количество дней по графику. Подключила приведенный выше .vih.
Функция RabDayBetweenDates возвращает 0.
kol_dn:=graf.RabDayBetweenDates(nrec_,dat1,dat2)
nrec_ - нрек таблицы klrejim.
В чем может быть причина?
Ответить