удаления строки из ТЗ по условию

1. drakon044 11.01.24 09:02 Сейчас в теме
Доброе утро, столкнулся с проблемой удаления строки из ТЗ при выполнении условия. Задача состоит в том, что если в ТЗ есть пустая строка, то она должна удалится по кнопке Перенести - Функция "ПеренестиВДокумент". При отладке ошибок нет, но значение ТекСтрока - не получает никакого значения. На 3 картинке видно ТЗ и ее реквизиты. И вопрос, где может быть моя ошибка. Заранее спасибо.
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	НайденныеСтроки = Корзина.НайтиСтроки(Новый Структура("Номенклатура", ВыбраннаяСтрока));
	
	Если ПроверитьНаГруппу(ВыбраннаяСтрока) Тогда 
		ПоказатьПредупреждение(,"Нельзя выбрать группу") 
	Иначе
		Если НайденныеСтроки.Количество()>0 Тогда
			НайденныеСтроки[0].Количество = НайденныеСтроки[0].Количество + 1;
		Иначе
			НоваяСтрока = Корзина.Добавить();
			НоваяСтрока.Номенклатура = ВыбраннаяСтрока;
			НоваяСтрока.Количество = 1;
		КонецЕсли;
	КонецЕсли;
	
Конецпроцедуры

&НаКлиенте
Процедура ПеренестиВДокумент(Команда)
	
	Для каждого ТекСтрока Из Корзина Цикл
		
		Если НЕ ТекСтрока <> Неопределено Тогда
			Корзина.Удалить(ТекСтрока);
		КонецЕсли;
		
	КонецЦикла;
	
	Адрес = ПоместитьТоварыИзКорзиныВХранилицще();
		ОповеститьОВыборе(Адрес);

КонецПроцедуры
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 11.01.24 09:58 Сейчас в теме
(1)Чтобы удалить все строки из таблицы, достаточно использовать метод Очистить().
3. drakon044 11.01.24 10:14 Сейчас в теме
(2)Но мне же нужно удалить строки согласно условию, что они будут пустыми. И для этого мой код лучше подойдет, но в нем есть какая-то ошибка. И хотел чтобы указали где в моем коде возможно есть ошибка, или модернизировали его
4. romulanin 11.01.24 10:17 Сейчас в теме
(3) 1. Если НЕ ТекСтрока <> Неопределено в чем смысл такого условия ? Используй ЗначениеЗаполнено()
2. Сейчас из кода понятно, что условие всегда будет ложь, т.е. при обходе циклом неопределено не может быть.
5. Sashares 35 11.01.24 10:19 Сейчас в теме
(4)
Используй ЗначениеЗаполнено()

Процитирую классика.
в чем смысл такого условия ?

=)
7. romulanin 11.01.24 10:23 Сейчас в теме
(5)
ЗначениеЗаполнено


это не призыв к действию в данном случае. А совет использовать вместо конструкции "НЕ <>"
6. Sashares 35 11.01.24 10:22 Сейчас в теме
(3)
1) Условие не верно, в нем нет смысла.
2) Нельзя удалять строки из коллекции в том же цикле, в каком обходите эту коллекцию.
Добавьте строки, которые требуется удалить в отдельный массив, после этого цикла обойдите массив и удалите строки.
user1582372; user705522_constantin_h; +2 Ответить
8. romulanin 11.01.24 10:32 Сейчас в теме
(6)можно обходить тз обратным циклом
9. user779438 12.01.24 23:42 Сейчас в теме
Как минимум код
НайденныеСтроки = Корзина.НайтиСтроки(Новый Структура("Номенклатура", ВыбраннаяСтрока));
смысла не имеет, в переменной ВыбраннаяСтрока значение имеет тип ЭлементСпискаЗначения, а их точно нет в колонке "Номенклатура" ТЗ Корзина, видимо надо использовать для поиска ВыбраннаяСтрока.Значение, а код удаления
Для каждого ТекСтрока Из Корзина Цикл

Если НЕ ТекСтрока <> Неопределено Тогда
Корзина.Удалить(ТекСтрока);
КонецЕсли;

КонецЦикла;
должен выглядеть
УдаляемыеСтроки = Новый Массив;
Для Каждого ТекСтрока Из Корзины Цикл
// здесь какое-то условие из вашей бизнес-логики
Если Не ЗначениеЗаполнено(ТекСтрока.номенклатура) Тогда
УдаляемыеСтроки.Добавить(ТекСтрока);
КонецЦикла;
Для Каждого ТекСтрока Из УдаляемыеСтроки Цикл
Корзина.Удалить(ТекСтрока);
КонецЦикла;
 
Показать

при желании можно и одним циклом, но это если интересно.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот