Группа: Пользователи
Сообщений: 58
Спасибо сказали: 0 раз
Рейтинг: 0
УТ3. в Справочнике Партнеры есть табличная часть - КонтактнаяИнформация, в этой табличной части есть реквизит - Представление. В форма справочника этот реквизит имеет 1 строки - Адрес, телефон и емейл. Как в запросе получить значения только 1 строки - Адрес?
ВЫБРАТЬ Контрагенты.Ссылка КАК Ссылка1, ПартнерыКонтактнаяИнформация.Ссылка КАК Партнер, ПартнерыКонтактнаяИнформация.Ссылка.Родитель КАК Родитель, ПартнерыКонтактнаяИнформация.Представление ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация ПО (Контрагенты.Партнер = ПартнерыКонтактнаяИнформация.Ссылка.Родитель)
ВЫБРАТЬ Адресс.Ссылка, (ВЫРАЗИТЬ(ЕСТЬNULL(Адресс.Представление, "") КАК СТРОКА(1023))) + (ВЫРАЗИТЬ(ЕСТЬNULL(Телефон.Представление, "") КАК СТРОКА(1023))) КАК АдрессТелефон ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК Адресс ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК Телефон ПО Адресс.Ссылка = Телефон.Ссылка ГДЕ Адресс.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) И Телефон.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины
Группа: Пользователи
Сообщений: 58
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(TipsyKID @ 25.06.14, 11:19)
Добрый день, как - то так :
Я прошу прощения, я только учу запросы и дальше левого соединения ещё не продвинулся В вашем запросе адрес и телефон попали в одну колонку, а мне надо в разных колонках но в одной строке. Спасибо.
ВЫБРАТЬ Адресс.Ссылка, ЕстьNULL(Адресс.Представление,"") КАК Адресс, ЕстьNULL(Телефон.Представление,"") КАК Телефон ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК Адресс ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК Телефон ПО Адресс.Ссылка = Телефон.Ссылка ГДЕ Адресс.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) И Телефон.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
Сообщение отредактировал TipsyKID - 25.06.14, 10:46
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины
При полном соединении попадут контрагенты у которых информация заполнена частично, к примеру только телефон или только адресс, что мне кажется рациональным.
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины
Т.е. вместо выборки в 10 000 записей мы лепим 100 000 и скармливаем серверу для отбора? А может проще выбрать 10 000 с CASE WHEN и группировкой по контрагенту?
Группа: Пользователи
Сообщений: 58
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(TipsyKID @ 25.06.14, 11:56)
При полном соединении попадут контрагенты у которых информация заполнена частично, к примеру только телефон или только адресс, что мне кажется рациональным.
А мне, вот как раз, надо было видеть у кого адреса и телефоны не заполнены.
Т.е. вместо выборки в 10 000 записей мы лепим 100 000 и скармливаем серверу для отбора? А может проще выбрать 10 000 с CASE WHEN и группировкой по контрагенту?
Простите, я где - то пропустил в вопросе , требование об "оптимальности" и "простоте". Думаю задача стаяла сугубо для обучения и в отличии от Вас я предложил вариант запроса. На этом уважаемый "критикан" наш разговор окончен.
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины
ВЫБРАТЬ Ссылка,МАКСИМУМ(Адрес),МАКСИМУМ(Телефон) ИЗ ( ВЫБРАТЬ Адресс.Ссылка, Адресс.Представление КАК Адрес, Null Как Телефон ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК Адресс ГДЕ Адресс.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ Адресс.Ссылка, Null , Адресс.Представление ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК Адресс
Группа: Основатель
Сообщений: 13982
Из: Киев
Спасибо сказали: 4550 раз
Рейтинг: 3678.1
Во всех приведенных запросах ниже 3 поста есть недочет: если в системе будет больше 1 адреса или больше 1 телефона - то будет борода . В условии надо кроме типа указывать ещё вид, как изначально написал logist.
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(Vofka @ 25.06.14, 21:01)
если в системе будет больше 1 адреса или больше 1 телефона
В УТ3, УТ11, УНФ, и вероятно всех конфигурациях написанных на БСП - не будет, подсистема контактной информации контрагента построена так, что для каждой пары Вид+Тип будет только одна запись.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0
Здравствуйте! запрос из поста 2 внутри функции, которая должна вернуть адрес контрагента на входе функции переменная с наименованием контрагента - Объект как сделать отбор по наименованию контрагента?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!