1C-Code → Как сделать → Как отобрать строки в таблице значений
НайтиСтроки со структурой отбора — если нужны подходящие. Свернуть или обратный цикл с удалением — если лишние надо убрать из самой таблицы.
// получить подходящие, не трогая таблицу
Отбор = Новый Структура("Склад", НужныйСклад);
Строки = ТЗ.НайтиСтроки(Отбор);
// убрать лишние ИЗ таблицы — идём с конца
Для Сч = ТЗ.Количество() - 1 По 0 Цикл
Если ТЗ[Сч].Количество = 0 Тогда
ТЗ.Удалить(Сч);
КонецЕсли;
КонецЦикла;
При удалении строки все следующие сдвигаются на позицию вверх. Цикл от начала после каждого удаления перескакивает одну строку — и половина подходящих остаётся в таблице. Обратный цикл этой беды лишён: сдвиг происходит там, где мы уже прошли.
НайтиСтроки умеет только «равно». Для «больше», «между» и «содержит» придётся идти циклом или брать запрос.
Опечатка даст не пустой результат, а ошибку про необнаруженное поле — и это хорошо: молчаливый пустой отбор искали бы дольше.
Если таблица получена запросом, отбор надо было делать в запросе — ГДЕ отсечёт строки на стороне базы, не таща их в память. Отбирать в памяти уместно, когда одна и та же таблица нужна в нескольких разрезах: тогда один запрос и несколько отборов дешевле нескольких запросов.
Проверить на практике. В тренажёре такой код запускается на настоящем интерпретаторе языка 1С с демонстрационной базой: справочники, документы, регистры. Без установки платформы и без риска для рабочей базы.