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

Сравнение предыдущей , текущей и следующей строки

Автор Denis1010, 31 авг 2021, 11:15

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

Denis1010

Добрый день, возникла такая проблема. Стоит задача, для её решение мне нужно сравнить текущую строку, с предыдущей и следующей. Допустим, имеется таблица значений, в ней есть колонка ФИО (строки заполнены значениями). Мне нужно вытянуть только те строки с ФИО, где предыдущая строка и следующая не содержит это же ФИО что в текущей.
ПРИМЕР:
Иванов
Иванов
Птушак
Старченко

Ответ должен получится вот таким : Птушак, Старченко.

Я пишу вот так вот код, но получаю ошибку, что массив выход за границы индекса. Как я могу решить эту проблему?
Заранее спасибо каждому кто поможет!)

Для Итератор = 0 по ТаблицаСтажаИтоговая.Количество()-1 Цикл
                  
                  Если Итератор = 0 Тогда
                     продолжить;   
                  КонецЕсли;
                  
                  ТекСтрока = ТаблицаСтажаИтоговая[Итератор].ФИО;
                  ПредСтрока = ТаблицаСтажаИтоговая[Итератор-1].ФИО;
                  ПередСтрока = ТаблицаСтажаИтоговая[Итератор+1].ФИО;
                  
                  Если ТекСтрока <> ПредСтрока И ТекСтрока <> ПередСтрока Тогда
                     Сообщить("разные: " + ТекСтрока);
                  Иначе
                     Сообщить("Одинаковые: " + ПредСтрока);
                  КонецЕсли
                  
               КонецЦикла;


LexaK

т.е. вам надо выбрать строки с ФИО которые встречаются 1 раз (допустим ТЗ была отсортирована по ФИО)
добавляем колонку Количество (заполняем единичками)
сворачиваем ТЗ


//пример кода
ТаблицаСтажаИтоговая.Свернуть("Фио","Количество");
лкСтроки = ТаблицаСтажаИтоговая.НайтиСтроки(Новый Структура("Количество",1));
Для каждого лкСтр Из лкСтроки Цикл
Сообщить("ФИО: " + лкСтр.ФИО);
КонецЦикла;
ответ Понравился? (в смысле пригодился?)

Denis1010

@LexaK, Спасибо большое) А зачем мы добавляем колонку с единицами? Не до конца понял этот момент)

LexaK

@Denis1010, нам же (вам же) по задаче надо выбрать тех сотрудников, которые встречаются 1 (один) раз
вот по этой колонке после сворачивания и отбираем,
как раз, как в вашем примере, и получится результат/ответ: Птушак, Старченко.
 
ответ Понравился? (в смысле пригодился?)

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск