Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

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

Как правильно найти по значениям несколько строк в тз ,сравнить и удалить
Я
   1сЮлия
 
30.05.19 - 09:39
Доброе утро! Как правильно найти по значениям несколько строк в тз ,сравнить с предыдущими значениями если  все,а не один предыдущий ,найденный показатель равен текущему, тогда удалить все найденные строки с показателями
Индекс =0;
          ЗначениеГрОлд = "";
          ЗначениеВрОлд = "";
          ЗначениеРатяжОлд = "";
          ЗначениеУдарОлд =  "";


          Для каждого Строка Из ОперацииКВЛАнализы Цикл
             Если Найти(Строка.ПоказательАнализа, "Граница текучести, МПа") Тогда
                  ЗначениеГр = Строка.ЗначениеПоказателя ;
                  Индек = ОперацииКВЛАнализы.Индекс(ЗначениеГр);
                  ЗначениеГрОлд = ЗначениеГр;
             ИначеЕсли Найти(Строка.ПоказательАнализа, "Временное сопротивление") Тогда
                  ЗначениеВр = Строка.ЗначениеПоказателя;
                  Индекс = ОперацииКВЛАнализы.Индекс(ЗначениеВр);
                  ЗначениеВрОлд = ЗначениеВр;
             ИначеЕсли Найти(Строка.ПоказательАнализа, "Относительное растяжение") Тогда
                  ЗначениеРатяж = Строка.ЗначениеПоказателя;
                  Индекс = ОперацииКВЛАнализы.Индекс(ЗначениеРатяж);
                  ЗначениеРатяжОлд = ЗначениеРатяж;
             ИначеЕсли Найти(Строка.ПоказательАнализа, "Ударная вязкость") Тогда
                  ЗначениеУдар = Строка.ЗначениеПоказателя;
                  Индекс = ОперацииКВЛАнализы.Индекс(ЗначениеУдар);
              КонецЕсли;      
              Если  (ЗначениеГрОлд = ЗначениеГр) и (ЗначениеВрОлд = ЗначениеВр) и (ЗначениеРатяжОлд =ЗначениеРатяж) Тогда
              КонецЕсли      
          КонецЦикла;
 
 
   1сЮлия
 
1 - 30.05.19 - 09:40
тогда удалить все найденные по этим значениям строки
   Fish
 
2 - 30.05.19 - 09:42
(1) В цикле строки, которые надо удалить, заносишь в массив. А потом удаляешь.
   Пузан
 
3 - 30.05.19 - 09:44
Отбор = Новый Структура;
Отбор.Добавить("ИмяПоказателя1", ИскомоеЗначение1);
Отбор.Добавить("ИмяПоказателя2", ИскомоеЗначение2);

массивНайденныеСтроки = тзДанные.НайтиСтроки(Отбор);
Для Каждого НашаСтрока Из массивНайденныеСтроки Цикл
  //Тут со строкой делаем что хотим, даже удаляем

КонецЦикла;
   1сЮлия
 
4 - 30.05.19 - 10:14
Так или неверно,проверьте пожайлуста, если можно 

          ЗначениеГрОлд = "";
          ЗначениеВрОлд = "";
          ЗначениеРатяжОлд = "";
          ЗначениеУдарОлд =  "";
          
          Отбор = Новый Структура;
          
          Для каждого Строка Из ОперацииКВЛАнализы Цикл
              Если Найти(Строка.ПоказательАнализа, "Граница текучести, МПа") Тогда
                   ЗначениеГр = Строка.ЗначениеПоказателя ;
              ИначеЕсли Найти(Строка.ПоказательАнализа, "Временное сопротивление") Тогда
                  ЗначениеВр = Строка.ЗначениеПоказателя;
              ИначеЕсли Найти(Строка.ПоказательАнализа, "Относительное растяжение") Тогда
                  ЗначениеРатяж = Строка.ЗначениеПоказателя;
              ИначеЕсли Найти(Строка.ПоказательАнализа, "Ударная вязкость") Тогда
                  ЗначениеУдар = Строка.ЗначениеПоказателя;
             КонецЕсли;      
             Если  (ЗначениеГрОлд = ЗначениеГр) и (ЗначениеВрОлд = ЗначениеВр) и (ЗначениеРатяжОлд =ЗначениеРатяж) Тогда
                    Отбор.Добавить("Граница текучести, МПа", ЗначениеГр);
                    Отбор.Добавить("Временное сопротивление", ЗначениеВр);
                    Отбор.Добавить("Относительное растяжение", ЗначениеРатяж);
                    Отбор.Добавить("Ударная вязкость", ЗначениеУдар);
 
             КонецЕсли
             
             массивНайденныеСтроки = ОперацииКВЛАнализы.НайтиСтроки(Отбор);
             Для Каждого Строка Из массивНайденныеСтроки Цикл
                ОперацииКВЛАнализы.Удалитьстроку(Строка);
             КонецЦикла;
 
              ЗначениеГрОлд = ЗначениеГр;
              ЗначениеВрОлд = ЗначениеВр;
              ЗначениеРатяжОлд = ЗначениеРатяж;
              ЗначениеУдар = ЗначениеУдарОлд; 
 

          КонецЦикла;
   1сЮлия
 
5 - 30.05.19 - 10:20
Пардон это вынести 
  НайденныеСтроки = ОперацииКВЛАнализы.НайтиСтроки(Отбор);
          Для Каждого Строка Из массивНайденныеСтроки Цикл
            ОперацииКВЛАнализы.Удалитьстроку(Строка);
                КонецЦикла;
   1сЮлия
 
6 - 30.05.19 - 10:37
Как правильно добавить значение в отбор?
   hhhh
 
7 - 30.05.19 - 10:49
(6) отбор - это такая структура. Там должно быть Ключ и Значение.
   1сЮлия
 
8 - 30.05.19 - 10:50
Я поняла спасибо,я уже в массив определила
   1сЮлия
 
9 - 30.05.19 - 10:56
ругается найти строки в массив дубли добавляет найти строки не может мне нужно еще как то индексы удаляемых строк,он же мне все удалит,где дубли,а мне нужно хотя бы чтобы значения были и не дублировались по показателям
   1сЮлия
 
10 - 30.05.19 - 10:57
удал =  Новый Массив;
  
    
          Для каждого Строка Из ОперацииКВЛАнализы Цикл
              
              Если Найти(Строка.ПоказательАнализа, "Граница текучести, МПа") Тогда
                   ЗначениеГр = Строка.ЗначениеПоказателя ;
              ИначеЕсли Найти(Строка.ПоказательАнализа, "Временное сопротивление") Тогда
                  ЗначениеВр = Строка.ЗначениеПоказателя;
              ИначеЕсли Найти(Строка.ПоказательАнализа, "Относительное растяжение") Тогда
                  ЗначениеРатяж = Строка.ЗначениеПоказателя;
              ИначеЕсли Найти(Строка.ПоказательАнализа, "Ударная вязкость") Тогда
                  ЗначениеУдар = Строка.ЗначениеПоказателя;
              КонецЕсли;      
              
              Если  (ЗначениеГрОлд = ЗначениеГр) и (ЗначениеВрОлд = ЗначениеВр) и (ЗначениеРатяжОлд =ЗначениеРатяж) Тогда
                   удал.Добавить(ЗначениеГр);
                   удал.Добавить(ЗначениеВр);
                   удал.Добавить(ЗначениеРатяж);
              КонецЕсли;
              ЗначениеГрОлд = ЗначениеГр;
              ЗначениеВрОлд = ЗначениеВр;
              ЗначениеРатяжОлд = ЗначениеРатяж;
              ЗначениеУдар = ЗначениеУдарОлд; 
 
          КонецЦикла; 
           
          НайденныеСтроки = ОперацииКВЛАнализы.Найти(удал);
          Для Каждого Строка Из НайденныеСтроки Цикл
            ОперацииКВЛАнализы.Удалитьстроку(Строка);
          КонецЦикла;
   1сЮлия
 
11 - 30.05.19 - 11:10
Так наверное    
 Для Каждого УдаляемаяСтрока из УдаляемыеСтроки Цикл
               ОперацииКВЛАнализы.Удалить(УдаляемаяСтрока);
 КонецЦикла;
   1сЮлия
 
12 - 30.05.19 - 11:20
Как удалить строку из таблицы значений по индесу
   1сЮлия
 
13 - 30.05.19 - 11:21
по индексу извините я так понимаю нужно занести индексы в массив строк дубликатов и удалить из тз строки по индексу
   1сЮлия
 
14 - 30.05.19 - 15:37
ничего почему то не удаляет
   1сЮлия
 
15 - 30.05.19 - 15:37
//    КонецЦикла; 

      Для каждого Строка Из ОперацииКВЛАнализы Цикл
              
              Если Найти(Строка.ПоказательАнализа, "Граница текучести, МПа") Тогда
                   ПоказательГр = Строка.ПоказательАнализа; 
                   ЗначениеГр = Строка.ЗначениеПоказателя ;
              ИначеЕсли Найти(Строка.ПоказательАнализа, "Временное сопротивление") Тогда
                   ПоказательВр = Строка.ПоказательАнализа; 
                     ЗначениеВр = Строка.ЗначениеПоказателя;
              ИначеЕсли Найти(Строка.ПоказательАнализа, "Относительное растяжение") Тогда
                  ПоказательРастяж = Строка.ПоказательАнализа; 
                  ЗначениеРатяж = Строка.ЗначениеПоказателя;
              ИначеЕсли Найти(Строка.ПоказательАнализа, "Относительное сужение") Тогда
                  ПоказательСуж =Строка.ПоказательАнализа;
                     ЗначениеСуж = Строка.ЗначениеПоказателя;
              ИначеЕсли Найти(Строка.ПоказательАнализа, "Ударная вязкость") Тогда
                  ПоказательУдар = Строка.ЗначениеПоказателя;
                  ЗначениеУдар = Строка.ЗначениеПоказателя;
              КонецЕсли;      
              
              Если  (ЗначениеГрОлд = ЗначениеГр) и (ЗначениеВрОлд = ЗначениеВр) и (ЗначениеРатяжОлд =ЗначениеРатяж) и  (ЗначениеСужОлд  = ЗначениеСуж) и (ЗначениеУдарОлд = ЗначениеУдар)Тогда
                  
                  ФЛАГ = 1;
                       
                  удаляемые.Добавить(ЗначениеГр);
                  удаляемые.Добавить(ЗначениеВр);
                  удаляемые.Добавить(ЗначениеРатяж);
                  удаляемые.Добавить(ЗначениеСуж);
                  удаляемые.Добавить(ЗначениеУдар);
         
              Иначе
                  ФЛАГ = 0;
                                 
              КонецЕсли;
              ЗначениеГрОлд = ЗначениеГр;
              ЗначениеВрОлд = ЗначениеВр;
              ЗначениеРатяжОлд = ЗначениеРатяж;
              ЗначениеУдарОлд = ЗначениеУдар; 
              ЗначениеСужОлд  = ЗначениеСуж; 
              
             Если  ФЛАГ = 1  Тогда
                 
                 Отбор = Новый Структура("ЗначениеПоказателя");
                   
               Для Каждого ЭлМассива Из удаляемые Цикл
                 Отбор.Вставить("ЗначениеПоказателя",ЭлМассива);
                 Строки=ОперацииКВЛАнализы.НайтиСтроки(Отбор);
                 ОперацииКВЛАнализы.Удалить(Строка);
                КонецЦикла;      
          КонецЕсли;
   Serginio1
 
16 - 31.05.19 - 17:16
   ejikbeznojek
 
17 - 31.05.19 - 17:28
Для Каждого ЭлМассива Из удаляемые Цикл
                 ОперацииКВЛАнализы.Удалить(ОперацииКВЛАнализы(индекс(Строка)));
               КонецЦикла;
   ejikbeznojek
 
18 - 31.05.19 - 17:28
точнее не строка а элмассива

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.