Показать сообщение отдельно
Старый 03.06.2007, 00:16   #8  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Вот метод, на таблице Dimensions

client static void webLookupDimension(SysDimension _dimType)
{
webTableLookup webTableLookup;
Query query = new Query();
QueryBuildRange qbr;
;

webTableLookup = webTableLookup::newParameters(tablenum(Dimensions));
webTableLookup.addLookupfield(fieldnum(Dimensions, Num));
webTableLookup.addLookupfield(fieldnum(Dimensions, Description));
webTableLookup.selectField(fieldnum(Dimensions, Num));
if (query)
{
query.addDataSource(tablenum(Dimensions));
qbr = query.dataSourceTable(tablenum(Dimensions)).addRange(fieldnum(Dimensions, DimensionCode));
if (qbr)
{
qbr.value(queryValue(_dimType));
}
}

webTableLookup.parmQuery(query);
webTableLookup.run();

}

Дальше на таблице, например PurchTable, создается столько методов, сколько есть аналитик примерно такого вида

edit DimensionDepartment webDimensionDepartment(boolean _set, DimensionDepartment _value)
{
;

if (_set)
{
ttsbegin;
this.Dimension[1] = _value;
if (this.validateField(fieldId2Ext(fieldnum(PurchTable, Dimension), 1)))
{
ttscommit;
}
else
{
ttsabort;
}
}

return this.Dimension[1];

}

где DimensionDepartment — это EDT, которое ссылается на Отделы в таблице Dimensions.

Наконец, на контроле в форме, который создан на базе edit-метода, перекрывается метод lookup(), и в нем пишется примерно следующее

public void lookup(str _lookupValue)
{
;

Dimensions::webLookupDimension(SysDimension:epartment);

}

И у контрола свойство LookupMethod должно быть установлено в Custom.

Насколько это работает в 4.0 пока сказать не могу.
__________________
С уважением,
glibs®