8.х Программное удаление строки Таблицы значений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Amplifier, 8 июл 2010.

  1. TopicStarter Overlay
    Amplifier
    Offline

    Amplifier Опытный в 1С

    Регистрация:
    5 май 2010
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    26
    Интересует принцип действия метода удалить таблицы значения.
    Ситуация такая:
    Есть цикл, который выполняет свою задачу и попутно проверяет три поля строки таблицы значения на значение Истина.
    Если все три поля
    Код:
     <>Истина 
    
    
    то удаляет строку таблицы значения.

    Правильно ли составлен синтаксис

    Код:
    Если СтрТз.Поле1<>Истина  и  СтрТз.Поле2<>Истина   и   СтрТз.Поле3<>Истина  Тогда
    ТаблицаЗначения.Удалить(СтрТз);
    КонецЕсли; 
    
    
    А вопрос такой будет удалена только текущая строка (СтрТз) таблицы значения?

    Синтаксис-помощник смотрел, тему создал чтобы подстраховаться.
    Так что если кто знает точно, подскажите пожалуйста.
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    все точно знают то же что и синтаксис помошник. что да удаляет строку. Что бы подстраховаться можете на копии попробывать.

    И можете написать так

    ТаблицаЗначения.Удалить(ТаблицаЗначения.Индекс(СтрТз))
  3. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Код:
    Если НЕ (СтрТз.Поле1  ИЛИ  СтрТз.Поле2 ИЛИ СтрТз.Поле3)  Тогда
    ТаблицаЗначения.Удалить(СтрТз);
    КонецЕсли;
    
    
    Да, текущая строка.
    Уже бы проверили давно.. :)
  4. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Тут еще такой нюанс есть. Когда строка таблицы значений удаляется, следующая строка встает на ее место (т.е. все строки сдвигаются на позицию вверх). А при каждом проходе цикла, как я понял, проверяется отдельная строка таблицы значений. Поэтому при следующем проходе цикла строка, которая стоит после удаляемой строки, может быть пропущена циклом (проверяться не будет).
  5. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Ньюанс обходится как минимум двумя способами:
    1. Бежим по таблице "снизу вверх".
    2. Если есть возможность отобрать строки методом НайтиСтроки(), то используем его.

Поделиться этой страницей