/*
UserTabelProcessData(ID_Combine, xmlNode, dateStart, dateEnd) 
   // эта функция для первоначальных проверок, если не нужно обрабатывать письмо то 
   // выполнить следующий код:
   //                           var err="Текст сообщения"; throw err;
{
   // ID_Combine - внутренний код исполняемой должности (к этому моменту она уже выбрана в TmpCurCombine
   // xmlNode - xml пришедший из КП (класс XMLDOMNode)
   // dateStart, dateEnd - даты начала и конца табеля (класс KDate)
   

}

UserTabelUpdateData(ID_Combine, xmlNode, dateStart, dateEnd) 
{  // в этой функции необходимо записать данные в ЛС
   // бросать здесь исключения нельзя ни в коем случае!!!

   // ID_Combine - внутренний код исполняемой должности (к этому моменту она уже выбрана в TmpCurCombine
   // xmlNode - xml пришедший из КП (класс XMLDOMNode)
   // dateStart, dateEnd - даты начала и конца табеля (класс KDate)




}

// Следующие функции аналогичны предыдущим двум, только здесь надо разнести РВ
// Если раскомментированы предыдущие 2 функции - то эти вызываться не будут
UserRVProcessData(ID_Combine, xmlNode, dateStart, dateEnd) 
   // эта функция для первоначальных проверок, если не нужно обрабатывать письмо то 
   // выполнить следующий код:
   //                           var err="Текст сообщения"; throw err;
   // если РВ в xml отличается от РВ в ЛС - взвести соответствующий флаг из Changes
   // в результате функции
{
   // ID_Combine - внутренний код исполняемой должности (к этому моменту она уже выбрана в TmpCurCombine
   // xmlNode - xml пришедший из КП (класс XMLDOMNode)
   // dateStart, dateEnd - даты начала и конца табеля (класс KDate)

   const int vidscnt=8;

   // флаги, комбинацию которых надо вернуть, если значение РВ в ЛС отличается
   // от разносимого
   int Changes[vidscnt];
   Changes[0]=0x0004; // bEvening
   Changes[1]=0x0008; // bNight
   Changes[2]=0x0010; // bOvertime
   Changes[3]=0x0020; // bOvertime
   Changes[4]=0x0040; // bSr
   Changes[5]=0x0080; // bDop
   Changes[6]=0x0100; // bHoliday
   Changes[7]=0x0200; // bIdle

   //xml-тэги, из которых брать РВ     
   string xmlTags[vidscnt];
   xmlTags[0]="ВечернееВремя";
   xmlTags[1]="НочноеВремя";
   xmlTags[2]="Сверхурочные1";
   xmlTags[3]="Сверхурочные2";
   xmlTags[4]="ВремяОплачиваемоеПоСреднему";
   xmlTags[5]="ДополнительныйВыход";
   xmlTags[6]="ДополнительныйВыходВПраздничныеДни";
   xmlTags[7]="НецелосменныеПростои";

   //настройка, в которой указан вид, куда нужно разнести РВ из соотв. xml-тэга 
   //0 - не разносить
   string cnfs[vidscnt];
   cnfs[0]="EvVid";
   cnfs[1]="NightVid";
   cnfs[2]="OvertVid";
   cnfs[3]="OvertVid";
   cnfs[4]="SrVid";
   cnfs[5]="DopVid";
   cnfs[6]="HolidVid";
   cnfs[7]="IdleVid";
  
   int result=0;
   return result;
}

UserRVUpdateData(ID_Combine, xmlNode, dateStart, dateEnd) 
{  // в этой функции необходимо записать данные в ЛС
   // бросать здесь исключения нельзя ни в коем случае!!!

   // ID_Combine - внутренний код исполняемой должности (к этому моменту она уже выбрана в TmpCurCombine
   // xmlNode - xml пришедший из КП (класс XMLDOMNode)
   // dateStart, dateEnd - даты начала и конца табеля (класс KDate)

   const int vidscnt=8;

   //xml-тэги, из которых брать РВ     
   string xmlTags[vidscnt];
   xmlTags[0]="ВечернееВремя";
   xmlTags[1]="НочноеВремя";
   xmlTags[2]="Сверхурочные1";
   xmlTags[3]="Сверхурочные2";
   xmlTags[4]="ВремяОплачиваемоеПоСреднему";
   xmlTags[5]="ДополнительныйВыход";
   xmlTags[6]="ДополнительныйВыходВПраздничныеДни";
   xmlTags[7]="НецелосменныеПростои";

   //настройка, в которой указан вид, куда нужно разнести РВ из соотв. xml-тэга 
   //0 - не разносить
   string cnfs[vidscnt];
   cnfs[0]="EvVid";
   cnfs[1]="NightVid";
   cnfs[2]="OvertVid";
   cnfs[3]="OvertVid2";
   cnfs[4]="SrVid";
   cnfs[5]="DopVid";
   cnfs[6]="HolidVid";
   cnfs[7]="IdleVid";


}

*/






/*

int UserIdleScript_SkipFirstStart=0;

UserIdleScript() 
{
	// функция которая запускается при бездействии пользователя через промежуток 
	// времени указанный в переменной UserScriptRunInterval (в usconst.s)
   // если первый запуск (сразу после старта программы) нужно пропустить, то можно 
   // выше присвоить UserIdleScript_SkipFirstStart=1;

   if (UserIdleScript_SkipFirstStart)
   {
   	UserIdleScript_SkipFirstStart=0; return 0;
   }

   var CMsg = 0;    // Процент выполненной работы

   int bTime = false;   // false-показывать процент,
                        // true-показывать оставшееся время

   CMsg=CreateObject("ProgressBar");
   CMsg.Initial(0,100,1);
   CMsg.SetShowTime(static_cast_to_int(bTime));

   for(int i=0;i<2000;i++)
   {
      if ( CMsg.Msg_Proc(AnsiToOem(" Пример фоновой задачи. "),100.*i/2000)==ESC )
         return 0;

      int n;
      for(int u=0;u<100000;u++)
         n=u*u*i/123+i-u*n;
   }
}
*/

