Страница 1 из 3
					
				Количество рабочих часов в смесяц
				Добавлено: 28 ноя 2006, 16:13
				 savov
				Будьте добры, подскажите, кто знает быстрое решение. Надо в випе получить значение "число рабочих часов в месяц". Ну есть , например, январь. По закону определили выходные и праздники. Надо все рабочие часы (с учетом сокращения на 1 час перед праздниками, без праздников и выходных) получить. Как быстрее всего?
Еще раз : получить число рабочих часов в любом месяце (с учетом праздничных и выходных) в випе.
			 
			
					
				
				Добавлено: 29 ноя 2006, 10:29
				 edward_K
				1.В клас.видов оплат на алгоритме - F3 - F4 - F3
там есть функция wt_ghbd и расписаны ее параметры
2.чтобы ее использовать нужно перед вызовом сделать
 InitWorkingTable ;
.....
 LoadWorkingTable(vvv.LSTAB.CLSCHET, vvv.LSTAB.MESN, vvv.LSTAB.YEARN);
после
DoneWorkingTable ;
вообще функций хватает - но вот документация есть только на упомянутую - в силу объявления ее для общего использования.
			 
			
					
				
				Добавлено: 29 ноя 2006, 10:33
				 Riman
				Присоединяюсь, плюс хотелось бы плановые и фактические дни по работникам вытащить. Очень надо!!!!
			 
			
					
				
				Добавлено: 29 ноя 2006, 10:35
				 edward_K
				а вобще , если нужны плановые часы, берете таблу klndr и считаете в ней часики. С табелем могет быть чуть сложнее - но тоже решаемо.
Но если хотите тождествености с печатью табеля, то лучше использовать упомянутое. К слову при печати самого табеля сие использовать незя - поскоку результат будет не предсказуем. Как вариант можно в форме накопить данные по людям во времянку и потом в отдельном цикле подтянуть недостающие данные.
			 
			
					
				
				Добавлено: 29 ноя 2006, 14:21
				 Riman
				а функцией типа WT_GetDaysBwDates(?, ?, Date(01,01,2006), Date(01,06,2006)) возможно в lnk-форме воспользоваться? у меня не получается...   

 
			
					
				
				Добавлено: 29 ноя 2006, 14:57
				 edward_K
				можно на тех же условиях.
1. форма никак не связана с табелем
2. InitWorkingTable ; 
..... 
LoadWorkingTable(vvv.LSTAB.CLSCHET, vvv.LSTAB.MESN, vvv.LSTAB.YEARN); 
присутствует
3. параметры вы правильно написали.
вообще зайдите в редактирование табеля и попробуйте ее вычислить по ctrl+F4 - там условие 2 уже выполнено.
WT_GetDaysBwDays(2,1,1,31) - факт отработанно
WT_GetDaysBwDays(2,0,1,31) - план
также и
WT_GetDaysBwDates(2,0,date(1,3,2006),date(31,5,2006))
			 
			
					
				
				Добавлено: 30 ноя 2006, 08:39
				 Riman
				WT_GetDaysBwDates в табеле работает.
в отчете (Заработная плата - Отчеты - Дополнительная информация - Справка о начислениях за год) нет. Как узнать, эта форма связана с табелем или нет?
			 
			
					
				
				Добавлено: 30 ноя 2006, 10:16
				 savov
				Насчет klndr - не получится, там рабочие и  выходные согласно графика!!! т.е. у нас работают не совсем (совсем не) по календарю, в выходные могут работать и наоборот. А мне надо именно по законному календарю, т.е. пятидневка , суб и вс - выходные + Гос. праздники с учетом сокращения на час перед праздником.
А упомянутые ф-ии работают в випе? НЕ в присоединенной, не в Арде, а именно в випе.
			 
			
					
				
				Добавлено: 30 ноя 2006, 10:35
				 edward_K
				везде они работают, сию конкретную не пробовал правда 
- extfun.res тока не забудьте подцепить.
по поводу табеля, если есть данные о отработанном времени, длительности отпусков или неявок, то наиболее вероятно что сии функции там задействованы. Для начала попробуйте на простой АРД по челу вытащить данные. Не поможет - откройте фейс лицевые счета и снова попробуйте. Если да, то добавте еще  IntInit, а на выходе exitproc.
			 
			
					
				
				Добавлено: 30 ноя 2006, 10:57
				 edward_K
				а кто мешает вам посчитать дни и часы по 11 режиму в klndr, который должен точно соответсвовать законому?
			 
			
					
				
				Добавлено: 30 ноя 2006, 11:11
				 savov
				Скорее всего придется считать именно по 11 режиму, т.к. ничего другое не подходит, ибо только 11 соответствует законному !
Я просто думал, что может есть что-то более изящное...
			 
			
					
				
				Добавлено: 30 ноя 2006, 11:25
				 edward_K
				есть еще 
function CalcDaysBetweenDates (aDateFrom,
                               aDateTo : date;
                               aMinusNonWorkDays : Boolean
                              ) : integer;
Параметры
aDateFrom : date - нижняя граница диапазона дат.
aDateTo : date - верхняя граница диапазона дат.
aMinusNonWorkDays : boolean - признак, исключающий из диапазона дат нерабочие дни (true - исключать, false - не исключать).
- насчет праздников тока не уверен, выкинет или нет.
			 
			
					
				
				Добавлено: 01 дек 2006, 13:50
				 Riman
				Пробовал так:
Код: Выделить всё
.begin
   KolWorkDaysPlan := 0;
   KolWorkDaysFact := 0;
   dkWorking := word(2);
   //количество дней, которые сотрудник должен отработать(план)
   IntInit;
   InitWorkingTable;
   KolWorkDaysPlan:=  WT_GetDaysBwDates(2, 0, Date(1,1,2006), Date(1,6,2006));
   //количество дней, которые сотрудник отработал фактически
   KolWorkDaysFact:=  WT_GetDaysBwDates(2, 1, Date(1,1,2006), Date(1,6,2006));
   DoneWorkingTable;
   exitproc;
   message('Plan='+String(KolWorkDaysPlan)+';  Fact='+String(KolWorkDaysFact));
end.
Выдает нули.... что делать? ОЧЕНЬ нужны эти дни! 
ПОМОГИТЕ!
 
			
					
				
				Добавлено: 01 дек 2006, 14:04
				 Riman
				Понял... Пропустил LoadWorkingTable(vvv.LSTAB.CLSCHET, vvv.LSTAB.MESN, vvv.LSTAB.YEARN);
где
vvv.LSTAB.CLSCHET = LSCHET.nrec,
а что означают vvv.LSTAB.MESN и vvv.LSTAB.YEARN ??
			 
			
					
				
				Добавлено: 01 дек 2006, 14:05
				 edward_K
				а кто будет делать
LoadWorkingTable(vvv.LSTAB.CLSCHET, vvv.LSTAB.MESN, vvv.LSTAB.YEARN); ?