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

Помогите составить запросик, нужно получить Контрагентов и их e-mail

Автор Сергей Поляков, 22 ноя 2017, 12:42

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

Сергей Поляков

Всем привет.
Хочу написать отчетик для БП 3.0
У меня никак не получается написать запрос, который выведет в результате 2 колонки:
"Контрагент" и "e-mail"
Нужно вывести список всех контрагентов и рядом с ними электронные адреса - для тех у кого он задан, а если не задан, то просто пустое значение, но контрагент
в списке без адреса тоже должен быть.
Т.к. электронный адрес, тел, адрес и пр. хранятся в отдельной таблице, а именно подчиненной табличной части справочника "Контрагенты", то нужно выдергивать данные из нее, а если у контрагента е-мэйл не задан, то и строки такой нет.
Запрос вида:
////////////////////////////////////////////////
ВЫБРАТЬ
   КонтрагентыКонтактнаяИнформация.Ссылка КАК Контрагент,
   КонтрагентыКонтактнаяИнформация.АдресЭП КАК ЭлектронныйАдрес
ИЗ
   Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
//////////////////////////////////////////////////
выводит в список контрагента, но он его дублирует, если например задан адрес, телефон, то будет 2 одинаковых контрагента.
Если добавить условие в запрос
//////////////////////////////////////
ГДЕ КонтрагентыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
////////////////////////////////////
Тогда в запрос попадут только те контрагенты, у которых емэйл задан.

Я пробовал в условии задать функцию ПОДОБНО, что то вроде "Если встречается слово %электронной% тогда есть емэйл, иначе нет емэйла, если бы это сработало, я бы соединил с таблицей "Контрагенты" по полю Ссылка этот результат, но это не сработало:
//////////////////////////////////////
ГДЕ Представление(КонтрагентыКонтактнаяИнформация.Тип) ПОДОБНО "%электронной%"
////////////////////////////////////////
Подскажите можно ли это как то сделать? сам не могу сообразить. спасибо

espero2000

Можно так:
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
   Контрагенты.Ссылка КАК Контрагент,
   МАКСИМУМ(КонтрагентыКонтактнаяИнформация.АдресЭП) КАК ЭлектронныйАдрес
ИЗ
   Справочник.Контрагенты КАК Контрагенты
      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
      ПО Контрагенты.Ссылка = КонтрагентыКонтактнаяИнформация.Ссылка
СГРУППИРОВАТЬ ПО
Контрагенты.Ссылка,   
КонтрагентыКонтактнаяИнформация.Ссылка
Упорядочить ПО
   Контрагент

У некоторых контрагентов может вообще отсутствовать контактная информация, поэтому что бы их не потерять делаем выборку из справочника, а не из табличной его части.

Сергей Поляков

Ого, круто! правда не понял почему это работает, но буду разбираться. Спасибо ))

Oldman06

Я бы еще добавил в условие связи:
И КонтрагентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.КонтактнаяИнформация.EmailКонтрагенты)
И если у всех контрагентов по одному Email, то МАКСИМУМ можно убрать.

Теги: Запрос 

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

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

Поиск