Имя: Пароль:
1C
 
v8: Платформа 8.2: Подскажите как удалить строку из табличной части?
0 Adilgeriy
 
14.04.09
12:17
Доброго времени суток.
Подскажите как удалить строку из табличной части.
&НаКлиенте
Процедура ОбработатьВыполнить()
   Объект.Обработан=Истина;
   Для Каждого ТекСтрокаДанные из Объект.Данные Цикл
       
       Если   ТекСтрокаДанные.Группа<> Объект.ВозрастнаяГруппа Тогда
           //ЗдесьНадо удаоитьтекущуюстроку;

       КонецЕсли;
   КонецЦикла;
КонецПроцедуры
1 FanatToNight
 
14.04.09
12:24
а через ТЗ не прокатит?
2 1Cv8exe
 
14.04.09
12:35
Прошу прощения, что не в тему. Просто небольшой вопрос по 8.2 тему для это не хочу создавать.
Кто знает при работе через веб-клиент лицензии используются?
3 Adilgeriy
 
14.04.09
12:37
Может и пркатит до грузить туда обратно както не охото
4 nop
 
14.04.09
12:37
(2) за создание темы вроде ещё никого не наказывали
5 SMakcik
 
14.04.09
12:42
(0) Создавай массив строк которые необходимо удалить. Потом удаляй
6 Adilgeriy
 
14.04.09
14:51
Типа Так?
Процедура ОбработатьВыполнить()
   Объект.Обработан=Истина;
   ПараметрыОтбора = Новый Структура;
   ПараметрыОтбора.Вставить("Группа", Объект.ВозрастнаяГруппа);
   НайденныеСтроки = Объект.Данные.НайтиСтроки(ПараметрыОтбора);
     НайденныеСтроки.Очистить();
КонецПроцедуры
Так вроде не удаляет и мне нужно не равен Объект.ВозрастнаяГруппа
7 TitanLuchs
 
14.04.09
15:00
&НаКлиенте
Процедура ОбработатьВыполнить()
   Объект.Обработан=Истина;
   Для Каждого ТекСтрокаДанные из Объект.Данные Цикл
       
       Если   ТекСтрокаДанные.Группа<> Объект.ВозрастнаяГруппа Тогда
           //ЗдесьНадо удаоитьтекущуюстроку;
           Объект.Данные.Удалить(ТекСтрокаДанные);

       КонецЕсли;
   КонецЦикла;
КонецПроцедуры


не катит?
8 vmv
 
14.04.09
15:04
при чем тут 7, 8 или 9 версия. Удаление строк фиксированных коллекций, как вравило, абсурдно выполнять при обходе этой же коллекции
9 TitanLuchs
 
14.04.09
15:19
(8) Почему, можно, только надо организовать счетчик от количества строк до нуля, получать строку по счетчику, проверять условие, если надо строку удалять и сетчик уменьшать
10 AquaKosh
 
14.04.09
15:20
(8) При прямом проходе - да. А в обратном - нормально всё.
11 Adilgeriy
 
14.04.09
16:06
Процедура ОбработатьВыполнить()
   Объект.Обработан=Истина;
   Счетчик=0;
   Для    Счетчик=Объект.Данные.Количество() по   0 цикл

       Объект.Данные.Получить(Счетчик);
       Предупреждение(счетчик,1);
       Если Объект.Данные.Группа<> Объект.ВозрастнаяГруппа Тогда
           Объект.Данные.Удалить(Счетчик);
       КонецЕсли;

   КонецЦикла;
   
КонецПроцедуры
и как его в обратную сторону запустить?
12 AquaKosh
 
14.04.09
16:20
(11) Типа так (общий принцип):
           КоличествоЭлементовКоллекции = ПодразделенияДопРеквизита.Количество();
           Для ОбратныйИндекс = 1 По КоличествоЭлементовКоллекции Цикл
               ЭлементКоллекции = ПодразделенияДопРеквизита[КоличествоЭлементовКоллекции - ОбратныйИндекс];
               Если СтрокиКУдалению.Найти(ЭлементКоллекции) <> Неопределено Тогда
                   ПодразделенияДопРеквизита.Удалить(ЭлементКоллекции);
               КонецЕсли;
           КонецЦикла;
13 TitanLuchs
 
14.04.09
16:45
(11) "Для" в обратную сторону не рабюотает в 1С

Счетчик=Объект.Данные.Количество();
Пока Счетчик >=0 Цикл
  ...
  ...
  ...
  ...
  Счетчик = Счетчик - 1;
КолнецЦикла;
14 TitanLuchs
 
14.04.09
16:46
+(13) То есть
Счетчик=Объект.Данные.Количество() - 1;
15 Adilgeriy
 
14.04.09
17:13
А как здесь указать что я работяю со строкой табличной части?
16 TitanLuchs
 
14.04.09
17:29
Счетчик=Объект.Данные.Количество() - 1;
Пока Счетчик >=0 Цикл
  Строка = Объект.Данные[Счетчик];
  Если Строка.Группа <> Объект.ВозрастнаяГруппа Тогда
     Объект.Данные.Удалить(Счетчик);
     Счетчик = Счетчик - 1;
  КонецЕсли;
  Счетчик = Счетчик - 1;
КолнецЦикла;
17 Joint
 
14.04.09
17:34
(16) из условия, изменение счетчика убери, да
18 Joint
 
14.04.09
17:40
к = 0;
Пока к <  ТабличнаяЧасть.Количество() Цикл
   
   лСтр = ТабличнаяЧасть[к];
   Если лСтр.Группа <> Объект.ВозрастнаяГруппа  Тогда
       ТабличнаяЧасть.Удалить(к);
Продолжить;
   КонецЕсли;

       к = к + 1;

КонецЦикла;
19 TitanLuchs
 
14.04.09
17:47
(17) Да
(18) Пока к <  ТабличнаяЧасть.Количество() - 1  Цикл

А вообще надо делать не так ИМХО
20 TitanLuchs
 
14.04.09
17:48
+(19) Хотя нет, правильно у тебя, торможу уже к концу дня
21 Adilgeriy
 
14.04.09
17:59
Спасибо все заработало и последний вопрос а как документы удалять что то не нашол этого меню
22 TitanLuchs
 
14.04.09
18:02
(21) В режиме тонкого и  веб клиента предопределенной формы для удаления объктов нет, вставь ее из демоконфигурации 1С
23 Adilgeriy
 
14.04.09
22:48
Еще вопрос при вызове процедуры
Процедура ВремяПервойПриИзменении(Элемент)
   //лСтр = Объект.Данные.ТекущиеДанные;
   //лСтр.РезультатПервой=100;
       Как здесь записать значение в колонку другой строки
КонецПроцедуры
24 Adilgeriy
 
15.04.09
01:10
Ну что никто не знает? или пересчет по всему документу запускать надо?
25 TitanLuchs
 
15.04.09
10:39
(24) Бери коллекцию строк, находи нужную, получай ее и изменяй. По какому условию надо найти "другую строку"?
26 Adilgeriy
 
15.04.09
21:53
С (23) разобрался но в продолжение 18 код работает но ведет себя странно. Как бы удаеляет не те строки пробывал вот так:
Процедура ОбработатьВыполнить()
   О//бъект.Данные.Сортировать("Группа Убыв");
   Если Объект.ВозрастнаяГруппа=Неопределено тогда
       Предупреждение("Укажите возрастную группу");
       
   Иначе
       Объект.Обработан=Истина;
               Счетчик = 0;
       Пока Счетчик <  Объект.Данные.Количество() Цикл
           
           лСтр = Объект.Данные[Счетчик];
           Если лСтр.Группа <> Объект.ВозрастнаяГруппа  Тогда
               лСтр.Удалить();
               //Объект.Данные.Удалить(Счетчик);
               Продолжить;
           КонецЕсли;
           
           Счетчик = Счетчик + 1;
           
       КонецЦикла;    
       
   КонецЕсли;
   Объект.Данные.Сортировать("Подразделение Убыв");    
КонецПроцедуры

причем сортировка пов конце процедыры необходима иначе даже докуменит записать нельзя((
27 Adilgeriy
 
16.04.09
00:04
В логике ошибок нет походу ошибки в платформе вот код который работает
&НаКлиенте
Процедура ОбработатьВыполнить()
   Объект.Обработан=Истина;
   БылоСтрок= Объект.Данные.Количество();
   Для Счетчик =1  по   Объект.Данные.Количество() Цикл
       НомерСтроки= БылоСтрок-Счетчик;
       лСтр = Объект.Данные[НомерСтроки];
       Если лСтр.Группа = Объект.ВозрастнаяГруппа  Тогда
       Иначе
           Объект.Данные.Удалить(НомерСтроки);
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры
28 TitanLuchs
 
16.04.09
11:03
(27) Это не ошибка в платформе, надо было сразу удалять из коллекции по номеру, а не использовать метод строки "Удалить", я тебе в (16) так и написал
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой