Joined: 23 Nov 2002 Posts: 339 Location: Евгений Occupation: (инженер программист) Interests: Надым
Posted: 15 Aug 2007 07:18 Post subject: Как переделать программу под БЭСТ5?
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
// 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 (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))
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 15 Aug 2007 14:26 Post subject:
Ну да переложите исходный текст в инетерейс программирования Б5, откомпилируйте. Подключите в Б5.
Описание действий (как это делать) идет в поставке с Б5
Все должно работать
Joined: 23 Nov 2002 Posts: 339 Location: Евгений Occupation: (инженер программист) Interests: Надым
Posted: 15 Aug 2007 15:19 Post subject:
Спасибо!
Я переустановил сегодня БЭСТ (локально) - ушли многие проблемы!
Теперь нормально проходит отладчиком всю программу!
Еще вопросы.
1. Под каждую программку создавать свой проект или достаточно в одном проекте создавать свои процедуры с разными именами и пользоваться в разных модулях?
Как я понимаю присутствие процедуры main() уже необязательно?
2. При открытии *.dbf Visual Fox 7 в БЭСТ5 спрашивает
Что отвечать? Можно открывать рабочие файлы или только смотреть на копии?
3. В БЭСТ4 было сочетание клавиш ALT+Ё - отображалась информация о дате создания и пользователе. Какое сочетание клавиш используется в БЭСТ5?
Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
Posted: 15 Aug 2007 19:27 Post subject:
Добрый день!
ewgen wrote:
Спасибо!
Я переустановил сегодня БЭСТ (локально) - ушли многие проблемы!
Теперь нормально проходит отладчиком всю программу!
Еще вопросы.
1. в одном проекте создавать свои процедуры с разными именами и пользоваться в разных модулях?
Как я понимаю присутствие процедуры main() уже необязательно?
Да, да.
ewgen wrote:
2. При открытии *.dbf Visual Fox 7 в БЭСТ5 спрашивает
Что отвечать? Можно открывать рабочие файлы или только смотреть на копии?
Видимо, вы копировали таблицы или изменяли структуру не через FoxPro и эти изменения не отразились в контейнере БД Best5.dbc.
Можно поступить следующим образом:
- открыть таблицу в экслюзивном режиме и удалить ссылку на контейнер, поработать с таблицей, но потом сделать индексацию с восстановлением через БЭСТ-5 или через утилиту FoxBro;
- создать БД с помощью например утилиты FoxBro и работать с таблицей в распределенном режиме.
Лучше идти по второму пути. В отличии от Б4 тут надор понимать, что БД (контейнер) best5.dbc должен всегда соотвествовать содержимому БД (составу и структуре таблиц, индексов и пр.)
ewgen wrote:
3. В БЭСТ4 было сочетание клавиш ALT+Ё - отображалась информация о дате создания и пользователе. Какое сочетание клавиш используется в БЭСТ5?
В планах есть журнал регистрации изменений. По срокам пока затрудняю _________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо
Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
Posted: 16 Aug 2007 16:15 Post subject:
ewgen wrote:
Quote:
- создать БД с помощью например утилиты FoxBro и работать с таблицей в распределенном режиме.
1. Как создать? В foxBro есть только "Открыть базу данных", "Закрыть базу данных".
1. Открыть best5.dbc
2. Перейти в пункт "Утилиты" в верхнем меню
3. Выполнить первый пункт меню "Утилиты", который называется "Создание БД БЭСТ-5" _________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum