Показать сообщение отдельно
Старый 10.04.2003, 16:19   #8  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Цитата:
Если я правильно понял вопрос:
Я создаю две таблицы в АОТ, далее мне необходимо создать между ними связь по полю (т.е. в зависимой делаем связь: Relation [в нем: Normal] и соединяем два поля) - все! Таблицы связаны. Так вот вопрос, как это сделать средствами X++? Создать таблицу я могу при помощи treeNode, а связать не могу, связь как таковую treeNode создает, а ее параметры задать нельзя...
Бывает
Мы тоже сталкивались с необходимостью динамически создать из кода всего чего угодно
Например при разработке конструктора отчётов. Не того который в Аксапте, в ГК, а
универсального и более мощного.
Вашу проблему можно решить двумя способами (лично я предпочитаю первый) :
1.) С помощью TreeNode.
Вы создали таблицу Table.
через treeNode можно выйти на Table\Relations
Здесь TreeNode.add.
Ну а потом пользуясь функцией TreeNode.setProperty и устанавливаете нужные свойства(Table, field и т.п.).

2.) С помощью экспорта-импорта.

Можете воспользоваться функциями:

PHP код:
//Описание: Установка свойства объекта репозитария
//
//Параметры: _tn            - изменяемый объект TreeNode
//           _sPropertyName - название свойства
//           _sPropertyValue - новое значение свойства


static void setTreeNodeProperty(TreeNode _tnstr _sPropertyNamestr _sPropertyValue)
{
    
str sValue;
    
str sProperties _tn.AOTgetProperties();
    
int iPropertyBegin;
    
int iValueBegin;
    
int iValueEnd;

    
//начало свойства
    
iPropertyBegin strscan(sProperties_sPropertyName,1strlen(sProperties) );
    
//начало значения свойства
    
iValueBegin =  strscan(sProperties,"#",iPropertyBegin,strlen(sProperties) );

    
iValueEnd strscan(sProperties,"\n",iValueBegin,strlen(sProperties));

    
sValue substr(sProperties,1,iValueBegin);
    
sValue +=_sPropertyValue;
    
sValue += substr(sProperties,iValueEnd,strlen(sProperties));

    
_tn.AOTsetProperties(sValue);

PHP код:
//Описание:  Получение свойства объекта репозитария
//
//Параметры: _tn            - объект TreeNode
//           _sPropertyName - название свойства

static str getTreeNodeProperty(TreeNode _tnstr _sPropertyName)
{
    
str sValue;
    
str sProperties _tn.AOTgetProperties();
    
int iPropertyBegin;
    
int iValueBegin;
    
int iValueEnd;


    
//начало свойства
    
iPropertyBegin strscan(sProperties_sPropertyName,1strlen(sProperties) );
    
//начало значения свойства
    
iValueBegin =  strscan(sProperties,"#",iPropertyBegin,strlen(sProperties) );

    
iValueEnd strscan(sProperties,"\n",iValueBegin,strlen(sProperties));

    
sValue substr(sProperties,iValueBegin+1,iValueEnd-iValueBegin-1);
    return 
sValue;

__________________
С уважением, Игорь Ласийчук.