1с как удалить строку из табличной части
Перейти к содержимому

1с как удалить строку из табличной части

  • автор:

Удаление строки табличной части документа из обработки

Подскажите, плиз. Только начал изучать 8ку. Задание — выбрать в обработке документ, удалить из табличной части строки, подходящие по условию.
Написал код:
ТекДтовары = Объект.ДокументРеализация.Товары;
Для каждого ТекСтрТов из ТекДТовары цикл
Если ТекСтрТов.Цена < 150 Тогда
Сообщить("Строка Цена "+ТекСтрТов.Цена + ". Удаляем строку.");
ТекДТовары.Удалить(ТекСтрТов.НомерСтроки);
Иначе
Сообщить("Строка Цена "+ТекСтрТов.Цена);
КонецЕсли;
КонецЦикла;
Объект.ДокументРеализация.Записать();

Но строка не удаляется. "Объект недоступен для изменения."
ЧЯДНТ?

(5) Из реквизита обработки. Пользователь выбирает.

(8) Вот удалить и не получается 🙁

Объект.ДокументРеализация.Товары кто это?
Тебе правильно говорили, что нужно получитьОбъект чтобы у него что-то менять.

как ты будешь удалять строки это уже второй вопрос, но первоначальный твой подход неверный. т.к. после удаления даже первой ненужной строки у тебя нарушается цикл для каждого.

Есть разные способы.

Тормознул. Сейчас поправил код, строка удалилась, док записался.
вот код:

Осталось проверить, как будет удалять строки в середине таблицы — не будет ли пропускать строки после удаления строки.

(19) Ну, собссно, я и не сомневался, в 7ке так же пропускает следующую строку после удаленной.

(20) Спасибо, это рабочий вариант! 🙂

Скажите, а если по моему варианту работать, но спозиционироваться после удаления на одну строку назад — такое возможно? Какой командой?

(22) Угу. А если будет подряд две строки с Количеством=2? Или три?
Если они идут хотя бы через одну — то да, все нормально. А вот если подряд хотя бы две — то увы, облом.

Тут, по идее, как вариант — множественное прохождение цикла по строкам, когда при хотя бы единственном удалении — включать флажок повторного прохождения, и опять крутить цикл.
Но я хотел обойтись без этого, а просто после удаления строки спозиционироваться на текущейстроке — 1.
как-то так. Просто синтаксис в 8ке не знаю еще, вот и спрашиваю — такое возможно.

Немного потерял суть вопроса, но думаю, что дело все еще в удалении строк из тч, удовлетворяющему некоему условию.

""Просто синтаксис в 8ке не знаю еще, вот и спрашиваю — такое возможно.

Для синтаксиса есть синтаксис помощник. Для много другого — глобальный поиск. Вот к примеру сочетание букв "удалитьстрок" в глобальном поиске открывает кучу методов, первый в списке найденных является решением вопроса.

Кстати недавно опять ей пользовался. Сокращенный вариант:

(24) Нет, как удалить строки, я уже понял, вопрос еще один задал — как спозиционироваться на конкретной строке в таблице (это если использовать мой вариант кода из (18))?
Вы уже на вопрос ответили в коде.

про синтаксис помощник знаю, но как он поможет, если не знаю, как пишется команда? (Посмотрел на него, там иная совершенно структура, по сравнению с 7кой, к ней еще привыкнуть надо). Я про позиционирование на конкретной строке. За "глобальный поиск" спасибо — редко пользовался, забыл тут использовать.

(24) и (25) Вопрос. Вот у вас Инд = 2. Вы удалили эту строку. Теперь на следующем шаге цикла, с Инд=3, у вас какая строка будет? ИМХО (исходя из опыта на 7ке), это уже не 4я оригинальная, а 5я, т.е. одну строку Вы пропустили из проверки. Я не прав?

(26) Туда. Пытался сам справиться, но слишком мало знаю 🙁
А что, Вы там работаете?

(28) Вот то-то и оно 🙂 Получается, что надо использовать счетчик, как в (24) или (25), и при удалении строки — уменьшать его на единицу.

(29) >>Вот у вас Инд = 2. Вы удалили эту строку. Теперь на следующем шаге цикла, с Инд=3, у вас какая строка будет? ИМХО (исходя из опыта на 7ке), это уже не 4я оригинальная, а 5я, т.е. одну строку Вы пропустили из проверки. Я не прав?

Цикл перебирает строки с конца. Удалил 4-ю строку — цикл переходит на 3-ю и пофиг, что вместо удаленной 4-й встала 5-я.

1С Как удалить строки из табличной части документа

Практически во всех документах которые есть в типовых конфигурациях 1С присутствует табличная часть и порой даже не одна. Поэтому каждый должен уметь обрабатывать её программно, заполнять, добавлять удалять строки, производить пересчет и многое другое. Задачи подобного рода Вам будут встречаться очень часто. Обо все об этом в одной статье рассказать не получиться, поэтому сначала расскажу о том как можно удалить строки из ТЧ документов. Делается это на самом деле достаточно просто, удалить можно не все строки а только необходимые по определенным условиям.

Команда для удаления строк из табличной части по условию 1С

На первых этапах с этим будет гораздо проще разобраться на примере простого документа созданного вами лично, так как в нем будет минимум кода. Я для примера так же создам новый документ «Поступление» с табличной частью «Товары». У которой будет несколько реквизитов «Номер», «Наименование», «Количество», «Цена», «НДС» и «Комментарий», кстати последний реквизит добавлен на форму программно, об этом можете прочитать в предыдущей статье.

Давайте будем удалить не все строки а скажем те у которых нет НДС.

Удаление строк из ТЧ

Первым делам создадим новую команду «Удалить строки бех НДС» и разместим её на форме.

1С Как удалить строки из табличной части документ

Теперь в процедуре напишем вот такой код.

Постарался весь код описать но если остались вопросы пишите!

Команда для удаления строк из табличной части по условию 1С

Сохраняем конфигурацию, открываем документ и нажимаем на кнопку «Удалить строки без НДС».

1С Удаление строк из табличной части документа

Если Вы все сделали правильно то 1 и 5 строка должны удалиться из документа.

1С Удаление строк из табличной части документа по условию

Условие можно изменить на любое другое, например удалять строки с определенной ценой, количеством и т.д. Главное на начальном этапе понять принцип.

Как программно удалить строки из табличной части по условию

В статье рассмотрено несколько основных алгоритмов удаления строк из табличной части по условию. Каждый из вариантов по своему хорош, вам нужно подобрать для себя наиболее подходящий. Оглавление (нажмите, чтобы раскрыть) Первый вариант удаления строк по условию Второй вариант удаления строк […]

Другое в 1С
  • 1С: Массивы и коллекции. Массивы
  • Как передать структуру в параметр. Конвертация данных
  • Менеджер заданий не активен. Как исправить
  • Как пропорционально распределить сумму
  • Как программно отключить регистрацию объектов в планах обмена при записи объекта

Удаление строк из табличных частей по условию

В статье рассмотрено несколько основных алгоритмов удаления строк из табличной части по условию. Каждый из вариантов по своему хорош, вам нужно подобрать для себя наиболее подходящий.

Добавить комментарий

Ваш адрес email не будет опубликован.