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

Урок 203. Пример для начинающих.
Goto page Previous  1, 2
 
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4
View previous topic :: View next topic  
Author Message
c_systems



Joined: 26 Jun 2003
Posts: 20
Location: Наталья
Occupation: Комплексные системы
Interests: Челябинск

PostPosted: 02 Jul 2007 14:27    Post subject: Reply with quote

function Ini_cFile(lArr)

append blank
if !empty(aWorkVars).and.aWorkVars<>NIL
cEdit->tovar:=aWorkVars[1][1]
cEdit->ed:=aWorkVars[1][2]
cEdit->cena:=aWorkVars[1][3]
cEdit->KolOld:=aWorkVars[1][4]

endif

return lArr

Свои два поля добавим в mdocm, а как к ним здесь обратить
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 02 Jul 2007 20:38    Post subject: Reply with quote

Продолжаем пытку апельсинами...
c_systems wrote:
Текст основной пр-мы:
function main()
LOCAL cFile,cHd,aSet,aSetKey,resalias
LOCAL aStroki:={}
aSet:=SAVESET()
aSetKey:=SAVESETKEY()
resalias:=alias()

Последняя строчка лишняя - алиас запоминается в массиве aSet

Code:
  cFile := GlobalTmpPath+"cEdit.dbf"
  altd()
  if file(cFile)
     erase(cFile)
  endif

Вижу стараетесь но давайте я Вам предложу так называемую "рыбу"
Только содержимое подправьте по структуре файла и индекса

Code:
cInsDBF := TempFile(m->GlobalTmpPath,"DBF")
cInsIdx:=TempFile(m->GlobalTmpPath,"СDX")
aInsStru := {{'CONTROL','C',1,0},{'ED','C',5,0},{'ShortName','C',12,0},{'PERCENT','N',6,2},{'LCODE','C',13,0},{'PRICE','N',19,4},{'CODE','C',13,0},{'KOL','N',19,4},{'NAME','C',35,0},{'SECTION','N',3,0},{'TYPETOV','C',1,0},{'Sold','N',19,4},{"code_g","c",5,0},{"name_g","c",34,0}}

DBCREATE(cInsDBF,aInsStru)
NetUseExc('TMC',cInsDBF)
aKey:={{'TMC1','UPPER(CODE+SCLAD+VID+TYPE)',{||UPPER(CODE+SCLAD+VID+TYPE)}},                          ;
        {'TMC1_2','UPPER(GRUP+NNUM+SCLAD)',{||UPPER(GRUP+NNUM+SCLAD)}}                                  ;
        }
   FOR i:=1 TO LEN(aKey)
      TMC->( ORDCREATE(cInsIdx,aKey[i,1],aKey[i,2],aKey[i,3])  )
   NEXT

 



Quote:
Code:
  cHd:=dbcreate(cFile,{{'tovar','C',29,0},;
                  {'ed','C',5,0},;
                  {'Kol' ,'N',19,4},;
                  {'cena' ,'N',19,8},;
                  {'kol0','N',19,4},;
                  {'ves','N',19,4},;
                  {'tara','N',19,4}})
Нет структуру надо брать всю массива один в один.

Quote:
Code:
    dbusearea(.t.,,cFile,'cEdit',.t.)
Лучше NetUse образец написан выше при создании временного файла

Quote:
Code:
  select cEdit
//  if cHd<>-1
     aStroki:=array(18)


Это лишнее

Quote:
Ini_cFile(aStroki)

Давайте все-таки массив уберем пока - запутаемся с ним.
Позже вернемся к нему.

/
Quote:
/ else
// Alert('Невозможно создать временный файл!')
// endif

cEdit->(dbclosearea())

RESTSETKEY(aSetKey)
RESTSET(aSet)
select(resalias)

Последняя строчка не нужна как я выше написал

Quote:
return NIL
Тут вопрос - как проверить что dbf нормально создался? cHd всегда NIL...

Не надо ничего проверять - создастся нормально благодаря
предложенной заготовке

Смотрите спрашивайте, по готовности пойдем дальш
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 02 Jul 2007 20:43    Post subject: Reply with quote

c_systems wrote:
function Ini_cFile(lArr)

append blank
if !empty(aWorkVars).and.aWorkVars<>NIL
cEdit->tovar:=aWorkVars[1][1]
cEdit->ed:=aWorkVars[1][2]
cEdit->cena:=aWorkVars[1][3]
cEdit->KolOld:=aWorkVars[1][4]

endif

return lArr

Свои два поля добавим в mdocm, а как к ним здесь обратиться?


Давайте пока к своим двум полям обращение временно опустим.
Будем рассматривать пока только новый документ.
А функцию я бы стал писать так:

Code:
IF LEN(aWorVars)>0
   FOR i:=1 to LEN(aWorkVars)
       TMC->( ADDREC() )
       . . .
   NEXT
   TMC->( F_DBUNLOCK() )
   TMC->( DBCOMMIT() )
ENDIF
Back to top
View user's profile Send private message Send e-mail
c_systems



Joined: 26 Jun 2003
Posts: 20
Location: Наталья
Occupation: Комплексные системы
Interests: Челябинск

PostPosted: 17 Aug 2007 13:25    Post subject: Reply with quote

Возвращаемся к нашим баранам !
Клиенты отложили свои требования бессрочно, да и в отпуске хорошо было
Но раз уж взялась за дело надо хотя б для собственного развития до конца дойти. В общем на днях продолжим!
Back to top
View user's profile Send private message Send e-mail
c_systems



Joined: 26 Jun 2003
Posts: 20
Location: Наталья
Occupation: Комплексные системы
Interests: Челябинск

PostPosted: 21 Aug 2007 17:38    Post subject: Reply with quote

1.Непонятно что значит "брать структуру массива один в один"

В предыдущей теме было:
//1- группа+NNUM+partia+Sclad
//2 - единица изм
//3 - кол-во
//4 - цена в осн.валюте
//далее (не обязательно):
//5 - ранее выбранное кол-во (0)
//6 - ранее выбранная сумма (0)
//7 - не задействовано
//8 - цена в валюте
//9 - код валюты
//10 - курс валюты
//11 - nOCena1 из MLabel
//12 - nOCena2 из MLabel
//13 - nOCena3 из MLabel
//14 - nOCena4 из MLabel
//15 - nVCena1 из MLabel
//16 - nVCena2 из MLabel
//17 - nVCena3 из MLabel
//18 - nVCena4 из MLabel

и я пишу первые 4 поля (раз с 5-го необязательно указано)+ свои 2 поля
aInsStru := {{'TOVAR','C',29,0},{'ED','C',5,0},;
{'KOL','N',19,4},;
{'BRUTTO','N',19,4},{'TARA','N',19,4}}

а индекс aKey:={{'TMC1','UPPER(TOVAR)',{||UPPER(TOVAR)}};
}
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 22 Aug 2007 00:13    Post subject: Reply with quote

Не обязательный параметр не значит, что он не нужен никогда
А если у Вас уже было что-то набрано и Вы продолжаете/изменяете документ?
Давайте использовать если уж не хотите все элементы массива, то по десятый точн
Back to top
View user's profile Send private message Send e-mail
c_systems



Joined: 26 Jun 2003
Posts: 20
Location: Наталья
Occupation: Комплексные системы
Interests: Челябинск

PostPosted: 22 Aug 2007 14:52    Post subject: Reply with quote

7-е поле ("не задействовано") как определять и нужно ли оно вообще?
10-е тоже - на предприятии нет валютного учета
Так правильно:
aInsStru := {{'TOVAR','C',29,0},{'ED','C',5,0},;
{'KOL','N',19,4},{'CENA0','N',19,8},;
{'KOLOLD','N',19,4},{'SUMOLD','N',19,3},;
{'CENAVAL','N',19,4},{'CODEVAL','C',3,0},;
{'BRUTTO','N',19,4},{'TARA','N',19,4}}

А функция:
function Ini_cFile(lArr)

if len(aWorkVars)>0
for i:=1 to len(aWorkVars)
TMC->(addrec())
TMC->tovar:=aWorkVars[1][1]
TMC->ed:=aWorkVars[1][2]
TMC->kol:=aWorkVars[1][3]
TMC->cena0:=aWorkVars[1][4]
TMC->kolold:=aWorkVars[1][5]
TMC->sumold:=aWorkVars[1][6]
TMC->cenaval:=aWorkVars[1][7]
TMC->codeval:=aWorkVars[1][8]
next
TMC->(F_DBUNLOCK())
TMC->(DBCOMMIT())
endif

Какая дальнейшая логика и схема рабо
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 22 Aug 2007 18:16    Post subject: Reply with quote

Code:
TMC->codeval:=aWorkVars[1][8]

Так неправильно, потому как первый элемент наверно должен быть i
Теперь поскольку тема затянулась приведите весь текст, что получился, чтобы понимать что будем дальше дела
Back to top
View user's profile Send private message Send e-mail
c_systems



Joined: 26 Jun 2003
Posts: 20
Location: Наталья
Occupation: Комплексные системы
Interests: Челябинск

PostPosted: 23 Aug 2007 13:34    Post subject: Reply with quote

function main()
LOCAL cFile,cHd,aSet,aSetKey,resalias
LOCAL aStroki:={}
aSet:=SAVESET()
aSetKey:=SAVESETKEY()

cInsDBF := TempFile(m->GlobalTmpPath,"DBF")
cInsIdx := TempFile(m->GlobalTmpPath,"CDX")
aInsStru := {{'TOVAR','C',29,0},{'ED','C',5,0},;
{'KOL','N',19,4},{'CENA0','N',19,8},;
{'KOLOLD','N',19,4},{'SUMOLD','N',19,3},;
{'CENAVAL','N',19,4},{'CODEVAL','C',3,0},;
{'BRUTTO','N',19,4},{'TARA','N',19,4}}
altd()
cHd:=dbcreate(cInsDBF,aInsStru)
// dbusearea(.t.,,cFile,'cEdit',.t.)
NetUseExc('TMC',cInsDBF)
aKey:={{'TMC1','UPPER(TOVAR)',{||UPPER(TOVAR)}};
}
FOR i:=1 TO LEN(aKey)
TMC->( ORDCREATE(cInsIdx,aKey[i,1],aKey[i,2],aKey[i,3]) )
NEXT


select TMC
aStroki:=array(1
Ini_cFile(aStroki)

TMC->(dbclosearea())

RESTSETKEY(aSetKey)
RESTSET(aSet)

return NIL

*************************************************************
function Ini_cFile(lArr)

if len(aWorkVars)>0
for i:=1 to len(aWorkVars)
TMC->(addrec())
TMC->tovar:=aWorkVars[1][1]
TMC->ed:=aWorkVars[1][2]
TMC->kol:=aWorkVars[1][3]
TMC->cena0:=aWorkVars[1][4]
TMC->kolold:=aWorkVars[1][5]
TMC->sumold:=aWorkVars[1][6]
TMC->cenaval:=aWorkVars[1][7]
TMC->codeval:=aWorkVars[1][8]
next
TMC->(F_DBUNLOCK())
TMC->(DBCOMMIT())
endif


return lArr
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 23 Aug 2007 14:59    Post subject: Reply with quote

Теперь нам надо нарисовать интерфейс ввода строк в документ.
По какому принципу хотите делать : по картотеке товаров или создание строк по F4 ?
Back to top
View user's profile Send private message Send e-mail
c_systems



Joined: 26 Jun 2003
Posts: 20
Location: Наталья
Occupation: Комплексные системы
Interests: Челябинск

PostPosted: 23 Aug 2007 16:11    Post subject: Reply with quote

построчно по F4
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 27 Aug 2007 10:37    Post subject: Reply with quote

Тогда Вам нужно написать свое окно посредством InitList.
В нем разместите нужную информацию для удобного ввода.
Сам InitList организуйте на основе временного файла, который мы
создали.
Если нужны подробности по данной задаче - задавайте вопросы
Back to top
View user's profile Send private message Send e-mail
c_systems



Joined: 26 Jun 2003
Posts: 20
Location: Наталья
Occupation: Комплексные системы
Interests: Челябинск

PostPosted: 29 Aug 2007 18:10    Post subject: Reply with quote

При стандартном вводе по F4 кроме ввода строк есть еще окна где уже введенные строки показываются и окно проводок. Их тоже нужно самим создавать или только нижнее окн
Back to top
View user's profile Send private message Send e-mail
nordk



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

PostPosted: 29 Aug 2007 21:26    Post subject: Reply with quote

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

 
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