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

Мультивыбор организаций

Добавлено: 12 июн 2008, 15:40
levtov
Галактика 8. Можно ли с помощью интерфейса GetKatOr или другого
выбрать несколько организаций. То есть запустить множественный выбор KatOrg.Nrec и где то их сохранить.

Добавлено: 16 июн 2008, 11:02
k_vit
Interface L_KATORG::GetSomeKontrPrim

Интерфейс множественного выбора организаций. Выбор сохраняется в маркера KatOrg, KatOrgDescr

Добавлено: 16 июн 2008, 16:29
levtov
К сожалению с маркерами работать не приходилось. Сделал по старинке через Pick:
Table struct Organ (mark:comp);

cmKontra:
{delete all Pick; s2:=''; delete all Organ;
delete Pick where ((word(6)==Pick.wList));
if (RunInterface('GetSomeKontr', False)=cmDefault)
_LOOP Pick where ((word(6)==Pick.wList and Pick.cRec==KatOrg.nRec))
{ClearBuffer(#Organ);
Organ.mark:=Pick.cRec;
s2:=s2+' '+KatOrg.Name;
insert current Organ; }
s2:=trim(s2); message(s2);};

Добавлено: 17 июн 2008, 08:41
k_vit
Ну маркеры работают быстрее чем таблицы.
Хотя в вашем случае я не думаю, что вы много организаций собираете. :grin:

Добавлено: 17 июн 2008, 09:58
Алексей
k_vit маркеры нельзя использовать для жесткой подцепки в логической таблице, а pick можно...

Добавлено: 17 июн 2008, 15:34
k_vit
Алексей

Почему бы и нет?

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

var cOrg : comp;
var Marker : longint;

Marker := initmarker...
  for (i := 0; i <= GetMarkerCount(Marker); Inc(i)) {
    GetMarker(Marker, i, cOrg);
    if GetFirst FastFirstRow KatOrg where ((cOrg == KatOrg.NRec)) = tsOk  {
      ClearBuffer(#Organ);
      Organ.mark:=cOrg;
      s2 := s2 + KatOrg.Name;
      insert current Organ;
    }
  }
donemarker...

Добавлено: 18 июн 2008, 09:12
Алексей
:) ну вы ведь маркеры перетаскиваете в табличку, по которой потом и наложите жесткую подцепку?

Мы, реализовывая фильтры по МОЛам и подразделениям просто добавляем баундсы, к примеру по МБП

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

Bounds ByPodr = word(11)    /== PickPodr.wList   and
                MBPIn.cPodr /== PickPodr.cRec

Bounds ByMOL = word(8)     /== PickMOL.wList      and
                MBPIn.cMOL /== PickMOL.cRec
;
и дальше если пик не пустой просто подымаем баундс...
мне кажется так проще.