А может я туплю. Вот имеем два варианта:
1.
#define WA &( cAlias )
FUNCTION udfDocLoad( nUserStru, cAlias, d1, cOrd, cSeek )
LOCAL aDat := {}
LOCAL cOrdSave
LOCAL bSeek
cAlias := leto_Alias( nUserStru, cAlias )
bSeek := &( "{ || " + cSeek + "}" )
cOrdSave := WA->( OrdSetFocus( cOrd ) )
WA->( dbGoTop() )
WA->( Eval( bSeek ) ) // не срабатывает
...
...
...
RETURN aDat
2.
#define WA &( cAlias )
FUNCTION udfDocLoad( nUserStru, cAlias, d1, cOrd, cSeek )
LOCAL aDat := {}
LOCAL cOrdSave
LOCAL bSeek
cAlias := leto_Alias( nUserStru, cAlias )
//bSeek := &( "{ || " + cSeek + "}" )
cOrdSave := WA->( OrdSetFocus( cOrd ) )
WA->( dbGoTop() )
WA->( dbSeek( DtoS( d1 ), .T. ) ) // срабатывает
...
...
...
RETURN aDat
Параметры:
d1 - дата,
cOrd - строка
cSeek - строка вида "dbSeek( DtoS( d1 ), .T. )"
Так вот:
- в первом варианте udf-функция прерывается по ошибке на строке "WA->( Eval( bSeek ) )",
а логе появляется запись "Error BASE/1003 Variable does not exist: D1"
- во втором варианте всё работает без вопросов.
Как это понимать?
ps. Проверил на всякий случай leto_UDFExist( "Eval" ). Вернула .T.