Задаем несложный Range:
X++:
str60 wrkgroup = "W0123*";
;
queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrGroupId )).value(
strFmt('(%1 == %2)', fieldStr( wrkCtrTable, WrkCtrGroupId ), fieldStr( wrkCtrTable, WrkCtrId ) ) );
queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrId )).value( wrkgroup );
Имеем:
Задача:
Убрать верхнюю строчку из lookup, т.е. отображать только тех фрезеровщиков у которых есть разряд.
Читаем:
Expressions in query ranges
Сложный Range с датами
Пытаемся повторить :
X++:
str60 wrkgroup = "W0123*";
str60 notwrkgroup = "W012300000";
queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrGroupId )).value(
strFmt('(%1 == %2)', fieldStr( wrkCtrTable, WrkCtrGroupId ), fieldStr( wrkCtrTable, WrkCtrId ) ) );
queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrId )).value(
strFmt('( (%1 == "%2") && (%1 != "%3") )',
fieldStr(wrkCtrTable, WrkCtrId),
queryValue( wrkgroup) )
queryValue( notwrkgroup ) )
);
НО получаем пустой lookup
Делаем запрос на таблице, убеждаемся что все таки имеются записи удовлетворяющие нашим условиям:
Пытаемся решить задачу своими силами:
немного упрощаем Range:
X++:
str60 wrkgroup = "W0123*";
queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrGroupId )).value(
strFmt('(%1 == %2)', fieldStr( wrkCtrTable, WrkCtrGroupId ), fieldStr( wrkCtrTable, WrkCtrId ) ) );
queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrId )).value(
strFmt(' (%1 == "%2") ',
fieldStr(wrkCtrTable, WrkCtrId),
queryValue( wrkgroup ) )
);
И все равно получаем пустой lookup.
Что я делаю не так?