Как зациклить только выбранные записи на странице?
В Dynamics NAV 2018 я пытаюсь просмотреть выбранные записи на странице и изменить столбец «Приложение» на TRUE во всех выбранных записях при нажатии кнопки «Incluir en APP»:
То, что я пробовал до сих пор, это:
CurrPage.SETSELECTIONFILTER(Rec);
REPEAT
Rec.App := TRUE;
Rec.MODIFY;
UNTIL Rec.Next := 0;
Но это изменит все отображаемые записи, а не все выбранные.
Также проверено безCurrPage.SETSELECTIONFILTER(Rec);
но без разницы.
Как я могу зациклить только выбранные записи?
1 ответ
Во-первых, параметр в SETSELECTIONFILTER не должен быть Rec. Может быть, но не должно. Потому что эта функция поместит фильтр в переменную, переданную в качестве параметра. Таким образом, в вашем случае после того, как ваш код будет выполнен, ваша страница должна быть отфильтрована только для выбранных записей (с использованием меток). Конечно, вы можете сбросить фильтр для записи, но это также сбросит пользовательские фильтры (которые могли быть применены ранее). Вы не хотите возиться с этим. Так что просто используйте другую переменную того же типа.
Во-вторых, ваш код не работает (вероятно), потому что вы не сделали findset после SETSELECTIONFILTER. Или должно работать иначе, если на этой странице нет других вещей, которые вы забыли упомянуть (например, если это временная таблица). Но имейте в виду первый пункт.
В-третьих, лучший способ закодировать это будет
CurrPage.SETSELECTIONFILTER(Rec1);
Rec1.Findset;
REPEAT
Rec1.App := TRUE;
Rec1.MODIFY;
UNTIL Rec1.Next := 0;
Currpage.update(false);