Страница 1 из 1

Нормальное описание использования PICK

Добавлено: 29 апр 2005, 15:38
Johny
Не знаю где бы найти это описание. В документашках не нашел,
По форуму - везде урывками.
Как юзать?
Как туда данные попадают, какие, как их тащить оттуда потом?

Добавлено: 29 апр 2005, 16:20
Max_Fin
Pick это временная таблица, которая обычно применяется в интерфейсах для множественного выбора данных.
по внутренней договоренности, опять таки может быть и не всегда
wList - признак по которому можно определить выбранные данные
cRec - сслыка на выбранную запись
поля PickKol и PickNum являются дополнительными
PickNum используется обычно для сортировки выбранных данных
PickKol скорее всего будет содержать количество выбранных элементов.

Существует можество используемых кодов для wList в исходниках Галактики, причем некоторые коды пересекаются и имеют разную природу.

Вот что декларируется минскими программистами:

Код: Выделить всё

Коды wList, используемые в интерфейсах группового выбора

!!! Добавляйте константы для Pick.wList в pick.inc
!!! и используйте их вместо числовых значений
!!! (это все следует туда перенести)

 КОД       Таблица         Файл             Интерфейс
 ---       -----------     ------------     -------------
+  1       barter          GETSOMBA.VIP     GetSomeBarter
+  2       GroupMC         GETSOMGM.VIP     GetSomGM
+  3       GroupParty      GETSOMGP.VIP     GetSomGP
+  4       GroupSch        GETSOMGS.VIP     GetSomeGS
+  5       GroupUsl        GETSOMGU.VIP     GetSomGU
+  6       KatOrg          GETSOMKO.VIP     GetSomeKontr
+  7       KatMC           GETSOMMC.VIP     GetSomeMC (pmc:comp)
+  8       KatMOL          GETSOMMO.VIP     GetSomeMOL
+  9       KatNazna        GETSOMNA.VIP     GetSomNa
+ 10       KatParty        GETSOMPA.VIP     GetSomeParty

+ 11       KatPodr         GETSOMPO.VIP     GetSomePodr
+ 11       KatPodr         GETSOMSK.VIP     GetSompSklad

+ 12       KatUsl          GETSOMUS.VIP     GetSomeUsl

+ 13       KatLimit        GETSOMLI.VIP     GetSomeLimit

+ 14       baseDoc         GETBASED.VIP     GetBaseDoc
+ 14       baseDoc         GETKONDO.VIP     GetKonDO

+ 15       baseDoc         Consig.Vip       Consig
                           BaseDoc.Vip      baseDoc
                           и все \VLAD.*
+ 14       basedoc         FORM_S_D.VIP     FormSoprDocBatch

+ 16       plpor           PLPOR.VIP        PlPor
+ 16       plpor           plmove.vip       PlPor
+ 16       plpor           plprior.vip      PlPor

+ 17       plpor           pickpld.vip      PickPlatDocs
+ 17       plpor           reeplpor.vip     ReePlPor
+ 17       reeplpor        getreepl.vip     getreepl

+ 18       platved         platvedc.vip     PlatVed_Kassa

+ 19       Podotchet       podotche.vip     Podotchet

+ 20       GoNewPer        b_closch.pas     gonewper

+ 21       KatNalog        getsomnl.vip     GetSomeNalog

+ 22       KatSopr         someSopr.cip     GetSomeSopr

+ 23       KatMbp          GetL_MBP.vip     GetL_MBP       // наименований МБП

+ 24       MbpIn           Line_MBP.vip     Line_MBP       // приходы МБП

+ 25       MbpOut          Woff_MBP.vip     Woff_MBP       // расходы МБП

+ 26       soprhoz

+ 27       katos           KatOs.vip        KatOss

+ 28       ClassNam        somekl           GetSomeKL   // групповой выбор самого верхнего внешнего классификатора

+ 29       Plpor           closesch.vip     closeschdel

!!! + 30       Oborot          oborot.vip       oborot      // Maxxi: не используется. пометка переведена на маркер

+ 31       GrSopr          grsopr.vip       GrSopr      // пометка для груповой печати и удаления

+ 32       BaseDoc         getdbase.vip     getdbase

+ 33       GrPodr          пока нет...      пока нет... // Группа подразделений

+ 34       KatBox          getsombo.vip     GetSomeKatBox // ячейка

+ 35       KLVal           getsomva.vip     GetSomeKLVal // валюта

+ 36       CredCard        getsomcr.vip     GetSomeCredCard // выбор кредитных карточек

+ 37       veddeponir      veddepon.vip     VedDepon_Kassa
+ 39       PlPor           G_PlPor.vip      G_PlPor
+ 40       ParPrice        getparpr.vip     GetParprice // уточнение партии при выборе из прайс-листа
+ 41
+ 42

+ 43       hozoper         seehozop.vip     seehozoper        формирование реестров ТХО

+ 44       GroupSFO        getsomso.vip     getsomso          групповой выбор групп СФО
+ 45       PersCard        getsomcd.vip     getsomcd          групповой выбор ЛК учета МБП

+ 47       NPunkts         getsompu.vip     GetSomeNPunkts    групповой выбор пунктов погрузки.разгрузки
+ 48       Persons         GetPers.vip      GetPers           групповой выбор сотрудников
+ 49       HozMacro        viewhoz.vip      ViewHoz           выбор ТХО в репозитарии
+ 50       VidVeks         VidVeks.vip      VidVeks           групповой выбор видов векселей
+ 51       VeksStat        VeksStat.vip     VeksStat          групповой выбор статусов векселей
+ 52       Veksl           Veksl.vip        Veksl             групповой выбор в каталоге векселей

+ 57       DocClass        групповой выбор в наборов свойств МЦ (6.0)

+ 58       ValutDoc        VbnakDoc.vip     ValutDoc          групп. выб. поручений на покупку\продажу\конвертацию валюты

!Володько А.В.
+ 72       UsersDoc        GSomUsDo.vip     GetSomeUsersDoc   Типы документов СФ - продажи
+ 73       UsersDoc        GSomUsDo.vip     GetSomeUsersDoc   Типы документов СФ - закупки
+ 74       UsersDoc        GSomUsDo.vip     GetSomeUsersDoc   Типы записей по СФ - продажи
+ 75       UsersDoc        GSomUsDo.vip     GetSomeUsersDoc   Типы записей по СФ - закупки

+ 76       UsersDoc        GSomUsDo.vip     GetSomeUsersDoc   Типы документов НН - продажи
+ 77       UsersDoc        GSomUsDo.vip     GetSomeUsersDoc   Типы документов НН - закупки
+ 78       UsersDoc        GSomUsDo.vip     GetSomeUsersDoc   Типы записей по НН - продажи
+ 79       UsersDoc        GSomUsDo.vip     GetSomeUsersDoc   Типы записей по НН - закупки

+ 80       Dogovor         getdogov.vip     GetDogovor      договора // только одиночный выбор (в Pick ничего не заносится)
                           pikdogov.vip     PickDogovor              // одиночный/множественный выбор
+ 90       ???             expimp\*.vip                     Экспорт - Импорт

+100       KatOrg          getsks.vip       GetSomeKontrSaldo // для временных целей

+101       KatNa           getKatNa.vip     GetKatNa         // групповой выбор шифров норм амортизации

+102-150   для модуля Основные средства
+102       KatOs           KatOs.vip        KatOss
+110       GrOs            GrOs.vip         GrOs
+111       IspOs           IspOs.vip        IspOs
+112       KatDrag         KatDragM.vip     KatDragMet
+113       KlassOs         KatKlass.vip     KatKlass
+114       Kodof           KodOKOF.vip      Kodokof
+115       NastrOs         NastrOs.vip      NastrOs
+116       VidNorma        VidNorma.vip     KatVidNorma
+117       KatForm         Form11.vip       Form11
+118       PrSb            PrSb.vip         KatPrSb
+150       KatOs           KatOs.vip        KatOss

+200       KatDrag         KatDragM.vip     KatDragMet
+201       ???             GetFldAl.vip     GetFields
+202       ???             GetFldAl.vip     GetFields
+220       KatSopr         GetAnNak.vip     GetAnNakl
+221       ActDisc         ActDisc.vip      ActDisc

+333       SchFact         SchFact.vip      SchFact
+440       nZakaz          getsnzak.vip     GetSomNZakaz   наряд заказы // только одиночный выбор (в Pick ничего не заносится)
                           piknzak.vip      PickNZak                    // одиночный/множественный выбор

+441       OtgOrder        getsotgr.vip     GetGrOtgOrder  распоряжения на отгрузку / только одиночный выбор (в Pick ничего не заносится)
                           pikotgr.vip      PickOtgOrder                // одиночный/множественный выбор

+446       KlProg          getsomp.vip      GetSomKlProg   выбор программ // только одиночный выбор (в Pick ничего не заносится)
                           piksompr.vip     PickSomKlProg         // одиночный/множественный выбор

+447       KatNotes        getsnote.vip     GetSomKatNotes статус договоров // только одиночный выбор (в Pick ничего не заносится)
                           picknotes.vip    PickKatNotes          // одиночный/множественный выбор

+448       KatVidD         getsomvd.vip     GetSomVidD     вид договоров // только одиночный выбор (в Pick ничего не заносится)
                           piksomvd.vip     PickSomVidD           // одиночный/множественный выбор

+449       UserDeskRep     GetUDskR.vip     GetUserDeskRep  выбор настроек отчетов

+555       ???             ????????.VIP     NaklSoot    // для временных целей
                           RECSWIFT.VIP     ReceiveSwift

+556       для временных целей Александра Крахотко...
+557       для временных целей Бартоша Жени...
+558

+560-569   для производства Сенькевич Игорь...
+570       для временных целей Сороки Валерия(ValeraS)...
+580-610   для временных целей Жалейко Алексея (ALEXZ)

+611-619   для временных целей (сбыт-снабжение)

+770 - +789 USED BY LSERG
+777        ------"------
+778        ------"------ (selCMCd.vpp e.c.)
+779        ------"------
+780        ------"------ (selMC4Rz.vip)
+781        ------"------ (selPrih.vip)
+782        ------"------ (selPrih.vip)
+800 - выбор МЦ по заданной группе МЦ (GetMCbyG.vip)
+801-830    ------"------ (SkyShop by LSerg)
+830-840   USED BY LSERG


+900-950   зарезервировано для розничной торговли

+1000-2000 - зарезервировано для Административного и АСУП контуров (Новый Атлант)

// Платежный календарь 2001 - 2100
+2001 - список финансовых операций для ф-ции формирования хозяйственных
        документов по финансовым операциям.
+2002      AKTOFP       gtaktofp.vip         GetAKTOFP      Выбор финансовых обязательств
+2003      AKTOFP       operfinp.vip         OperFinPlan    Пометка финансовых обязательств для операций

+19850-19866  SSA          *.vip            для временных целей (учет в производстве)
+19867     YURI            *.vip            везде у себя// кроме ВАДИКОВых
+19868     для временных целей Володько Анатолия (Dolgopl1.vip)
+19869     для временных целей Володько Анатолия (SoprSchf.vip)
+19870     для временных целей модуля Автотранспорт (putlst.vip)
+19871     для выбора маршрутов модуля Автотранспорт (Way_dor.vip)
+19872     для выбора пунктов маршрута модуля Автотранспорт (Get_Itws.vip)
+19873-19879 зарезервировано для временных целей модуля Автотранспорт
+19880-19885  Angel          norma*       для управления техпроцессами
+19886-19900  Axe          MnfPlan       для каталогов в Производственном планировании
+19901-19989  Tanni   для модуля Клиент
+20000-20020  Tolya   для каталогов KatKod.vip
+20100        Tolya   для отбора статей бюджета
+20105-20110  Michailov для проверки целостности КБУ

Re: Нормальное описание использования PICK

Добавлено: 29 апр 2005, 16:31
Vitaliy
Johny писал(а):Не знаю где бы найти это описание. В документашках не нашел,
По форуму - везде урывками.
Как юзать?
Как туда данные попадают, какие, как их тащить оттуда потом?
Основные поля таблицы Pick:
CREC - номер элемента в выбираемой таблице
WLIST - код списка (таблицы)
PICKKOL - выбранное количество
PICKNUM - порядок выбора
В нее заносятся данные обычно из интерфейсов выбора.
Например интерфейс выбора МЦ : GetSomeMC
В нем в событиях cmMarkUnMark, cmSelectAll, cmUnSelectAll происходит вставка и удаление данных в/из таблицу Pick с wList=7. При этом в cRec записывается nrec выбранной МЦ, т.е. katMC.nrec.

Следовательно после того как в своем интерфейсе вызывается интерфейс GetSomeMC можно путем выборки из таблицы Pick с ограничением по wList=7 выделить nrec тех МЦ, которые были помечены в нем.

Данные в Pick попадают самым обычным способом, т.е. записью, например:

Код: Выделить всё

insert in Pick set wList:=7, cRec:=katmc.nrec, ...;
или
set Pick.wList:=7;
set Pick.cRec:=katmc.nrec;
...
insert current Pick;
Помимо этого используются еще и поля:
Pick.PickKol - в него записывается выбранное кол-во, например когда запрашивается выбираемое кол-во, т.е. к примеру при формировании накладной, заполняя спецификацию вы помечаете МЦ и при пометке вас спрашивают кол-во МЦ
Pick.PickNum - записывается порядковый номер записи при выборе, т.е. 1, 2, 3, ...
Все очень просто, главное попробовать.

Добавлено: 29 апр 2005, 16:33
Vitaliy
Упс, Max_Fin уже успел объяснить :lol:

Добавлено: 29 апр 2005, 16:35
Max_Fin
Vitaliy писал(а):Упс, MAx_Fin уже успел объяснить :lol:
:D

Добавлено: 29 апр 2005, 16:49
Johny
Как я понял из предыдущего постинга, то Pick пашет только для стандартных интерфейсов выбора?
То есть если я пишу свой фейс, то накрывается все медным тазом?

Добавлено: 29 апр 2005, 16:52
Goblin
Почему ?
просто вместо маркера в обработчике событий при пометке insert и delete в Pick идет....

Добавлено: 29 апр 2005, 16:52
Max_Fin
Johny писал(а):Как я понял из предыдущего постинга, то Pick пашет только для стандартных интерфейсов выбора?
То есть если я пишу свой фейс, то накрывается все медным тазом?
почему ж используй любой другой код и вперед на мины :lol:

Добавлено: 29 апр 2005, 17:33
DarkAngel27
Пример занесения в Pick Nrec'ов Katsopr:

Код: Выделить всё

select * from katsopr, pick
where
       (( 
          word(201) == katsopr.vidsopr
          and word(200) == pick.wlist
          and katsopr.nrec == pick.crec
       ))
;
HandleEvent
cm...:
  PushPos(#KatSopr) ;
  var dStat : longint ;
  FOR (dStat := GetFirst KatSopr;
         dStat  = tsOk;
         dStat := GetNext Katsopr)
        {
         if (GetFirst Pick
          where (( word(200) == Pick.wList and
                   KatSopr.nRec == Pick.cRec  )) <> tsOk)
      {
       ClearBuffer(#Pick) ;
       Pick.wList := 200 ;
       Pick.cRec  := KatSopr.nRec ;
       insert Current Pick ;
      }
    } // FOR "KatSopr"
   PopPos(#KatSopr) ;
   ReReadRecord(#KatSopr) ;
    } // cm...
end; // HandleEvent
Реализовано в собственно интерфейсе. Если понравиться, используй...

Добавлено: 29 апр 2005, 17:36
DarkAngel27
А чтобы вытащить по Pick используй следующее:

Код: Выделить всё

select ...
Where
((
                  word(200) == pick.wlist
	  and pick.crec == katsopr.nrec
))
;
И работай с данными, сколько влезет.
Единственной в cmInit Лучше прописать, чтобы Pick обнулялся, если конечно это нужно...