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

По теме из базы знаний
- Удаление строк из таблицы значений по критерию
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Модель запроса SQL
- Удаление строк из таблицы значений различными способами с замером производительности
- Применение ChatGPT в 1С и не только
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
1) Условие не верно, в нем нет смысла.
2) Нельзя удалять строки из коллекции в том же цикле, в каком обходите эту коллекцию.
Добавьте строки, которые требуется удалить в отдельный массив, после этого цикла обойдите массив и удалите строки.
1) Условие не верно, в нем нет смысла.
2) Нельзя удалять строки из коллекции в том же цикле, в каком обходите эту коллекцию.
Добавьте строки, которые требуется удалить в отдельный массив, после этого цикла обойдите массив и удалите строки.
Как минимум код
при желании можно и одним циклом, но это если интересно.
НайденныеСтроки = Корзина.НайтиСтроки(Новый Структура("Номенклатура", ВыбраннаяСтрока));
смысла не имеет, в переменной ВыбраннаяСтрока значение имеет тип ЭлементСпискаЗначения, а их точно нет в колонке "Номенклатура" ТЗ Корзина, видимо надо использовать для поиска ВыбраннаяСтрока.Значение, а код удаления Для каждого ТекСтрока Из Корзина Цикл
Если НЕ ТекСтрока <> Неопределено Тогда
Корзина.Удалить(ТекСтрока);
КонецЕсли;
КонецЦикла;
должен выглядетьЕсли НЕ ТекСтрока <> Неопределено Тогда
Корзина.Удалить(ТекСтрока);
КонецЕсли;
КонецЦикла;
УдаляемыеСтроки = Новый Массив;
Для Каждого ТекСтрока Из Корзины Цикл
// здесь какое-то условие из вашей бизнес-логики
Если Не ЗначениеЗаполнено(ТекСтрока.номенклатура) Тогда
УдаляемыеСтроки.Добавить(ТекСтрока);
КонецЦикла;
Для Каждого ТекСтрока Из УдаляемыеСтроки Цикл
Корзина.Удалить(ТекСтрока);
КонецЦикла;
Показатьпри желании можно и одним циклом, но это если интересно.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот