Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 09:16

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

Автор sergqwert, 05 дек 2012, 04:33

0 Пользователей и 1 гость просматривают эту тему.

sergqwert

Нужен алгоритм удаления строк из таблицы значений по заданному условию(платформа 1с 8). На входе таблица:
Код                 Артикул
0001           432AB432
0002            321DC321
0003            634CG345
0004           345PC324
0005           324FQ543
0006           234PG244
0007            234GG432

Необходимо удалить все строки, в артикуле которых встречается символ "С" или символ "G".
Сделал обработку, но строки не удаляются почему-то. Помогите, пожалуйста.
Код:

Процедура КнопкаВыполнитьНажатие(Кнопка)
   ТаблицаЗначений = Новый ТаблицаЗначений;
   // создаем нужные колонки
   ТаблицаЗначений.Колонки.Добавить("Код");
   ТаблицаЗначений.Колонки.Добавить("Артикул");
   // Добавим новую строку и зададим значения в колонках таблицы
   НоваяСтрока = ТаблицаЗначений.Добавить();
   НоваяСтрока.Код = 0001;
   НоваяСтрока.Артикул = "432AB432";
    НоваяСтрока = ТаблицаЗначений.Добавить();
   НоваяСтрока.Код = 0002;
   НоваяСтрока.Артикул = "321DC321";           
   НоваяСтрока = ТаблицаЗначений.Добавить();
   НоваяСтрока.Код = 0003;
   НоваяСтрока.Артикул = "634CG345";
   НоваяСтрока = ТаблицаЗначений.Добавить();
   НоваяСтрока.Код = 0004;
   НоваяСтрока.Артикул = "345PC324";
   НоваяСтрока = ТаблицаЗначений.Добавить();
   НоваяСтрока.Код = 0005;
   НоваяСтрока.Артикул = "324FQ543";
    НоваяСтрока = ТаблицаЗначений.Добавить();
   НоваяСтрока.Код = 0006;
   НоваяСтрока.Артикул = "234PG244";
   НоваяСтрока = ТаблицаЗначений.Добавить();
   НоваяСтрока.Код = 0007;
   НоваяСтрока.Артикул = "234GG432";
      
КонецПроцедуры

Процедура ОсновныеДействияФормыУдалитьСтроки(Кнопка)
   // удалим все строки по заданному условию
   Сч = 0;
   Пока Сч < ТаблицаЗначений.Количество() Цикл
   НоваяСтрока = ТаблицаЗначений.Получить(Сч);
   // заменить символы C, G на кавычки
   НоваяСтрока.Артикул = СтрЗаменить(НоваяСтрока.Артикул, "C", """");
   НоваяСтрока.Артикул = СтрЗаменить(НоваяСтрока.Артикул, "G", """");
   Если НоваяСтрока = """" Тогда
      // удалить строки, в которых присутствуют кавычки
      ТаблицаЗначений.Удалить(НоваяСтрока);
   Иначе
      Сч = Сч + 1;
   КонецЕсли;
   КонецЦикла;

КонецПроцедуры

Slin

Непонятно зачем вы меняете буквы на кавычку.
Теперь собственно ответ на вопрос. Зачем вы сравниваете НоваяСтрока с кавычкой? Она никогда не будет равна, хотя бы потому, что разные типы (СтрокаТаблицыЗначений и Строка). Использовать нужно НоваяСтрока.Артикул. И не сравнивать, а искать.
skype: slin-dev

dimalf

Можно создать ещё одну ТЗ с теми же колонками и если строка из ТЗ1 не содержит "С" или "G" или других символов, записывать её в ТЗ2

Dethmontt

Процедура ОсновныеДействияФормыУдалитьСтроки(Кнопка)
   
    Массив= Новый Массив;
    Для Сч=0 Из ТаблицаЗначений.Количество()-1 Цикл
       Если Найти(ТаблицаЗначений[сч].Артикул,"C") > 0 или Найти(ТаблицаЗначений[сч].Артикул,"G") > 0 Тогда
          Массив.Добавить(Сч);
       КонецЕсли;
    КонецЦикла;
   
    Для Сч=0 По Массив.ВГраница() Цикл
       ТаблицаЗначений.Удалить(Массив[Массив.ВГраница()-Сч]);
    КонецЦикла;   

КонецПроцедуры
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск