Як отримати рядки, відібрані відбором, книга знань

Як отримати рядки табличного поля, відібрані відбором.


Ключові слова: відбір, табличне поле, упавляемая форма


Як то мені знадобилося отримати список рядків табличного поля, які відібрані користувачем за допомогою відбору, щоб потім їх видалити. Мені пропонували побудувати еквівалентний запит, але я порахував це занадто складним.
В результаті народилося просте рішення. Воно засноване на тому, щоб перебрати всі рядки джерела даних табличного поля і по черзі поточної рядком встановлювати поточний рядок джерела даних. Якщо рядок у відборі, то вона встановиться як поточна, інакше не встановиться. От і все. Дивіться код.

Працює по ідеї не тільки для регістрів, але і для інших табличних полів.

Хід обговорення, в результаті якого я прийшов до такого алгоритму тут:
v8: туплю - як отримати список відібраних в таблиці

Інший варіант, не мій, використовується ПостроітельЗапроса:

У керованих формах все простіше, хоча місцями не настільки очевидно.

Існує метод таблиці форми ПроверітьСтроку. який повертає істину для рядка, що задовольняє умовам відбору, встановленим в формі. Неочевидність тут в тому, що в параметрах цього методу потрібно передавати ідентифікатор рядки хоча в СП сказано передавати рядок. Ну і існує це метод на клієнті, а обробка рядків виконується як правило на сервері.

Ідея в наступному: на клієнті формуємо масив індексів рядків, які відповідають встановленим відбору і передаємо його на сервер, де знову формуємо масив тепер уже самих рядків. їх вивантажуємо в таблицю значень, з якої і роботи.

Всі процедури розташовані в модулі керованої форми. ТабліцаФорми - реквізит форми типу ТабліцаЗначеній. на формі розташована однойменна таблиця, пов'язана з цим реквізитом


P.S. Мені потрібно було для керованих форм в 8.3.6. Можливо буде працювати і для звичайних. Там у табличного поля теж є метод ПроверітьСтроку і не треба розносити клієнт-сервер.

Схожі статті