Главная
Новый форум
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Как переделать программу под БЭСТ5?

 
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4
View previous topic :: View next topic  
Author Message
ewgen



Joined: 23 Nov 2002
Posts: 339
Location: Евгений
Occupation: (инженер программист)
Interests: Надым

PostPosted: 15 Aug 2007 07:18    Post subject: Как переделать программу под БЭСТ5? Reply with quote

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
Back to top
View user's profile Send private message Send e-mail
Дениска



Joined: 26 Feb 2002
Posts: 649



PostPosted: 15 Aug 2007 14:02    Post subject: Reply with quote

А что не работает?
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 15 Aug 2007 14:26    Post subject: Reply with quote

Ну да переложите исходный текст в инетерейс программирования Б5, откомпилируйте. Подключите в Б5.
Описание действий (как это делать) идет в поставке с Б5
Все должно работать
Back to top
View user's profile Send private message Send e-mail
ewgen



Joined: 23 Nov 2002
Posts: 339
Location: Евгений
Occupation: (инженер программист)
Interests: Надым

PostPosted: 15 Aug 2007 15:19    Post subject: Reply with quote

Спасибо!
Я переустановил сегодня БЭСТ (локально) - ушли многие проблемы!
Теперь нормально проходит отладчиком всю программу!

Еще вопросы.
1. Под каждую программку создавать свой проект или достаточно в одном проекте создавать свои процедуры с разными именами и пользоваться в разных модулях?
Как я понимаю присутствие процедуры main() уже необязательно?

2. При открытии *.dbf Visual Fox 7 в БЭСТ5 спрашивает


Что отвечать? Можно открывать рабочие файлы или только смотреть на копии?

3. В БЭСТ4 было сочетание клавиш ALT+Ё - отображалась информация о дате создания и пользователе. Какое сочетание клавиш используется в БЭСТ5?

Спасибо.
Back to top
View user's profile Send private message Send e-mail
Титов Александр



Joined: 26 Jul 2002
Posts: 975
Location: Титов Александр Александрович
Occupation: Компания БЭСТ
Interests: Москва

PostPosted: 15 Aug 2007 19:27    Post subject: Reply with quote

Добрый день!

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?

В планах есть журнал регистрации изменений. По срокам пока затрудняю
_________________
С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо
Back to top
View user's profile Send private message Visit poster's website
ewgen



Joined: 23 Nov 2002
Posts: 339
Location: Евгений
Occupation: (инженер программист)
Interests: Надым

PostPosted: 16 Aug 2007 15:12    Post subject: Reply with quote

Quote:
- создать БД с помощью например утилиты FoxBro и работать с таблицей в распределенном режиме.


1. Как создать? В foxBro есть только "Открыть базу данных", "Закрыть базу данных".

2. Для написания своих источников данных для отчетов НЕОБХОДИМ FoxPro? То есть нужно еще покупать и FoxPro 7 или старш
Back to top
View user's profile Send private message Send e-mail
Титов Александр



Joined: 26 Jul 2002
Posts: 975
Location: Титов Александр Александрович
Occupation: Компания БЭСТ
Interests: Москва

PostPosted: 16 Aug 2007 16:15    Post subject: Reply with quote

ewgen wrote:
Quote:
- создать БД с помощью например утилиты FoxBro и работать с таблицей в распределенном режиме.


1. Как создать? В foxBro есть только "Открыть базу данных", "Закрыть базу данных".

1. Открыть best5.dbc
2. Перейти в пункт "Утилиты" в верхнем меню
3. Выполнить первый пункт меню "Утилиты", который называется "Создание БД БЭСТ-5"
_________________
С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4 All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © phpBB Group

Rambler
Rambler's Top100 Рейтинг@Mail.ru