8.х Можно ли делать копию выборки результата запроса?

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

  1. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    205
    Симпатии:
    5
    Баллы:
    29
    Код:
    Выборка = Запрос.Выполнить().Выбрать();
    Сделать копию Выборки типа

    Код:
    Выборка2 = Выборка.Скопировать() ?
    Код:
    Пока Выборка.Следующий() Цикл
            //Строка первого уровня
            Строка                                 = ДеревоДолжников.Строки.Добавить();
            Строка.Партнеры                     = Выборка.Партнер;
            Строка.ПочтовыйЯщик                    = Выборка.ПочтовыйЯщик;
            Строка.ОтправитьУведомление            = Истина;
                Пока Выборка2.Следующий()
                .... заполняю подстроки
                КонецЦикла
        КонецЦикла
    
    Просто выгрузить в дерево

    Код:
    ЗначениеВДанныеФормы(Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией), ЭтаФорма.ДЗ);   
    не подходит

    Так как мне надо дерево вида

    партнер / почта / истина
    Партнер / почта / истина / ... / ... / ... /... /

    А получится

    партнер
    партнер / почта /
    партнер / почта / истина
    Партнер / почта / истина / ... / ... / ... /... /
    Последнее редактирование: 18 апр 2017
  2. mhl
    Offline

    mhl Опытный в 1С

    Регистрация:
    23 июн 2007
    Сообщения:
    429
    Симпатии:
    0
    Баллы:
    26
    а таблица значений не подходит?

    Код:
    Выборка = Запрос.Выполнить().Выбрать();
    тзКопия = Запрос.Выполнить().Выгрузить();
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    8.390
    Симпатии:
    845
    Баллы:
    204
    Для чего вообще нужна копия выборки? :)
    Выборку в дерево можно выгружать и без иерархии - результат будет несколько другим.
  4. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.318
    Симпатии:
    85
    Баллы:
    54
    Доброго
    Использовать обход по группировкам как вы написали :
    в секции итогов примерно так :
    Код:
    ИТОГИ
        МАКСИМУМ(Контрагент),
        ....
    ПО
        Почта
    
    --- Объединение сообщений, 20 апр 2017 ---
    почему так - предполагаем, что поле почта принимает уникальные значения по Контрагенту, и такая запись может быть не одна, если мы в дальнейшем будем обходить результат по группировкам то в строке родителе (ведет поле "Почта") у нас будут корректные соотношения Почта - Контрагент
    и мы в итоге легко и не принужденно получаем дерево которое нужно по вашей задаче
    --- Объединение сообщений, 20 апр 2017 ---
    или решить "в лоб", обходя результат запроса по уровням и формировать дерево требуемого вида
    Последнее редактирование: 20 апр 2017
    Bkmz нравится это.
  5. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    205
    Симпатии:
    5
    Баллы:
    29
    Спасибо. Уже разобрался

    Выгружаю так:

    Код:
    Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);   
    Запрос:

    Код:
    ВЫБРАТЬ
       ...
    ИЗ
      ...
    СГРУППИРОВАТЬ
       МАКСИМУМ(Почта)
    ИТОГИ ПО
       Партнер
    Итоги по чему-то обязательно и все что не влезает в "групповое поле" вкидываем в "суммируемое поле" с Максимум() или Минимум()

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