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

Внешние атрибуты - ссылка (другие таблицы)

Добавлено: 29 сен 2014, 16:32
Den_Is
Вопрос наверное простой. Необходимо добавить внешний атрибут с сылкой на каталог стран. Создаю атрибут, делаю ссылка (прочие таблицы), открывается список таблиц, в списке каталога стран нет. Клавиша F7 не отрабатывает (права админа, доступ на чтение и запись всех таблиц). Как добавить в список таблиц нужную мне таблицу?
p/s Галактика 7.12.

Re: Внешние атрибуты - ссылка (другие таблицы)

Добавлено: 29 сен 2014, 17:22
Den
наверное, никак.
дублировать может тока через пользовательскую аналитику его.

Re: Внешние атрибуты - ссылка (другие таблицы)

Добавлено: 29 сен 2014, 19:20
Dmitry_Sol
Вопрос конечно не в этой теме, а больше относится к программированию.

Но решаемый. Вот этот код добавляет каталог стран в список Прочих таблиц в аттрибутах.

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

#include GetAttrTable.vih

const
  coState    : Word =1458;
end;

#ifdef ComponentVersion
#component "C_EXTCLASS"
#endif

VipInterface CreateAttrRef_GalMy implements ObjCreateAttrRefPlugin licensed (FREE);

//------------------------------------------------------------------------------
Handler with replace Gal_CreateAttrRefTableMy on extensionPoint epCreateAttrRefTable (AttrRef : ObjGetAttrTable) [10] // i??< 11
Action
{
   Result := true;
   var ifc : CreateAttrRef_GalMy;
   ifc.AddAttrRefTable (AttrRef);
}

//------------------------------------------------------------------------------
Handler with replace Gal_PickTableRefMy on extensionPoint  epPickTableRef (_coTable: word; _cAttrVal: comp) [10]
Action
{
   case _coTable of
   coState :
   { var ifc : CreateAttrRef_GalMy;
     Result := not ifc.PickValueRef (_coTable, _cAttrVal);
     Result := False ;
   }
   else Result:=true ;
   end ;
}


Interface CreateAttrRef_GalMy;
Create view
From
AttrVal
,Persons
,IeHead
,HozOper
;

Public Procedure AddAttrRefTable (AttrRef : ObjGetAttrTable);
{
  AttrRef.AddTable(coState);
}

Public  Function PickValueRef (_coTable: word; _cAttrVal: comp): boolean;
var
  cStatePick: Comp;
begin
  PickValueRef := false;
  if (getFirst AttrVal where ((_cAttrVal == AttrVal.nRec)) <> tsOk)
     Exit;
  case _coTable of
	coState :
	  {
         cStatePick := AttrVal.vComp;
         RunInterFace(L_KATORG::GETSTATE,cStatePick);
	   if (getFirst KatState where ((cStatePick == KatState.nRec)) = tsOk)
 	   {
		 AttrVal.vComp     := KatState.nRec;
		 AttrVal.vString   := KatState.Name;
		 PickValueRef      :=true;
	   }

	  }
	else  // Если нет интерфейса выбора
    {
      PickValueRef:=false;
      message ('Для таблицы с кодом ' + string(_coTable) + ' нет интерфейса выбора.');
    }
  end; // case

  if  PickValueRef
  {
    var err : word;
    err := Update current AttrVal
    if err <> 0
    {
      Message ('Ошибка N ' + string(err) + ' обновления записи в таблице AttrVal.');
      exit;
    }
  }
end;

end.
Правда не уверен, что это будет работать на 7.12

Re: Внешние атрибуты - ссылка (другие таблицы)

Добавлено: 29 сен 2014, 19:49
Den
точки расширения с 5го атлантиса тока кажись. Надо смотреть Галка 7,12 на каком функциклирует.

Re: Внешние атрибуты - ссылка (другие таблицы)

Добавлено: 25 окт 2024, 14:38
YuryN
Доброго времени суток, уважаемые форумчане.

Создал внешний атрибут-ссылку на пользовательскую таблицу аналитики. Заполнил таблицу. А как достать значения?

Подскажите, какими функциями работать с этим атрибутом.

Re: Внешние атрибуты - ссылка (другие таблицы)

Добавлено: 25 окт 2024, 16:40
Irina_
Здравствуйте.
Я делаю, например, так. Если кроме наименования мне надо еще что-то, например код:

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

#include ExtAttrClassInfo.vih
Var
  var1    : iExtAttrClassInfo;
  crec_, cAttr_  : Comp;
  sVA, sName, sCode_  : String;
…
sVA:=  'Имя ВА'; //наим-е ВА 
cAttr_:=  var1.ExtAttr_ID( coMoveOs, sVA ); // Nrec ВА к табл.MoveOs
sName:= '';
sCode_:= '';
If var1.ExtAttr_ValueExistsID( coMoveOs, MoveOs.Nrec, cAttr_ )
   {
      crec_:= var1.coGetAttrID( coMoveOs, MoveOs.Nrec, cAttr_ );
      If ( GetFirst SpKau Where (( crec_ == SpKau.Nrec )) = tsOk )
        {
          sName:= SpKau.Name;
          sCode_:= SpKau.Code;
         }
   }
Если нужно только наименование, то, думаю, подойдет:

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

sName:= If( ( var1.ExtAttr_ValueExistsID ( coMoveOs, MoveOs.Nrec, cAttr_ ) = False ), '', var1.sGetAttrID( coMoveOs, MoveOs.Nrec, cAttr_ ) );