1C-CodeКак сделать → Как отобрать строки в таблице значений

Как сделать отбор строк в таблице значений в 1С

НайтиСтроки со структурой отбора — если нужны подходящие. Свернуть или обратный цикл с удалением — если лишние надо убрать из самой таблицы.

Код

// получить подходящие, не трогая таблицу
Отбор = Новый Структура("Склад", НужныйСклад);
Строки = ТЗ.НайтиСтроки(Отбор);

// убрать лишние ИЗ таблицы — идём с конца
Для Сч = ТЗ.Количество() - 1 По 0 Цикл
	Если ТЗ[Сч].Количество = 0 Тогда
		ТЗ.Удалить(Сч);
	КонецЕсли;
КонецЦикла;

Что здесь важно

1. Удалять надо с конца, и это не стилистика

При удалении строки все следующие сдвигаются на позицию вверх. Цикл от начала после каждого удаления перескакивает одну строку — и половина подходящих остаётся в таблице. Обратный цикл этой беды лишён: сдвиг происходит там, где мы уже прошли.

2. Структура отбора — по равенству

НайтиСтроки умеет только «равно». Для «больше», «между» и «содержит» придётся идти циклом или брать запрос.

3. Имена в структуре — имена колонок

Опечатка даст не пустой результат, а ошибку про необнаруженное поле — и это хорошо: молчаливый пустой отбор искали бы дольше.

Где обычно спотыкаются

Если таблица получена запросом, отбор надо было делать в запросе — ГДЕ отсечёт строки на стороне базы, не таща их в память. Отбирать в памяти уместно, когда одна и та же таблица нужна в нескольких разрезах: тогда один запрос и несколько отборов дешевле нескольких запросов.

Проверить на практике. В тренажёре такой код запускается на настоящем интерпретаторе языка 1С с демонстрационной базой: справочники, документы, регистры. Без установки платформы и без риска для рабочей базы.

Открыть тренажёр

Разобраться глубже

Другие вопросы

Как получить остатки на дату запросом в 1С Как программно провести документ в 1С Как избавиться от запроса в цикле в 1С Как добавить колонку в таблицу значений программно Как свернуть таблицу значений Как найти строку в таблице значений Как выгрузить колонку таблицы значений в массив Как превратить массив в таблицу значений Как передать таблицу значений с сервера на клиент Как отсортировать таблицу значений Как записать движения регистра накопления программно Чем регистр остатков отличается от регистра оборотов Как контролировать остатки при проведении документа Как добавить реквизит расширением конфигурации Как сравнить две таблицы значений Какие бывают соединения в запросе 1С и чем отличаются Как выгрузить таблицу значений в Excel Чем дерево значений отличается от таблицы значений Как задать условное оформление таблицы на форме