Что-то я уже "завис", подскажите пожалуйста, как из ТЗ удалить все строки кроме последней?
---
стр=ТЗ[ТЗ.Количество()-1];
ТЗ.Очистить();
ЗаполнитьЗначенияСвойств(ТЗ.Добавить(),стр); Вряд ли такое сработает, ведь строка таблицы значений не может существовать сама по себе.
Такой вариант:
```1c
    Пока ТЗ.Количество() > 1 Цикл
    ТЗ.Удалить(0);
    КонецЦикла;
```
---
как из ТЗ удалить все строки кроме последней? Можно в цикле с условием "пока количество строк больше 1" удалять первую строку.
---
```1c
    стр=ТЗ[ТЗ.Количество()-1];
    ТЗ.Очистить();
    ЗаполнитьЗначенияСвойств(ТЗ.Добавить(),стр);
```
---
стр=ТЗ[ТЗ.Количество()-1];
ТЗ.Очистить();
ЗаполнитьЗначенияСвойств(ТЗ.Добавить(),стр); Вряд ли такое сработает, ведь строка таблицы значений не может существовать сама по себе.
Такой вариант:
```1c
    Пока ТЗ.Количество() > 1 Цикл
    ТЗ.Удалить(0);
    КонецЦикла;
```
---
верно, не сработает
---
Пока ТЗ.Количество() > 1 Цикл
    ТЗ.Удалить(0);
КонецЦикла;
Спасибо! Самый простой и замечательный вариант!
---
"стр" ссылка на строку в "ТЗ", ваш вариант нерабочий
---
можно и так:

```1c
    МассивСтрТЗ = Новый Массив;
    МассивСтрТЗ.Добавить(ТЗ[ТЗ.Количество()-1]);
    ТЗ = ТЗ.Скопировать(МассивСтрТЗ,);
```
---
ХЗ насколько велика ваша ТЗ. Вариант "в лоб" с последовательным удаленим ВСЕХ строк может работать неприемлемо долго.
В качестве альтернативы предлагаю: сохранить данные последней строки в новую ТЗ
```1c
    Функция СохранитьСтроку (СтараяТЗ)

    НоваяТЗ = НоваяТЗ.СкопироватьКолонки();

    СтрокаНовойТЗ = НоваяТЗ.Добавить;
    СохраняемаяСтрока = СтараяТЗ[СтараяТЗ.Количество()-1];
    Для Каждого Колонка ИЗ СтараяТЗ.Колонки Цикл
    СтрокаНовойТЗ [Колонка] = СохраняемаяСтрока [Колонка]
    КонецЦикла;

    Возврат НоваяТЗ;

    КонецФункции
```
---
Откровенно говоря, у меня максимальное количество строк в ТЗ равно трем!
---
Откровенно говоря, у меня максимальное количество строк в ТЗ равно трем! М-да. После такого откровения степень "зависания" требует переоценки... вплоть до вопроса о смене профессии.

Потому что, в отличие от общего случая, идея которого была предложена в (2) и реализована в (4), такой вариант пишется, что называется, "тупо в лоб":

```1c
    Если ТЗ.Количество() = 3 Тогда
    ТЗ.Удалить(1);
    ТЗ.Удалить(0);
    ИначеЕсли ТЗ.Количество() = 2 Тогда
    ТЗ.Удалить(0);
    КонецЕсли;
```

Можно не благодарить!

2All: Просьба не пинать: это не решение проблемы, а иллюстрация г...внокода, который автор с 16-летним стажем не смог придумать!
---
Спасибо! Стаж у меня больше, может уже "возрастное", может после Covid, но иногда бывают "зависания" и именно на какой-нибудь мелкой ерунде. "Крутится в голове" - вот оно решение, а "поймать" не могу. Поэтому I am sorry.
---
Как вариант

```1c
    Процедура УдалитьПочтиВсе (ТЗ)

    ИменаКолонок = ";
    Для Каждого Колонка из ТЗ.Колонки цикл
    Разделитель = ?(ПустаяСтрока(ИменаКолонок), ",",");
    ИменаКолонок = ИменаКолонок + Разделитель+Колонка.Имя;
    КонецЦикла;
    СтруктураПоследнейСтроки = Новый Структура(ИменаКолонок);
    СохраняемаяСтрока = ТЗ[СтараяТЗ.Количество()-1];
    ЗаполнитьЗначенияСвойств(СтруктураПоследнейСтроки, СохраняемаяСтрока);

    ТЗ.Очистить();
    НовСтр = ТЗ.Добавить();
    ЗаполнитьЗначенияСвойств(НовСтр, СтруктураПоследнейСтроки);

    КонецПроцедуры
```