Что-то я запутался...
Вот допустим: Создаем таблицу значений, состоящая из колонок Номер, Наименование
Номер Наименование
1 Товар 1
2 Товар 2
нужно написать алгоритм удаления товар1 из таблицы
Создал форму и кнопку на ней и в модуле формы создал таблицу значений
&НаСервере
Процедура сервер()
таб = новый ТаблицаЗначений;
таб.Колонки.Добавить("Номер");
таб.Колонки.Добавить("Наименование");
новаястрока = таб.Добавить();
новаястрока.Номер = 1;
новаястрока.наименование = "Товар1";
новаястрока = таб.Добавить();
новаястрока.Номер = 2;
новаястрока.наименование = "Товар2";
новаястрока = таб.Добавить();
новаястрока.Номер = 3;
новаястрока.наименование = "Товар3";
новаястрока = таб.Добавить();
новаястрока.Номер = 4;
новаястрока.наименование = "Товар1";
Для НомерСтроки = 0 По таб.Количество() - 1 Цикл
Сообщить(таб[НомерСтроки].номер);
Сообщить(таб[НомерСтроки].наименование);
КонецЦикла;
Для Каждого Строка Из Таб Цикл
Если Строка.Наименование = "Товар1" Тогда
Таб.Удалить(Строка);
КонецЕсли;
КонецЦикла;
http://pro1c.org.ua/redirect.php?http://www.1c-h.ru/?p=190
стрОтбор = Новый Структура("Колока2",22);
МассивСтрок = ТЗ.НайтиСтроки(стрОтбор); // в этом массиве останутся строки 2 и 4,
// т.е. в результате получим массив строк таблицы значений, соответствующих условиям поиска.
// Важно! Такой массив хранит ссылки на строки таблицы значений, то есть при изменении строки в таблице, значение в массиве тоже будет измененным.
ВремТЗ = ТЗ.Скопировать(МассивСтрок); // копируем массив строк во временную таблицу значений
ТЗ.Очистить(); // удаляем все строки из ТЗ
ТЗ = ВремТЗ.Скопировать(); // копируем всю временную таблицу значений в нашу ТЗ
ух-ты. MATEVI, интересно. А если Очистить() не применять, не запишет в ТЗ поверх?
а по этому коду в итоге не будет работать дольше, чем стандартное решение - пробежаться по строкам?
logist, так неправильно. Если по условию удалится строка (1), то предыдущая (2) станет на её место и при следующей итерации она (строка 2) будет пропущена.
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Колонка1");
ТЗ.Колонки.Добавить("Колонка2");
ТЗ.Колонки.Добавить("Колонка3");
Для инд = 0 По 10 Цикл
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Колонка1 = "Строка_"+Строка(инд)+"_Колонка_1";
НоваяСтрока.Колонка2 = "Строка_"+Строка(инд)+"_Колонка_2";
НоваяСтрока.Колонка3 = "Строка_"+Строка(инд)+"_Колонка_3";
КонецЦикла;
Для Каждого Строка ИЗ ТЗ Цикл
Если Строка.Колонка1 = "Строка_1_Колонка_1"
ИЛИ Строка.Колонка1 = "Строка_2_Колонка_1"
ИЛИ Строка.Колонка1 = "Строка_3_Колонка_1"
Тогда
ТЗ.Удалить(Строка);
КонецЕсли;
КонецЦикла;
Для Каждого строка Из Таб Цикл
Если строка.Наименование = "Товар1"
Тогда
Таб.Удалить(строка);
КонецЕсли;
КонецЦикла;
bodka, а ниже посты почитать не судьба?
Для Каждого строка Из Таб Цикл
Если строка.Наименование = "Товар1"
Тогда
Таб.Удалить(строка);
КонецЕсли;
КонецЦикла;
ш=0;
Пока ш < Таб.Количество() Цикл
Строка = Таб[ш];
Если строка.Наименование = "Товар1"
Тогда
Таб.Удалить(ш);
Иначе
ш = ш + 1
КонецЕсли;
КонецЦикла;
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua