Отправляет email-рассылки с помощью сервиса Sendsay

Navision - советы и секреты

  Все выпуски  

Подмена источника данных для формы в Navision.


Добрый день!

Те, кто читает рассылку с первых выпусков, помнят, как несколько раз речь заходила о подмене 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, и вызывать по его нажатию свою собственную функцию, которая и будет ставить марки во временной таблице. Функция следующая:

PROCEDURE SetMark();
BEGIN
  // Ставим/снимаем метку
  recTmpCustomer.GET(Rec."No.");
  Rec.MARK(NOT Rec.MARK);
  recTmpCustomer.MARK(Rec.MARK);
END;

Как переопределить нажатие клавиш? Для этого надо сделать отдельный пункт в любом MenuButton на форме.
Таким образом, кстати, можно перехватывать любые сочетания.

На сегодня пока все. До свидания :-)


P.S. Хотите поделиться своими знаниями? Всегда Welcome! Любые статьи, Q & A, FAQ, советы - все опубликуем, обязательно укажем автора и дадим линк на сайт :-)

С наилучшими пожеланиями,
Андрей Стрельников.

Группа «Технологии как Искусство».
Разработки в сфере Navision. Скоростные и суперскоростные оптимизации, системная интеграция.
e-mail: likeart@mail.ru.

-------
Что такое главное?


В избранное