8.х СКД Объединение наборов данных

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Speaker1982, 20 июл 2011.

  1. TopicStarter Overlay
    Speaker1982
    Offline

    Speaker1982 Опытный в 1С

    Регистрация:
    12 май 2011
    Сообщения:
    223
    Симпатии:
    5
    Баллы:
    29
    Здравствуйте!
    Есть такая задачка:
    в УНФ 1.2 вывести отчет типа

    Контрагент | Фактический адрес | Телефоны

    запрос № 1:
    Код:
    ВЫБРАТЬ
    Контрагенты.Ссылка КАК Наименование,
    Контрагенты.КонтактнаяИнформация.(
    Представление
    ) КАК Адрес
    
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
    ГДЕ
    Контрагенты.КонтактнаяИнформация.Тип = &Тип
    И Контрагенты.КонтактнаяИнформация.Вид = &Вид
    
    
    Выдает нам таблицу Контрагент | Фактический адрес |

    Запрос № 2:
    Код:
    ВЫБРАТЬ
    Контрагенты.Ссылка КАК Наименование,
    Контрагенты.КонтактнаяИнформация.(
    Представление
    ) КАК Телефон
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
    ГДЕ
    Контрагенты.КонтактнаяИнформация.Тип = &Тип2
    И Контрагенты.КонтактнаяИнформация.Вид = &Вид2
    
    
    
    выдает нам таблицу Контрагент | Телефоны

    В СКД Параметрах я задаю конкретные значения этим параметрам.
    ВОПРОС! ПОЧЕМУ ОБА ЗАПРОСА, ПРИ СВЯЗЯХ НАБОРОВ ДАННЫХ ССЫЛКА <-> ССЫЛКА
    РУГАЕТСЯ - "Использование полей из не связанных наборов данных не допустимо"

    добавляю файл сохраненной СКД в формате xml

    Вложения:

    • набор.xml
      Размер файла:
      7,6 КБ
      Просмотров:
      68
  2. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    А зачем 2 набора данных? Можно ведь одним запросом
  3. TopicStarter Overlay
    Speaker1982
    Offline

    Speaker1982 Опытный в 1С

    Регистрация:
    12 май 2011
    Сообщения:
    223
    Симпатии:
    5
    Баллы:
    29
    можно, интересно почему не работает
    я ведь объединяю 2 набора по ключевому полю, по правилам, что ему не нравится?
  4. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Не знаю, попробовать не могу, т.к. у меня типовая конфигурация. Я бы не парился и сделал все в одном запросе.
  5. TopicStarter Overlay
    Speaker1982
    Offline

    Speaker1982 Опытный в 1С

    Регистрация:
    12 май 2011
    Сообщения:
    223
    Симпатии:
    5
    Баллы:
    29
    не простой запрос так то получается, просто если СКД позволяет объединять наборы данных, по почему не позволяет))

    вот запрос...
    Код:
    ВЫБРАТЬ
    Адреса.Ссылка КАК Контрагент,
    Адреса.Адрес,
    Телефоны.Телефон
    ИЗ
    (ВЫБРАТЬ
    КонтрагентыКонтактнаяИнформация.Представление КАК Адрес,
    КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка
    ИЗ
    Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
    ГДЕ
    КонтрагентыКонтактнаяИнформация.Тип = &Тип
    И КонтрагентыКонтактнаяИнформация.Вид = &Вид) КАК Адреса
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка,
    КонтрагентыКонтактнаяИнформация.Представление КАК Телефон
    ИЗ
    Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
    ГДЕ
    КонтрагентыКонтактнаяИнформация.Тип = &Тип2
    И КонтрагентыКонтактнаяИнформация.Вид = &Вид2) КАК Телефоны
    ПО Адреса.Ссылка = Телефоны.Ссылка
    
    в принцыпе задача то решена, но интересно все таки, что я не правильно делал, использую 2 различных набора данных, связанных по ссылке, причем если я связь зацикоиваю, то он ругается на зацикливание связей, если убираю то ругается что ее нет...
  6. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    зачем тройная вложенность? используйте пакетный запрос.
  7. TopicStarter Overlay
    Speaker1982
    Offline

    Speaker1982 Опытный в 1С

    Регистрация:
    12 май 2011
    Сообщения:
    223
    Симпатии:
    5
    Баллы:
    29
    с удовольствием, если рассказать мне как)
    в пакетные запросы то я могу все поместить, вижу где, а как их связать потом? в книге хрусталевой что то не вижу примеров с пакетными запросами((
  8. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Их там может и не быть. Она посвящена работе с СКД а не общему принципу написания запросов.

    Не нужен вам не пакетный запрос, не связанные наборы данных.

    Вот пример запроса, выводящий нужную вам информацию. Под УНФ - переделаете при необходимости, ее у меня нет. (в частности возможно не совпадают предопределенные значения справочника ВидыКонтактнойИнформации, а так же перечисления ТипыКонтактнойИнформации).
    Код:
    "ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагент,
    ЕСТЬNULL(КонтактнаяИнформацияАдрес.Представление, "") КАК ФактическийАдрес,
    ЕСТЬNULL(КонтактнаяИнформацияТелефон.Представление, "") КАК Телефон
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияАдрес
    ПО Контрагенты.Ссылка = КонтактнаяИнформацияАдрес.Объект
    И (КонтактнаяИнформацияАдрес.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
    И (КонтактнаяИнформацияАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактАдресКонтрагента))
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияТелефон
    ПО Контрагенты.Ссылка = КонтактнаяИнформацияТелефон.Объект
    И (КонтактнаяИнформацияТелефон.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
    И (КонтактнаяИнформацияТелефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента))"
    
  9. TopicStarter Overlay
    Speaker1982
    Offline

    Speaker1982 Опытный в 1С

    Регистрация:
    12 май 2011
    Сообщения:
    223
    Симпатии:
    5
    Баллы:
    29
    ну да, это практически такой же запрос как у меня, только переменные у меня задаются в параметрах СКД, а тут непосредственно через ЗНАЧЕНИЕ...
    но вопрос был в другом, возможно ли решить эту задачу связями наборов данных, т.е. методами СКД

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