Code: |
// Изменение даты проводок дт ... - кт 97 аналитика 000101-000112
// для отпускных будущих периодов // запускается из книги хозопераций в учете заработной платы // перед закрытием зарплаты текущего месяца // В типовой операции в проводке #2 - 97 последние 2 цифры аналитики 97сч // формируются по формуле "0001"+substr(P21,6,2) Function main() PRIVATE aSet,aSetKey,i,a,b,b1,b2,b3,c,m1,v,an,g,g1,g2,g3,nz,nz1,nz2 altd() dbpush() aSet:=SaveSet() aSetKey:=SaveSetKey() NETUSE("_main",LoadPath()+"main.DBF",,.F.) _main->(ORDSETFOCUS("TAG_TASK")) NETUSE("_setting",LoadPath()+"salary\setting.DBF",,.F.) // nz - массив для хранения номеров отфильтрованных записей nz:=afill(array(1000),0) nz1:=afill(array(9)) sayandwait("AU1") // расчетный месяц (b), следующий месяц (b1), следующий за следующим (b2) b:=substr(_setting->s_period,6,2) g:=substr(_setting->s_period,1,4) sayandwait("AU2") if ((val(b)+1)>9.and.(val(b)+1)<13) b1:=str(val(b)+1,2,0) else if (val(b)+1)=13 b1:="01" else b1:="0"+str(val(b)+1,1,0) endif endif if ((val(b1)+1)>9.and.(val(b1)+1)<13) b2:=str(val(b1)+1,2,0) else if (val(b1)+1)=13 b2:="01" else b2:="0"+str(val(b1)+1,1,0) endif endif if ((val(b2)+1)>9.and.(val(b2)+1)<13) b3:=str(val(b2)+1,2,0) else if (val(b2)+1)=13 b3:="01" else b3:="0"+str(val(b2)+1,1,0) endif endif // установка года для месяцев b1,b2,b3 - g1,g2 и g3 соответственно if b1>b g1:=g else g1:=str(val(g)+1,4,0) endif if b2>b1 g2:=g1 else g2:=str(val(g1)+1,4,0) endif if b3>b2 g3:=g2 else g3:=str(val(g2)+1,4,0) endif // начальные значения переменных для итогового sayandwait nz1[1]:=dtos(EOM(ctod("01/"+b1+"/"+g1))) nz1[2]:=0 nz1[3]:=0 nz1[4]:=dtos(EOM(ctod("01/"+b2+"/"+g2))) nz1[5]:=0 nz1[6]:=0 nz1[7]:=dtos(EOM(ctod("01/"+b3+"/"+g3))) nz1[8]:=0 nz1[9]:=0 sayandwait("AU") if select("_main")<>0 // установка скопа на 1 месяц по проводкам зарплаты _main->(setscope()) _main->(SETSCOPE(UPPER("TAG_TASK"),"14"+dtos(ctod("01"+"/"+b+"/"+g)),"14"+dtos(EOM(ctod("01/"+b+"/"+g))))) _main->(DBgoTOP()) // заполнение массива номерами отфильтрованных записей i:=1 while (_main->(!EOF())) nz[i]:=recno() i:=i+1 _main->(dbskip()) enddo // цикл по отфильтрованным записям i:=1 while (nz[i]<>0) _main->(dbgoto(nz[i])) if ((substr(_main->kt_code,4,1)=="1").and.((_main->kt_schet=="97 ").or.(_main->kt_schet=="971 "))) // sayandwait("12345"+str(_main->summa)) if (substr(_main->kt_code,5,2)==b1) nz1[2]:=nz1[2]+1 nz1[3]:=nz1[3]+_main->summa _main->(RECLOCK()) _main->( FIELDPUT(FIELDPOS("DATAOPER"),EOM(ctod("01/"+b1+"/"+g1))) ) _main->(dbunlock()) endif if (substr(_main->kt_code,5,2)==b2) nz1[5]:=nz1[5]+1 nz1[6]:=nz1[6]+_main->summa _main->(RECLOCK()) _main->( FIELDPUT(FIELDPOS("DATAOPER"),EOM(ctod("01/"+b2+"/"+g2))) ) _main->(dbunlock()) endif if (substr(_main->kt_code,5,2)==b3) nz1[8]:=nz1[8]+1 nz1[9]:=nz1[9]+_main->summa _main->(RECLOCK()) _main->( FIELDPUT(FIELDPOS("DATAOPER"),EOM(ctod("01/"+b3+"/"+g3))) ) _main->(dbunlock()) endif endif i:=i+1 _main->(DBCOMMIT()) enddo sayandwait("Перенесено на "+nz1[1]+" "+str(nz1[2],3,0)+" записей на сумму "+str(nz1[3],9,2)+" "+; "Перенесено на "+nz1[4]+" "+str(nz1[5],3,0)+" записей на сумму "+str(nz1[6],9,2)+" "+; "Перенесено на "+nz1[7]+" "+str(nz1[8],3,0)+" записей на сумму "+str(nz1[9],9,2)) endif _main->(DBCOMMIT()) _main->(dbCloseArea()) RestSetKey(aSetKey) RestSet(aSet) dbpop() return nil |
ewgen wrote: |
Спасибо!
Я переустановил сегодня БЭСТ (локально) - ушли многие проблемы! Теперь нормально проходит отладчиком всю программу! Еще вопросы. 1. в одном проекте создавать свои процедуры с разными именами и пользоваться в разных модулях? Как я понимаю присутствие процедуры main() уже необязательно? |
ewgen wrote: |
2. При открытии *.dbf Visual Fox 7 в БЭСТ5 спрашивает Что отвечать? Можно открывать рабочие файлы или только смотреть на копии? |
ewgen wrote: |
3. В БЭСТ4 было сочетание клавиш ALT+Ё - отображалась информация о дате создания и пользователе. Какое сочетание клавиш используется в БЭСТ5? |
Quote: |
- создать БД с помощью например утилиты FoxBro и работать с таблицей в распределенном режиме.
|
ewgen wrote: | ||
1. Как создать? В foxBro есть только "Открыть базу данных", "Закрыть базу данных". |
output generated using printer-friendly topic mod. All times are GMT + 4 Hours