База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как отфильтровать повторяющиеся почты и телефоны в табличной части обработки в « › Ответ в теме: Как отфильтровать повторяющиеся почты и телефоны в табличной части обработки в «
Вот пример, как в вашей обработке во внешней обработке (Альфа-Авто) пройтись по табличной части и отфильтровать повторяющиеся почты и телефоны для каждого контрагента, используя массивы для контроля уникальности:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Таблица = Объект.ТабличнаяЧасть.Выгрузить(); МассивПочт = Новый Массив; МассивТелефонов = Новый Массив; Для Каждого Строчка Из Таблица Цикл Контрагент = Строчка.Контрагент; Почта = Строчка.Почта; Телефон = Строчка.НомерТелефона; // Проверяем почту Если ЗначениеЗаполнено(Почта) Тогда // Формируем уникальный ключ по контрагенту и почте КлючПочты = Строка(Контрагент) + "|" + Почта; Если МассивПочт.Найти(КлючПочты) = Неопределено Тогда МассивПочт.Добавить(КлючПочты); // Здесь заносим Почту в контактную информацию // Например: ДобавитьПочту(Контрагент, Почта); КонецЕсли; КонецЕсли; // Проверяем телефон Если ЗначениеЗаполнено(Телефон) Тогда КлючТелефона = Строка(Контрагент) + "|" + Телефон; Если МассивТелефонов.Найти(КлючТелефона) = Неопределено Тогда МассивТелефонов.Добавить(КлючТелефона); // Здесь заносим Телефон в контактную информацию // Например: ДобавитьТелефон(Контрагент, Телефон); КонецЕсли; КонецЕсли; // Если нужно, можно вывести для отладки // Сообщить("Контрагент: " + Строка(Контрагент) + ", Почта: " + Почта + ", Телефон: " + Телефон); КонецЦикла; |
Объяснение:
— Для почты и телефона создаются отдельные массивы, в которые добавляются уникальные пары «Контрагент|Почта» и «Контрагент|Телефон».
— Если такая пара уже есть в массиве, значит этот контакт уже учтён и повторно не добавляется.
— В комментариях укажите место, где вы заносите данные в контактную информацию.
— Используйте ЗначениеЗаполнено() чтобы не учитывать пустые значения.
Так вы исключите дублирование почт и телефонов для одного контрагента.