8.х Запрос при формировании динамического списка

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Leprecus, 8 дек 2015.

  1. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    По второй ссылке:
    Придерживаюсь этого, но в общем и целом, нужно тестить в каждой ситуации.....
  3. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Вот к чему я пришёл:
    В контактной информации контрагента существуют след значения - Адрес, АдресЭлектроннойПочты, Телефон.
    Что я имею при моём запросе - одной строкой выводится - одно поле, остальные пустые, но не могу я уловить как правильно эти строки собрать в 1.
    Вот так у меня:
    | адрес | телефон | почта |
    | Россия | | |
    | | +79039999999 | |
    | | | 123@ya.ru |

    А хочется так:
    | адрес | телефон | почта |
    | Россия | +79039999999 | 123@ya.ru |
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    выполняйте 3 соединения таблиц, каждое соединение ограничивайте по виду контактной информации.
  5. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    А приблизительно это как? Я пробовал так:
    ПО ДокументЗаказКлиента.Контрагент.КонтактнаяИнформация.АдресЭП = КонтрагентыКонтактнаяИнформация.АдресЭП
    но получал ошибку "В условиях соединения запроса не допускается обращение к табличным частям"
  6. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    После долгих мытарств и открытия для себя менеджера запросов, получил результат, посмотрите пожалуйста - насколько это грамотно?
    Код:
    ВЫБРАТЬ
        ДокументЗаказКлиента.Номер,
        КонтрагентыКонтактнаяИнформация.АдресЭП,
        КонтрагентыКонтактнаяИнформация1.НомерТелефона
    ИЗ
        Документ.ЗаказКлиента КАК ДокументЗаказКлиента
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
            ПО ДокументЗаказКлиента.Контрагент = КонтрагентыКонтактнаяИнформация.Ссылка
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация1
            ПО ДокументЗаказКлиента.Контрагент = КонтрагентыКонтактнаяИнформация1.Ссылка
    ГДЕ
        (КонтрагентыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
                И КонтрагентыКонтактнаяИнформация1.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
  7. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Из ГДЕ перенесите в условия соединения.
  8. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Я не могу понять о чём вы говорите, в конструкторе в условиях я прописал именно то, что получи в результате после ГДЕ. Ткните меня моськой плз.
  9. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Код:
    ВЫБРАТЬ
        ДокументЗаказКлиента.Номер,
        КонтрагентыКонтактнаяИнформация.АдресЭП,
        КонтрагентыКонтактнаяИнформация1.НомерТелефона
    ИЗ
        Документ.ЗаказКлиента КАК ДокументЗаказКлиента
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
            ПО ДокументЗаказКлиента.Контрагент = КонтрагентыКонтактнаяИнформация.Ссылка
                    И КонтрагентыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация1
            ПО ДокументЗаказКлиента.Контрагент = КонтрагентыКонтактнаяИнформация1.Ссылка
                    И КонтрагентыКонтактнаяИнформация1.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
    
  10. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Вот спасибо, теперь я многое для себя почерпнул!!! Буду ковырять далее.
    --- Объединение сообщений, 10 дек 2015 ---
    Вот ещё вопрос родился, для работы со строками в запросах доступна функция ПОДСТРОКА. Остальные я так понимаю работать не будут?
    Для чего интересуюсь - планирую искать договора по номеру телефона, но номер может быть записан как с 7 так и с 8, думал использовать ПРАВ(НомерТелефона,10), но понимаю что ничего не выйдет. Функция ПОДСТРОКА мне тоже не поможет, поскольку СтрДлина вероятно тоже не отработает. Как быть?
    --- Объединение сообщений, 10 дек 2015 ---
    Хотя наверное туплю, "+" то не получиться поставить длина номера телефона будет фиксирована, но это номер телефона. Такие ситуации всё равно могут возникнуть для других целей, как выкручиваться?
    Последнее редактирование: 10 дек 2015

Поделиться этой страницей