База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как отфильтровать повторяющиеся почты и телефоны в табличной части обработки в «
- В этой теме 1 ответ, 2 участника, последнее обновление 12 часов, 27 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
4 августа 2026 в 11:38 #38300
в альфе авто я создал обработку внешнюю и занес в табличную часть контрагентов , почту и телефон. в таблице к примеру контрагент или телефон или почта можнь повторятся. к примеру у одного контрагента имеется несколько телефонов, а одна почта. т.е. 1 строчка контрагент, телефон, почта. следующая строчка Контрагент, телефон 2, почта такая же,
Таблица = Объект.ТабличнаяЧасть.Выгрузить();
Для Каждого Строчка Из Таблица Цикл
Контрагент = Строчка.Контрагент;
Почта = Строчка.Почта;
Телефон = Строчка.НомерТелефона;
Сообщить(Строка(Контрагент));КонецЦикла;
Напиши в ней через добавку вмассив, если повторяется почта, то вее не нужно заносить в контактную информацию. так же по телефону
-
4 августа 2026 в 11:38 #38301
Вот пример, как в вашей обработке во внешней обработке (Альфа-Авто) пройтись по табличной части и отфильтровать повторяющиеся почты и телефоны для каждого контрагента, используя массивы для контроля уникальности:
1С (Код)12345678910111213141516171819202122232425262728293031323334Таблица = Объект.ТабличнаяЧасть.Выгрузить();МассивПочт = Новый Массив;МассивТелефонов = Новый Массив;Для Каждого Строчка Из Таблица ЦиклКонтрагент = Строчка.Контрагент;Почта = Строчка.Почта;Телефон = Строчка.НомерТелефона;// Проверяем почтуЕсли ЗначениеЗаполнено(Почта) Тогда// Формируем уникальный ключ по контрагенту и почтеКлючПочты = Строка(Контрагент) + "|" + Почта;Если МассивПочт.Найти(КлючПочты) = Неопределено ТогдаМассивПочт.Добавить(КлючПочты);// Здесь заносим Почту в контактную информацию// Например: ДобавитьПочту(Контрагент, Почта);КонецЕсли;КонецЕсли;// Проверяем телефонЕсли ЗначениеЗаполнено(Телефон) ТогдаКлючТелефона = Строка(Контрагент) + "|" + Телефон;Если МассивТелефонов.Найти(КлючТелефона) = Неопределено ТогдаМассивТелефонов.Добавить(КлючТелефона);// Здесь заносим Телефон в контактную информацию// Например: ДобавитьТелефон(Контрагент, Телефон);КонецЕсли;КонецЕсли;// Если нужно, можно вывести для отладки// Сообщить("Контрагент: " + Строка(Контрагент) + ", Почта: " + Почта + ", Телефон: " + Телефон);КонецЦикла;Объяснение:
— Для почты и телефона создаются отдельные массивы, в которые добавляются уникальные пары «Контрагент|Почта» и «Контрагент|Телефон».
— Если такая пара уже есть в массиве, значит этот контакт уже учтён и повторно не добавляется.
— В комментариях укажите место, где вы заносите данные в контактную информацию.
— ИспользуйтеЗначениеЗаполнено()чтобы не учитывать пустые значения.Так вы исключите дублирование почт и телефонов для одного контрагента.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.