Показать сообщение отдельно
Старый 12.09.2011, 11:42   #7  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Мне нужно:
1. Выполнять различный лукап в зависимости от значения друго поля. Срослось.

2. Разрешать выбор нескольких значений. Посмотел, как делается на SysQueryForm, сделал, не работает. Заменяет другое значение при повторном выборе:
X++:
protected void dialogAccountRelation_lookup()
{
    SysLookup       sysLookup;
    Query                query=new Query();
    QueryBuildDataSource queryBuildDataSource;
    FormControl _formcontrol=dialog.curFormControl_RU();
    TmpSysQuery TmpSysQuery;
    boolean rn=false;
    ;

oldvalue=_formcontrol.valueStr();
dialog.dialogOnClient_RU().updateServer();
if(this.priceModule(dialogRelation.value())==ModuleInventCustVend::Vend){
    switch(dialogAccountCode.value()){
    case TableGroupAll::All:break;
    case TableGroupAll::GroupId:
        queryBuildDataSource=query.addDataSource(tablenum(VendGroup));
        TmpSysQuery.initValue();
        TmpSysQuery.Table_Id=tablenum(VendGroup);
        TmpSysQuery.Field_Id=fieldnum(VendGroup,VendGroup);
        TmpSysQuery.insert();

        rn=true;
        break;
    case TableGroupAll::Table:
        queryBuildDataSource=query.addDataSource(tablenum(VendTable));
        TmpSysQuery.initValue();
        TmpSysQuery.Table_Id=tablenum(VendTable);
        TmpSysQuery.Field_Id=fieldnum(VendTable,AccountNum);
        TmpSysQuery.insert();
        rn=true;
        break;
    }
    if(rn){
        syslookup::lookupRange(_formcontrol,TmpSysQuery,query);
        dialog.updateClient(dialog.dialogOnClient_RU());
        }
 } else info("Поддерживается только для модуля поставщиков");
Переделал midified, чтобы отработать ситуацию. В нем оказалось, что старое значение сохраняется в это методе:
X++:
protected void dialogAccountRelation_modified(){
 ;
 dialog.dialogOnClient_RU().updateServer();
 if(OldValue) dialogAccountRelation.value(OldValue+dialogAccountRelation.value());
 dialog.updateClient(dialog.dialogOnClient_RU());
 }
Т.е. выбирал в первый раз 001, поставил "|", сделал повторный лукап, выбрал 002, на выходе в значении поля - не "001|002", как ожидалось, а "001|001|"
Не подскажете, где косяк?