| 0
    
        gaigalov   27.01.21✎ 12:09 | 
        Добрый день. Тема чисто для обучения.
Встал вопрос работы с Таблицей значений.
 Создал запрос, выгрузил из него в Таблицу значений.
 Нужно часть записей, не соответствующих условию убрать.
 Сначала решил Просто их удалить.
 
 Для Каждого Стр Из ТЗ Цикл
 Если ... Тогда
 ТЗ.Удалить(Стр);
 КонецЕсли;
 
 КонецЦикла;
 
 Позиции удаляются, но не все. Если позиции идут подряд, то удаляются нечетные, а четные остаются. Я так понимаю что при удалении указатель записи переходит на следующую строку таблицы значений, а при выполнении цикла Для еще раз переходит на строку ниже, и в результате четная строка пропускается и не обрабатывается в цикле. Грустно. Как можно исправить?
 
 Попробовал по советам из инета через цикл Пока по индексам снизу вверх, т.е. в обратном порядке.
 
 КолТЗ = ТЗ.Количество()-1;
 
 Пока КолТЗ >=0 Цикл
 
 СтрТЗ = ТЗ.Получить(КолТЗ);
 Если ... Тогда
 ТЗ.Удалить(КолТЗ);
 КонецЕсли;
 КолТЗ = КолТЗ - 1;
 
 КонецЦикла;
 
 
 Тут все работает на УРА.
 
 Прочитал еще вариант через функцию ЗаполнитьЗначенияСвойств.
 И вот тут засада. Ничего не заполняется.
 
 Для Каждого Стр Из ТЗ Цикл
 Если ... Тогда
 
 ЗаполнитьЗначенияСвойств(ТаблЗН.Добавить(),Стр);
 
 КонецЕсли;
 
 КонецЦикла;
 
 В новой Таблице значений создаются пустые строки с полем строка таблицы значений и таким же типом данных и все. Ни одна колонка из ТЗ не переноситься. В исходной Таблице 4 колонки.
 Что я делаю не так. Почему колонки не переносятся??
 |  |