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

Удалить потворяющиеся записи.

Автор ekaterinasslv, 23 янв 2019, 16:11

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

ekaterinasslv

Добрый вечер. Подскажите, что делаю не так? Создала Кнопку на форме обработки, чтобы она искала абонентов с одинаковыми адресами и удаляла один из дублей. а другой оставляля. Перед этим предварительно сортирую по адресу, значит повторяющиеся адреса идут друг за другом.

ЦитироватьПроцедура КоманднаяПанель2УбратьПовторяющиесяЗначения(Кнопка)
   л_КолСтрок = ТабличноеПолеДомов.Количество() - 1;
   
   Для й=0 по л_КолСтрок Цикл
      Если й > л_КолСтрок Тогда Прервать КонецЕСли;
      Если ТабличноеПолеДомов[й].Адрес = ТабличноеПолеДомов[й+1].Адрес Тогда
         ТабличноеПолеДомов.Удалить(ТабличноеПолеДомов[й]);
         й = й - 1;
         л_КолСтрок = л_КолСтрок - 1;
      КонецЕсли;
   КонецЦикла;
   АвтонумерацияСтрок(ТабличноеПолеДомов);

   // Вставить содержимое обработчика.
КонецПроцедуры

wise

(0) обходить коллекцию надо С КОНЦА:
Для Индекс = -Объект.ТЗ.Количество()+1 По 0 Цикл
    Если Объект.ТЗ[-Индекс].Значение = <Условие> Тогда
        Объект.ТЗ.Удалить(-Индекс);
    КонецЕсли;
КонецЦикла;
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Z.spb

Чего то с циклом и счетчиками значит напутано у вас. Я бы так сделал.

Адрес = ТабличноеПолеДомов[0].Адрес;
Счетчик = 1;
Пока Счетчик < ТабличноеПолеДомов.Количество() Цикл
Если ТабличноеПолеДомов[Счетчик].Адрес = Адрес Тогда
ТабличноеПолеДомов.Удалить(Счетчик);
Иначе
Адрес = ТабличноеПолеДомов[Счетчик].Адрес;
Счетчик = Счетчик + 1;
КонецЕсли;
КонецЦикла;

wise

(2)
Цитата: Z.spb от 23 янв 2019, 18:06Счетчик = 1;

Цитата: Z.spb от 23 янв 2019, 18:06Если ТабличноеПолеДомов[Счетчик].Адрес = Адрес Тогда

а КОГДА будем обрабатывать "ТабличноеПолеДомов[0]" ?? ТУТ же ИНДЕКС...
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Z.spb

Цитата: wise от 23 янв 2019, 18:10
(2)
Цитата: Z.spb от 23 янв 2019, 18:06Счетчик = 1;

Цитата: Z.spb от 23 янв 2019, 18:06Если ТабличноеПолеДомов[Счетчик].Адрес = Адрес Тогда

а КОГДА будем обрабатывать "ТабличноеПолеДомов[0]" ?? ТУТ же ИНДЕКС...

ТабличноеПолеДомов[0] обрабатывать не нужно, если вы об этом. Там в любом случае останется уникальное значение, если мы обработаем все последующие строки начиная со 2й (с индексом 1) и до конца таб.части.

Теги:

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

Рейтинг@Mail.ru

Поиск