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

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



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

PostPosted: 29 May 2007 16:56    Post subject: Reply with quote

Notwar wrote:
Везде расставил... Всё равно тоже самое=( У меня из Маина запускается Инит1, а из Инит1 хоткеями запускются Инит 2 и Инит3... Чувствую, что чего-то не хватает... а вот чего...

И ещё...

У меня в конце Инит2 и Инит3 Стоит Rerurn Init1() - иначе почеу-то перестаёт работать cCurProc... соответственно, чтобы покинуть плагин надо нажать Esc 2 раза. С этим как?


Повеселили
Завтра вечерком в тексте Вашей программы повожусь и отпишу.
Раньше не получится к сожалению
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 May 2007 17:05    Post subject: Reply with quote

На самом деле уже посмотрел.
Вы в конце функций, что привязали к горячим клавишам.
Должны писать RETURN x,
где x - это цифра отвечающая условию обновления экрана
Про нее можно прочитать в QBROWSE
2 - обновить весь экран
3 - текущую строку

А если оставить INIT1() - То получается повторный запуск
функции из нее же самой и будете нажимать ESC столько раз,
сколько горячими клавишами воспользуетесь
Или просто пока ресурсы не компа не закончатся
Back to top
View user's profile Send private message Send e-mail
Notwar



Joined: 21 Sep 2005
Posts: 101
Location: Notwar Dan
Occupation: mlst(it)
Interests: Moscow

PostPosted: 29 May 2007 17:23    Post subject: Reply with quote

Замечательно =) А с aHead -ами что делать??? Завтра? Это меня как раз больше волнует, чем Esc

PS кстати, после ALT+E (InitGr), основной Инит у меня нормально работает (без Return x), а после ALT+S (GrSort) - в основном ините слитает cCurProc. А про Return X - я знал. Не срабатывает почему-то

-----------------------

я даже догадываюсь почему... чё-то с фильтром связано... а как его заставить вернуть "всё как было..."
Back to top
View user's profile Send private message
Notwar



Joined: 21 Sep 2005
Posts: 101
Location: Notwar Dan
Occupation: mlst(it)
Interests: Moscow

PostPosted: 29 May 2007 17:43    Post subject: Reply with quote

Всё, с этим разобрался! Надо было в конце функции ALT+S (GrSort) вотунуть
Quote:
MLabel->(OrdSetFocus("MLabel"))
MKart->(OrdSetFocus("MKart_P2"))
MKart->(OrdSetFocus("MKart_P10"))

mkart->(dbSetFilter({||!EMPTY(MKART->NNUM).AND.EMPTY(MKART->PARTIA)},"!EMPTY(MKART->NNUM).AND.EMPTY(MKART->PARTIA)"))

mkart->(F_SETRELATION("MLABEL","UPPER(GRUP+NNUM)"))
mkart->(F_SETRELATION("_MGrup","UPPER(GRUP+NNUM)"))


Теперь остался только вопрос про aHead -ы... пока... Завтра, возможно появятся ещё вопросы
Back to top
View user's profile Send private message
nordk



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

PostPosted: 30 May 2007 11:24    Post subject: Reply with quote

Думаю тут тоже речь не о том ведете.
У Вас просто горячие клавиши остались определены
Init1() и вызывают его функции.
Т.е. в начале каждой функции надо бы запомнить назначения
горячих клавиш и очистть их
Code:
aSetKey:=SaveSetKey()

а в конце функции восстановить обратно
Code:
RestSetKey(aSetKey)

Думаю проблема в этом.
RETURN x работает всегда 100%
Если что-то не так - надо через отладчик делать точки останова и смотреть. Думаю причину найдете легко и она будет в друго
Back to top
View user's profile Send private message Send e-mail
Notwar



Joined: 21 Sep 2005
Posts: 101
Location: Notwar Dan
Occupation: mlst(it)
Interests: Moscow

PostPosted: 30 May 2007 17:23    Post subject: Reply with quote

ТОЧНО!!! Как я сам не догадался??? Спасиба огромное=)
Back to top
View user's profile Send private message
Notwar



Joined: 21 Sep 2005
Posts: 101
Location: Notwar Dan
Occupation: mlst(it)
Interests: Moscow

PostPosted: 04 Jun 2007 12:02    Post subject: Немножко не в тему, зато про индексы... Reply with quote

У меня вот такой вопрос...
В Partner.dbf есть такие поля Telefon и Telefon1...
У меня задача: Сделать плагин с поиском этих самых телефонных номеров... А номера телефонные... В справочнике партнёров у нас по этому поводу, мягко говоря непорядок (во многом этому посопутствовал БЭСТ)... Дело в том, что... кароче, пробелы!!! Как с ними быть??? Можно-ли сделать индексный файл с Alltrim??? ОЧЕНЬ НУЖНО!!!
Back to top
View user's profile Send private message
maestro_



Joined: 29 Jan 2003
Posts: 95



PostPosted: 04 Jun 2007 12:22    Post subject: Re: Немножко не в тему, зато про индексы... Reply with quote

Notwar wrote:
Можно-ли сделать индексный файл с Alltrim??? ОЧЕНЬ НУЖНО!!!

попробуйте написать маленькую обработку и убрать из полей Ваши злополучные пробелы. а затем уже строить нужный Вам индекс.
Back to top
View user's profile Send private message
nordk



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

PostPosted: 04 Jun 2007 12:47    Post subject: Reply with quote

Да мы же обсуждали что можно сделать.
Просто сделайте индекс UPPER(x+alltrim() ). где
x - любой удобный Вам символ и все собствен
Back to top
View user's profile Send private message Send e-mail
Notwar



Joined: 21 Sep 2005
Posts: 101
Location: Notwar Dan
Occupation: mlst(it)
Interests: Moscow

PostPosted: 04 Jun 2007 13:01    Post subject: Reply with quote

ммм... Ну, это конечно выход, НО!!! Дело в том, что в БЭСТЕ в справочнике партнёров->телефоны ввод телефонов предлагается, как: "(______)-___-__-__", где"_" - пробел (ну сами прекрасно знаете) Вот. А Телефоны у нас вбиваются (уж не знаю почему) просто произвольно. Например, некоторые вбивают (ххх___)-ххх-хх-хх, или (_хххх_)-_хх-хх-хх, или (__ххх_)-ххх-хх-хх... Вариантов куча! Каждый привык по своему (потому что заранее не предупридили - наша ошибка), соответственно каждый привык искать своего пратнёра по номеру телефона как он его забил... В общем вот так... По этому и хотелось бы сделать индекс с Alltrim()! НЕ ВЫДЕТ???
Back to top
View user's profile Send private message
Notwar



Joined: 21 Sep 2005
Posts: 101
Location: Notwar Dan
Occupation: mlst(it)
Interests: Moscow

PostPosted: 04 Jun 2007 13:28    Post subject: Reply with quote

Точно! Блин, извините, пожалуйста
Back to top
View user's profile Send private message
Notwar



Joined: 21 Sep 2005
Posts: 101
Location: Notwar Dan
Occupation: mlst(it)
Interests: Moscow

PostPosted: 04 Jun 2007 14:02    Post subject: Reply with quote

хм... вот
Quote:
"UPPER('1'+ALLTRIM(Telefon1))"
нэтаботаит=(
То есть ругаться не ругается, индекс делает. То есть ругается, но когда я дбсик запускаю. Отладчик говорит "Файл не индексирован", а ключи индекса выглядят все как один: "1+13проблов"
Back to top
View user's profile Send private message
nordk



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

PostPosted: 04 Jun 2007 19:23    Post subject: Reply with quote

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



Joined: 21 Sep 2005
Posts: 101
Location: Notwar Dan
Occupation: mlst(it)
Interests: Moscow

PostPosted: 05 Jun 2007 10:18    Post subject: Reply with quote

Могу, конечно... просто...у меня плагин находится в стадии зачатия... Только намёк на идею К тому же... В общем - судите сами:
Quote:
FUNCTION Main()

Private aSet,aSetKey,Cod_P,inn,t1,t2

aSet:=SAVESET()
aSetKey:=SAVESETKEY()

NetUse("_partner",loadpath()+"partner.dbf",,.F.)
_partner->(dbcreateindex("C:\temp\Tel1","UPPER('1'+ALLTRIM(Telefon1))"))
_partner->(dbcreateindex("C:\temp\Tel2","UPPER('1'+ALLTRIM(Telefon2))"))
fcName:=alltrim(str(seconds(),6,0))

aDbf := {}
AADD(aDbf, { "Code_part", "C", 6, 0 })
AADD(aDbf, { "inn_kpp", "C", 30, 0 })
AADD(aDbf, { "tel1", "C",13, 0 })
AADD(aDbf, { "tel2", "C",13, 0 })
DBCREATE("c:\temp\b"+fcName, aDbf)
NetUse("TmpPart","c:\temp\b"+fcName,.F.)

Cod_P:=DIALOG("Код партнёра:","999999",' ')
inn:=DIALOG("ИНН / КПП:","9999999999 / 999999999",' / ')
t1:=DIALOG("Телефон1:","9999999999",' ')
t2:=DIALOG("Телефон2:","9999999999",' ')

TmpPart->(dbappend())
TmpPart->Code_part:=Cod_P
TmpPart->inn_kpp:=inn
TmpPart->tel1:=t1
TmpPart->tel2:=t2
TmpPart->(f_dbunlock())

if (TmpPart->Code_part)!=' '
_Partner->(OrdSetFocus("Code"))
_partner->(dbseek(TmpPart->Code_part))
if _Partner->(found())=.T.
ShadowBox("", 4, 6, 10, 69, 'N/BG')
SAYANDWAit(_Partner->Code+_partner->Shortname+_partner->Code_PR+_Partner->telefon1+_Partner->telefon2,5,14)
endif
else
if (TmpPart->inn_kpp)!=' '
Sayandwait("ИНН")
//SearchINN()
else
if (TmpPart->Tel1)!=' '
_Partner->(OrdSetFocus("Tel1"))
_Partner->(dbgotop())
_partner->(dbseek('1'+Alltrim(TmpPart->tel1)))
if _Partner->(found())=.T.
ShadowBox("", 4, 6, 10, 69, 'N/BG')
SAYANDWAit(_Partner->Code+_partner->Shortname+_partner->Code_PR+_Partner->telefon1+_Partner->telefon2,5,14)
endif
//Sayandwait("ТЕЛ1")
//SearchT1()
else
if (TmpPart->Tel2)!=' '
_Partner->(OrdSetFocus("Tel2"))
_Partner->(dbgotop())
_partner->(dbseek('1'+Alltrim(TmpPart->tel2)))
if _Partner->(found())=.T.
ShadowBox("", 4, 6, 10, 69, 'N/BG')
SAYANDWAit(_Partner->Code+_partner->Shortname+_partner->Code_PR+_Partner->telefon1+_Partner->telefon2,5,14)
endif
//Sayandwait("ТЕЛ2")
//SearchT2()
endif
endif
endif
endif

//Init()

RESTSETKEY(aSetKey)
RESTSET(aSet)

RETURN NIL

Function Init()


//DispBox(2,0,4,79,(CHR(201)+CHR(205)+CHR(187)+CHR(186)+CHR(188)+CHR(205)+CHR(200)+CHR(186)+' ' ),"W+/B") // первый прямоугольник
//SAYSCREEN("Намиенование организации: ")
DispBox(10,10,15,35,(CHR(201)+CHR(205)+CHR(187)+CHR(186)+CHR(188)+CHR(205)+CHR(200)+CHR(186)+' ' ),"W+/B") // первый прямоугольник

nTop:=5
nBot:=17
//nLeft:=1
cColHead:={"Введите ..."}

aBlockCols:={{{||FIELD->Code_Part},6},;
{{||FIELD->inn_kpp},8},;
{{||FIELD->tel1},15},;
{{||FIELD->Tel2},48}}

cCurProc:={||2}


aHeads:={;
{"Код партнёра:","Code_Part"},;
{"ИНН / КПП...:","inn_kpp"},;
{"Телефон1....:","Tel1"},;
{"Телефон2....:","Tel2"}}


//aPic:={,,"999999","9999999999 / 999999999",,"9999999","9999999"}


//TmpPart->(InitList(nTop,nBot,cColHead,aBlockCols,cCurProc,aHeads,aRef,aPic,aWhen,,,bDel,,aSortSeek,,,,,,,,,,,,,,,,aHotKey))

TmpPart->(InitList(nTop,nBot,cColHead,aBlockCols,cCurProc,aHeads))


Return NIL
Back to top
View user's profile Send private message
nordk



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

PostPosted: 05 Jun 2007 11:38    Post subject: Reply with quote

A теперь в каком месте у вас не так - в какой строке ?
И еще сразу DBSEEK() возвращает .T. если нашел и .F. если нет
Так что не надо после него FOUND() - надо сразу IF DBSEEK()
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, 3, 4, 5  Next
Page 4 of 5

 
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