Имя: Пароль:
1C
1C 7.7
v7: Удаление строки в таблице значений
, ,
0 ВащеНеуч
 
19.10.17
14:10
Есть некоторая таблица значений (в ней информация с банковских выписок). Инфу выборочно надо загрузить в документ 1С выписка.

    Пока ТЗ_1.ПолучитьСтроку() = 1 Цикл                                                                                                                                              
        Если (((ПустаяСтрока(ТЗ_1.ПервичныйДокумент)=1) и (ТЗ_1.ВИдДвижения <> Перечисление.ВидыДвиженийПоРасчетномуСчету.Поступление) и (Лев(ТЗ_1.НомДок,2)<>"ОК"))) Тогда
                ТЗ_1.УдалитьСтроку(ТЗ_1.ТекущаяСтрока());
        КонецЕсли;
    КонецЦикла;          
    
      ЗагрузитьТабличнуюЧасть(ТЗ_1);
выдает ошибку
ТЗ_1.УдалитьСтроку(ТЗ_1.ТекущаяСтрока());
{Документ.ВыпискаНовейшая.Форма.Модуль(814)}: Номер за пределами значения!
1 1dvd
 
19.10.17
14:12
удаление строк внутри перебора. классика
2 ikea
 
19.10.17
14:12
Удалять нужно с конца таблицы.
3 ВащеНеуч
 
19.10.17
14:13
(1), (2) просветите
4 ikea
 
19.10.17
14:13
(3) в яндексе забанили?
5 Масянька
 
19.10.17
14:14
(3) У тебя в таблице:
1
2
3
4
5
6
7
8
9
Ты удаляешь строку под номером 5.
Думай, Чапай, думай.
6 1dvd
 
19.10.17
14:15
Для Идн = -ТЗ_1.КоличествоСтрок() По -1 Цикл
    ТЗ_1.ПолучитьСтрокуПоНомеру(-Идн);
    Если ...
        ТЗ_1.УдалитьСтроку(-Идн);
    КонецЕсли;
КонецЦикла;
7 oslokot
 
19.10.17
14:23
После УдалитьСтроку() вставь ВыбратьСтроки()
:)
8 ВащеНеуч
 
19.10.17
14:27
спасибо всем. кажется получилось
9 1dvd
 
19.10.17
14:28
можно ещё как в этих ваших восьмёрках делают - список строк к удалению подготовить
10 Волшебник
 
модератор
19.10.17
14:28
В восьмёрке всё это реализовано грамотно.
11 1dvd
 
19.10.17
14:29
(10) там та же проблема
12 oslokot
 
19.10.17
14:30
(11) какая проблема? подготовить массив ссылок к удалению и удалить?
13 1dvd
 
19.10.17
14:31
(12) именно. нельзя как в (0) с одного наскока удалить
14 Сияющий Асинхраль
 
19.10.17
14:50
Еще замечание в цикле нельзя пользовать ТекущаяСтрока(), эта штука работает только на форме, в цикле должно быть что-то вроде ТЗ_1.НомерСтроки...
15 1dvd
 
20.10.17
06:47
(14) ты клюшки со снеговиком не путай
16 VladZ
 
20.10.17
06:49
(0) Ну ты неуч ваще... Кто ж так удаляет?
17 KishMish
 
20.10.17
07:55
(0) вот так вот удаляется в 7
изменения КАПСОМ
Если на ПОКА
Тогда на ЦИКЛ
КонецЕсли на КОНЕЦЦИКЛА
и в цикле добавитьусловие на проверку номера строки
Пока ТЗ_1.ПолучитьСтроку() = 1 Цикл                                                                                                                                              
        ПОКА(((ПустаяСтрока(ТЗ_1.ПервичныйДокумент)=1) и (ТЗ_1.ВИдДвижения <> Перечисление.ВидыДвиженийПоРасчетномуСчету.Поступление) и (Лев(ТЗ_1.НомДок,2)<>"ОК"))) И (ТЗ_1.НОМЕРСТРОКИ<>0) ЦИКЛ
                ТЗ_1.УдалитьСтроку(ТЗ_1.ТекущаяСтрока());
        КОНЕЦЦИКЛА;
    КонецЦикла;
18 ---Fix---
 
20.10.17
08:25
(17) самый удобный вариант, а в больших таблицах еще и отстортировывать по удаляемому критерию.
19 NikVars
 
20.10.17
10:47
(0) http://www.mista.ru/tutor_1c/
Смотри раздел ТаблицаЗначений
20 uno-group
 
20.10.17
11:31
ВсегоСтрок=Тз.КоличествоСтрок()
Для К=1 По Всегострок Цикл
Ном=ВсегоСтрок+1-К;
Тз.ПолучитьСтрокуПоНомеру(Ном);
//Проверка условия.
Тз.УдалитьСтроку(ном);
КонецЦикла;
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн