Те, кто читает рассылку с первых выпусков, помнят, как несколько раз речь заходила о подмене SourceTable для формы. Т.е. когда источником данных для формы
является временная таблица. Сегодня мы постараемся осветить эту тему до конца.
Подмена SourceTable для формы в NAV
Пускай у нас есть некая функция, которая возвращает временную таблицу (например, таблица Customer) с результатом.
Мы хотим отразить ее в форме. Самый простой способ это сделать знают все:
FORM.RUN(FORM::"Customer List", recTmpCustomer);
Но есть и другой способ сделать это - подменить в форме триггеры OnNextRecord, OnFindRecord следующим образом:
OnFindRecord=
VAR
blnFound : Boolean;
BEGIN
recTmpCustomer:=Rec;
recTmpCustomer.COPYFILTERS(Rec);
blnFound:= recTmpCustomer.FIND(Which);
IF blnFound THEN
Rec := recTmpCustomer;
EXIT(blnFound);
END;
OnNextRecord=
VAR
intResultStep : Integer;
BEGIN
recTmpCustomer:=Rec;
intResultStep := recTmpCustomer.NEXT(Steps);
IF intResultStep <> 0 THEN
Rec := recTmpCustomer;
EXIT(intResultStep);
END;
Данный вариант полностью работоспособен, за одним исключением - не работают марки. Т.е. конечно, ч0рные точечки ставятся, но к рекорду recTmpCustomer
это не имеет никакого отношения. Как же заставить работать марки в этом случае?
Достаточно всего лишь переопределить сочетание клавиш Ctrl+F1, и вызывать по его нажатию свою собственную функцию, которая и будет ставить марки
во временной таблице. Функция следующая:
Как переопределить нажатие клавиш? Для этого надо сделать отдельный пункт в любом MenuButton на форме.
Таким образом, кстати, можно перехватывать любые сочетания.
На сегодня пока все. До свидания :-)
P.S. Хотите поделиться своими знаниями? Всегда Welcome! Любые статьи, Q & A, FAQ, советы - все опубликуем, обязательно укажем автора и дадим линк на сайт :-)
С наилучшими пожеланиями,
Андрей Стрельников.
Группа «Технологии как Искусство».
Разработки в сфере Navision. Скоростные и суперскоростные оптимизации, системная интеграция.
e-mail: likeart@mail.ru.