Лишние строки при удалении строк из таблицы значений
Доброго времени суток. Есть обработка (ОФ) с заполнением таблицы значений на форме. При удалении строк через индекс в таблице остается 119 строк, при удалении через Таблица.Удалить(Строка) - 140. Количество строк до удаления в обоих случаях 163. Помогите, пожалуйста, разобраться, какой метод правильнее, и почему такая разница в количестве строк?
Индекс = ТаблицаДБФ.Количество() - 1;
Пока Индекс >= 0 Цикл
Для Счетчик = 0 По ТаблицаДБФ.Количество() - 1 Цикл ////////ТаблицаДБФ - Табличная часть обработки
Номенклатура = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(ТаблицаДБФ[Индекс].КодНоменклатуры));
Если Номенклатура.Пустая() Тогда
Сообщить("Номенклатура с кодом " + СокрЛП(ТаблицаДБФ[Индекс].КодНоменклатуры) + " отсутствует.", СтатусСообщения.Внимание);
ТаблицаДБФ.Удалить(Индекс);
Прервать;
КонецЕсли;
КонецЦикла;
Индекс = Индекс-1;
КонецЦикла;
//////////////////////////////////////////////////////////// //////////////////////////////----------------------------------------------------------------------------------
Для Каждого Строка Из ТаблицаДанных Цикл ///////////////////////ТаблицаДанных - Таблица значений , созданная программно
Номенклатура = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(СтрЗаменить(Строка.КодНоменклатуры, Символы.НПП, "")));
Если Номенклатура.Пустая() Тогда
Сообщить("Номенклатура с кодом " + СокрЛП(СтрЗаменить(Строка.КодНоменклатуры, Символы.НПП, "")) + " отсутствует.", СтатусСообщения.Внимание);
ТаблицаДанных.Удалить(Строка);
КонецЕсли;
КонецЦикла;
Для Каждого Строка Из ТаблицаДанных Цикл
ЗаполнитьЗначенияСвойств(ТаблицаДБФ.Добавить(), Строка);
КонецЦикла;
ПоказатьПо теме из базы знаний
- Таблица значений. Нюансы
- Множественный выбор значения дополнительного свойства при обмене с сайтом на Битрикс
- Строковые отборы в 1С
- Удаление дублей характеристик номенклатуры (поиск по значениям реквизитов, а не по названию)
- Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0
Найденные решения
(3)
хотя и он неправильно удаление сделает
как вариант можно:
хотя и он неправильно удаление сделает
как вариант можно:
новаяТабличка = ТаблицаДБФ.Скопировать();
НоваяТабличка.Очистить();
Для каждого строчки из ТаблицаДБФ Цикл
Если Не Номенклатура.Пустая() Тогда
НоваяСтрочка = НоваяТабличка.Добавить();
НоваяСтрочка.Номенклатура = Строчки.Номенклатура;
...
...
КонецЕсли;
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
хотя и он неправильно удаление сделает
как вариант можно:
хотя и он неправильно удаление сделает
как вариант можно:
новаяТабличка = ТаблицаДБФ.Скопировать();
НоваяТабличка.Очистить();
Для каждого строчки из ТаблицаДБФ Цикл
Если Не Номенклатура.Пустая() Тогда
НоваяСтрочка = НоваяТабличка.Добавить();
НоваяСтрочка.Номенклатура = Строчки.Номенклатура;
...
...
КонецЕсли;
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот