Результат запроса без повторений

1. anytka_es 15.11.23 08:58 Сейчас в теме
Всем, добрый день!
Я только только начала работать с 1с, опыта и практики нет.
Очень нужна помощь составить правильно запрос, чтобы результат выводился без повторений по полю КонтактноеЛицо.
Необходимо вывести контактных лиц организации, у которых код функции один из трех 000000020 или 000000017 или 000000018,
но у некоторых контактных лиц может быть указано несколько кодов из перечисленных, соответственно выводятся контактные лица с повтором.


ЗапросКонтактЛицо = Новый Запрос("ВЫБРАТЬ
| КартаПредприятияФункции.Функция.Код КАК Код,
| КартаПредприятия.Владелец,
| КартаПредприятия.Наименование КАК КонтактноеЛицо,
| КартаПредприятияФункции.Функция.Наименование КАК Функции,
| КартаПредприятия.Должность КАК Должность
|ИЗ
| Справочник.КартаПредприятия.Функции КАК КартаПредприятияФункции
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КартаПредприятия КАК КартаПредприятия
| ПО КартаПредприятияФункции.Ссылка = КартаПредприятия.Ссылка
|ГДЕ
| КартаПредприятия.Владелец = &Владелец
| И (КартаПредприятияФункции.Функция.Код = ""000000020""
| ИЛИ КартаПредприятияФункции.Функция.Код = ""000000017""
| ИЛИ КартаПредприятияФункции.Функция.Код = ""000000018"")
| И (НЕ КартаПредприятия.Состояние В (&НеАктивные))");

НеАктивные = новый массив;
НеАктивные.Добавить(Перечисления.СостояниеКонтактныхЛиц.Повтор);
НеАктивные.Добавить(Перечисления.СостояниеКонтактныхЛиц.ВДекретномОтпуске);
НеАктивные.Добавить(Перечисления.СостояниеКонтактныхЛиц.Уволен);
ЗапросКонтактЛицо.УстановитьПараметр("НеАктивные",НеАктивные);

ЗапросКонтактЛицо.УстановитьПараметр("Владелец",резОрг.Контрагент);
По теме из базы знаний
Найденные решения
4. RustamZz 15.11.23 09:36 Сейчас в теме
(3) Функцию не выводите, или сделайте для нее Максимум
anytka_es; homer_; +2 Ответить
6. succub1_5 89 15.11.23 11:43 Сейчас в теме
(1)Сразу несколько советов новичку:
1) используйте РАЗРЕШЕННЫЕ
2) не используйте ИЛИ, лучше в список значений загнать
3) не используйте Ссылка.Реквизит.Реквизит...Реквизит

Почему НеАктивные = Новый Массив; а Коды через ИЛИ?

И первый запрос надо во Временную таблицу поместить и проиндексировать по КартаПредприятияФункция.Ссылка.
Во 2 запросе - кроме тех условий + ...Владелец В (ВТ.КПФ.ССылка), ну и в Выбрать ... МАКСИМУМ(ВТ.КПФ.Функция.Код) с группировкой по другим полям.
Opiumforme; anytka_es; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 15.11.23 09:20 Сейчас в теме
3. anytka_es 15.11.23 09:35 Сейчас в теме
(2) К сожалению, не работает. Все равно выходят дубли. Например, у контактного лица Ивановой установлен код функции 000..20 и 00..18, Выводит две строки Иванова 00..20 и Иванова 00..18, в надо чтобы только один раз Иванова выходила.
4. RustamZz 15.11.23 09:36 Сейчас в теме
(3) Функцию не выводите, или сделайте для нее Максимум
anytka_es; homer_; +2 Ответить
7. anytka_es 15.11.23 12:33 Сейчас в теме
(4) Спасибо ))) Получилось
5. nomad_irk 76 15.11.23 10:59 Сейчас в теме
(3)
у контактного лица Ивановой установлен код функции 000..20 и 00..18, Выводит две строки Иванова 00..20 и Иванова 00..18

Правильно, потому что функции разные.
Определите, какая из этих функций вам нужна в конечном итоге и примените агрегирующую функцию МИНИМУМ/МАКСИМУМ к коду/наименованию функции
anytka_es; +1 Ответить
8. anytka_es 15.11.23 12:33 Сейчас в теме
6. succub1_5 89 15.11.23 11:43 Сейчас в теме
(1)Сразу несколько советов новичку:
1) используйте РАЗРЕШЕННЫЕ
2) не используйте ИЛИ, лучше в список значений загнать
3) не используйте Ссылка.Реквизит.Реквизит...Реквизит

Почему НеАктивные = Новый Массив; а Коды через ИЛИ?

И первый запрос надо во Временную таблицу поместить и проиндексировать по КартаПредприятияФункция.Ссылка.
Во 2 запросе - кроме тех условий + ...Владелец В (ВТ.КПФ.ССылка), ну и в Выбрать ... МАКСИМУМ(ВТ.КПФ.Функция.Код) с группировкой по другим полям.
Opiumforme; anytka_es; +2 Ответить
9. anytka_es 15.11.23 12:34 Сейчас в теме
(6) Спасибо. Приму к сведению!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот