Понадобилось мне скопировать набор range из одной таблицы в другую по одноименным полям. 
Код, который воспроизводит данный процесс на тестовой формочке:
	PHP код:
	
		
			
    Query                   q, qn = new Query();
    QueryBuildDataSource    qbDS, qbDSn;
    DictTable               dictTableSour, dictTableDest;
    FieldId                 fieldId_Dest, fieldId_Sour;
    str 100     qv;
    int         i;
    ;
    super();
    if(InventTable_ds.queryRun())
        q = InventTable_ds.queryRun().query();
    else
        q = InventTable_ds.query();
    qbDS  = q.dataSourceNo(1);
    qbDSn = qn.addDataSource(qbDS.table());
    dictTableSour = new DictTable(qbDS.table());
    dictTableDest = new DictTable(qbDSn.table());
    for(i = 1; i <= qbDs.rangeCount(); i++)
    {
        fieldId_Sour = qbDS.range(i).field();
        fieldId_Dest = dictTableDest.fieldName2Id(dictTableSour.fieldName(fieldId_Sour));
//        fieldId_Dest = fieldId_Sour;
        qv = qbDS.range(i).value();
        if(fieldId_Sour && fieldId_Dest)
            qbDSn.addRange(fieldId_Dest).value(qv);
    }
    info(qbDS.toString());
    info(qbDSn.toString()); 
		
	
 И все работало, пока не попался "хитрый" запрос с несколькими range по одному полю. В результирующем запросе получился OR между этими ограничениями вместо AND из исходного.
Создал тестовый пример - форма с одним DS (InventTable) в init устанавливается фильтр на поле ItemId. При установке пользовательского фильтра на этоже поле и копировании ограничений получаем:
[FIG1]
Кто-то может объяснить такой феномен?