Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 22 May 2007 15:03 Post subject:
В том же описании функции посмотрите на массив aSortSeek
Откройте описание его структуры и внимательно познакомьтесь с ним, особенно с элементами начиная с 10-го и попробуйте написать свой вариант сортировк
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 22 May 2007 16:46 Post subject:
Не - так не получится...
У Вас mlabel это не основная таблица, по которой Инитлист сделан,
а дочерняя. Для сортировки по дочерней служат элементы после 10-го.
Насчет сортировки не знаю сам не пробовал, а вот поиск точно работает... Попробуйте немного самостоятельно плз.
Напишите как поняли а чуть позже поразбира
вообще не догоняю... У меня путаница какая-то с "дочерней"/"родительской"...
InitList по Mkart. Дочерняя база - mlabel. В ней есть после "Gr_cen" в которое вбиваются группы. Ralation установлен по Grup+Nnum. Подскажите пожалуйста... что я должен указвать в параметрах 3,4,8,10,11,12...
3: то что мне надо искать в Mlabel??? {'Mlabel->gr_cen'} (или просто 'gr_cen') ???
4: Соответственно aIn[1], которым и будет передаваться то, что в поле gr_cen. Так?
8: имя тэга чего??? Mkart, или MLabel???
10: вот здесь, вроде, понятно... - MLabel... Так?
11: Тэг поиска в родительской - то есть в MKatr??? А зачем??? Мне же в Mlabel искать надо!
12: А здесь нада что??? Если у меня тэг "MKart_P2", то мне нало указывать aIn[1]+aIn[2] (Grup+NNum), но во первых aIn[1] у меня уже есть (gr_cen), а Grup и NNum у меня же не определены!? или как???
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 23 May 2007 14:36 Post subject:
Отвлекитесь на секунду от Инитлиста и попробуйте осознать механизм.
Вам нужно найти запись в родительской базе по результатам поиска в дочерней, а значит Вам нужно:
1.Осуществить поиск в дочерней базе
2.Считать в найденной записи значения полей для поиска в родительской
3.По параметрам из п.2 найти запись в родительской и высветить ее курсором.
Т.е. Вы находитесь в MKART и на экране у вас реестр из MKART и в результате Вам надо найти строку в MKART у которой в связанной таблице Mlabel есть интересующее Вас значение.
Для этого Вам надо найти сначала в mlabel нужную строку а для этого нужен тег для поиска и собственно ввод значений для этого тега
А потом уже поскольку связка у Вас из MKART в MLABEL а Вам нужна наоборот в данный момент - Вам надо по данным строки в MLABEL найденной найти строку в MKART для этого и служит 12 элемент - для поиска в MKART поскольку реляция работает только сверху вниз.
А для того чтобы найти чего-то опять нужно понимать по какому тегу и какие брать значения для этого Тега.
И на секунду при таком механизме попробуйте представить сортировку и Вы поймете почему она медленная
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 24 May 2007 12:56 Post subject:
Скорее всего временный индекс, но и он и временная база означает что всякий раз при входе в прайс-лист пользователь вынужден будет ждать как минимум 2-3 минуты пока откроется экран (пока построится это дело)
На практике это очень сильно достает пользователей
ммм... а... если написать отдельный инитлист для Mlabel??? Пользователь хочет такую сортировку. Можно-ли вытащить по hotkey инит лист поверх существующего???
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 24 May 2007 20:56 Post subject:
Да можно то можно - можно весь инит-лист по mlabel сделать. Потеряете тока стандартные возможности позиций включенных в прайс-лист...Придется свои делать
У меня трабл=( Я вызываю горячими клавишами Function Init2() и Init3(), а у меня aHeads и aSortSeek от от Init1(). Переменные во всех 3-х Init() -ах - Private
Везде расставил... Всё равно тоже самое=( У меня из Маина запускается Инит1, а из Инит1 хоткеями запускются Инит 2 и Инит3... Чувствую, что чего-то не хватает... а вот чего...
И ещё...
У меня в конце Инит2 и Инит3 Стоит Rerurn Init1() - иначе почеу-то перестаёт работать cCurProc... соответственно, чтобы покинуть плагин надо нажать Esc 2 раза. С этим как?
FUNCTION INIT1()
Local nTop,nBot,cColHead,aBlockCols,cCurproc,aHeads,aRef,aPic,aWhen,bDel,aSortSeek,aHotKey,GRCN
//Local cColHead2,aBlockCols2
//Local cColHead1,aBlockCols1,aHeads1,aSortSeek1
aHeads:={;
{"Ценовая группа...........:","MLabel->gr_cen"},;
{"--------------------------------",""},;
{"Цена до 2-х тн(руб)......:","MLabel->vCena1"},;
{"Цена до 2-х тн(вал)......:","MLabel->oCena1"},;
{"--------------------------------",""},;
{"Цена c 2-х до 5-и тн(руб):","MLabel->vCena2"},;
{"Цена c 2-х до 5-и тн(вал):","MLabel->oCena2"},;
{"--------------------------------",""},;
{"Цена c 5-и тн(руб).......:","MLabel->vCena3"},;
{"Цена c 5-и тн(вал).......:","MLabel->oCena3"},;
{"--------------------------------",""},;
{"Специальная цена(руб)....:","MLabel->vCena4"},;
{"Специальная цена(вал)....:","MLabel->oCena4"}}
aSortSeek:={{'- номерам ТМЦ внутри групп ',{'Код группы:','Ном. номер: '},{'Grup','NNum'},'UPPER(aIn[1]+aIn[2])',,,{"grupss"},"Mkart_P10"},;
{'- наименованиям внутри групп',{'Код группы.:','Наименование:'},{'grup','Space(10)'},'UPPER(aIn[1]+aIn[2])',,,{"grupss"},"MKart_P2"}}
//{'- кодам ценовых групп ',{'Код ценовой группы:'},{'gr_cen'},'aIn[1]',,,{"C_gr"},"C_GR_Sort",aGetBlock,"Mlabel","MKart_P2",,.T.}}
aHotKey:={{},{},{;
{'Alt+A:Применить к цен. группе',K_ALT_A,{||Apply()},1},;
{'Alt+S:Сортировка по цен.гр.',K_ALT_S,{||GrSort()},1},;
{'Alt+Е:Редактор спр.Цен.Гр',K_ALT_E,{||InitGr()},1}} }
@ 2,38 SAY "╦" COLOR "w+/b"
@ 3,38 SAY "║Цен.группа:" COLOR "w+/b"
@ 3,73 SAY "№" COLOR "w+/b"
@ 4,38 SAY "╩" COLOR "w+/b"
@ 18,0 SAY "╠═════════════Параметры══════════════════╦════Цены на сегоднешнее число════════╣" COLOR "w+/b"
@ 19,2 SAY REPLICATE("Марка.........:",1) COLOR "w/b"
@ 19,41 SAY REPLICATE("║",1) COLOR "w+/b"
@ 19,42 SAY REPLICATE("До 2-х тн......:",1) COLOR "w/b"
@ 20,2 SAY REPLICATE("Сорт..........:",1) COLOR "w/b"
@ 20,41 SAY REPLICATE("║",1) COLOR "w+/b"
@ 20,42 SAY REPLICATE("С 2-х до 5-и тн:",1) COLOR "w/b"
@ 21,2 SAY REPLICATE("Размер........:",1) COLOR "w/b"
@ 21,41 SAY REPLICATE("║",1) COLOR "w+/b"
@ 21,42 SAY REPLICATE("С 5-и тн.......:",1) COLOR "w/b"
@ 22,2 SAY REPLICATE("Завод изг-тель: ",1) COLOR "w/b"
@ 22,41 SAY REPLICATE("║",1) COLOR "w+/b"
@ 22,42 SAY REPLICATE("Спец. цена.....:",1) COLOR "w/b"
@ 3,8 SAY LEFT(_MGrup->Name,30) COLOR "BG+/b"
@ 3,51 SAY LEFT(CenGrups->Name_Gr,1 COLOR "RB+/b"
@ 3,75 SAY GRCN COLOR "GR+/b"
@ 19,18 SAY LEFT(Mlabel->Marka,23) COLOR "w/b"
@ 20,18 SAY LEFT(MLabel->Sort,23) COLOR "w/b"
@ 21,18 SAY LEFT(Mlabel->Razmer,23) COLOR "w/b"
@ 22,18 SAY LEFT(Mlabel->Profil,23) COLOR "w/b"
@ 19,58 SAY RIGHT(STR(Mlabel->oCena1),15) PICTURE "@E 9999999999"
@ 20,58 SAY RIGHT(STR(MLabel->oCena2),15) PICTURE "@E 9999999999"
@ 21,58 SAY RIGHT(STR(Mlabel->oCena3),15) PICTURE "@E 9999999999"
@ 22,58 SAY RIGHT(STR(Mlabel->oCena4),15) PICTURE "@E 9999999999"
Return 2
Function Apply()
Private sel,oc1,oc2,oc3,oc4,vc1,vc2,vc3,vc4
DBPush()
Mlabel->(reclock())
sel:=Mlabel->Gr_cen
oc1:=Mlabel->oCena1
vc1:=Mlabel->vCena1
oc2:=Mlabel->oCena2
vc2:=Mlabel->vCena2
oc3:=Mlabel->oCena3
vc3:=Mlabel->vCena3
oc4:=Mlabel->oCena4
vc4:=Mlabel->vCena4
if (NoOrYes({"Пименить цену ко всей ценовой группе №" +(Mlabel->Gr_cen)+ "???"})=.t.)
endif
mlabel->(dbgotop())
Do While !MLabel->(EoF())
if MLabel->Gr_Cen=sel
Mlabel->(RecLock())
Mlabel->Ocena1:=oc1
Mlabel->Ocena2:=oc2
Mlabel->Ocena3:=oc3
Mlabel->Ocena4:=oc4
Mlabel->vCena1:=vc1
Mlabel->vCena2:=vc2
Mlabel->vCena3:=vc3
Mlabel->vCena4:=vc4
mlabel->(f_dbunlock())
endif
MLabel->(dbskip(1))
EndDo
mlabel->(f_dbunlock())
dbpop()
Return
Function InitGr()
Local cColHead1,aBlockCols1,aHeads1 //,aSortSeek1
DispBox(5,22,15,62,(CHR(201)+CHR(205)+CHR(187)+CHR(186)+CHR(188)+CHR(205)+CHR(200)+CHR(186)+' ' ),"W+/B")
CenGrups->(OrdSetFocus("CenGrups"))
//DBSelectArea("CenGrups")
cColHead1:="Цен.Группа Наименование "
aBlockCols1:={ {{||FIELD->Gr_Cen},3},{{||FIELD->Name_Gr},12} }
aHeads1:={ {"Ценовая группа:","gr_cen"},{"Наименование..:","Name_Gr"} }
//aSortSeek1:={{'- наименованиям внутри групп',{'Код группы.:','Наименование:'},{'Gr_Cen','Space(1'},'UPPER(aIn[1]+aIn[2])',,,{"c_gr"},"CenGrups"}}
cColHead2:="Цен.Гр. Группа Ном.№ Наименование "
aBlockCols2:={{{||FIELD->Gr_Cen},2},{{||FIELD->grup},10},{{||RIGHT(FIELD->nnum,5)},17},{{||LEFT(FIELD->Name,25)},24}}
MLabel->(InitList(7,16,cColHead2,aBlockCols2,,{{"Ценовая группа:","gr_cen"}},{"c_gr"},,,,,{||.T.}))
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