Имя: Пароль:
1C
1С v8
Запрос к выборке из запроса
0 Jaroslavka777
 
23.01.15
15:36
Получаю данные запросом, меняю в одной колонке значения(переделываю тип из строки в число). Хочу к переработанным данным сделать запрос еще раз. Как можно?
1 Ёпрст
 
23.01.15
15:38
можно, передай в запрос ТЗ как параметр
2 Ёпрст
 
23.01.15
15:38
ну или СЗ..
3 lEvGl
 
гуру
23.01.15
15:40
Выбрать
1,
2..
Поместить
ВТ Из &ТЗ;
Выбрать
ВТ.1,
ВТ.2
...
Из ВТ как ВТ

&ТЗ - будет параметр запроса
4 deniseek
 
23.01.15
15:40
(0) Как переделываешь? Если результат запроса выгружаешь в тз, то тз можно поместить в запрос через менеджер временных таблиц и снова запросом отработать по этой Тз.
5 palpetrovich
 
23.01.15
15:43
(4) менеджер временных таблиц как-бы и не обязателен

    "ВЫБРАТЬ *
    |ПОМЕСТИТЬ ВТ
    |ИЗ &ТЗ КАК ТЗ
    |;
    |ВЫБРАТЬ
    |  ВТ.Поле1,
    |  ВТ.Поле2
    |ИЗ ВТ КАК ВТ
    |";
    Запрос.УстановитьПараметр("ТЗ",ТЗ);

зы: признавайиесь, все вы личку лазили? :)
6 Jaroslavka777
 
23.01.15
15:44
(4) (3)
пытаюсь как раз через ТЗ. не получается. голова не хочет варить под конец дня.

Не видит во втором запросе ТЗ.

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ОпросВопросы.Ссылка.ТиповаяАнкета КАК ТиповаяАнкета,
                   |    ВЫБОР
                   |        КОГДА ОпросВопросы.Ссылка.ОпрашиваемоеЛицо ССЫЛКА Справочник.КонтактныеЛицаКонтрагентов
                   |            ТОГДА ОпросВопросы.Ссылка.ОпрашиваемоеЛицо.Ссылка
                   |        ИНАЧЕ ОпросВопросы.Ссылка.ОпрашиваемоеЛицо
                   |    КОНЕЦ КАК ОпрашиваемоеЛицо,
                   |    ОпросВопросы.Вопрос,
                   |    ТиповыеАнкетыВопросыАнкеты.Номер КАК осиНомер,
                   |    ОпросВопросы.ТиповойОтвет,
                   |    ОпросВопросы.Ссылка.Дата КАК ДатаОпроса,
                   |    ВЫБОР
                   |        КОГДА ОпросВопросы.Ссылка.ОпрашиваемоеЛицо ССЫЛКА Справочник.КонтактныеЛицаКонтрагентов
                   |            ТОГДА ОпросВопросы.Ссылка.ОпрашиваемоеЛицо.Владелец.ОсновнойМенеджерПокупателя
                   |        ИНАЧЕ ""Неопределен""
                   |    КОНЕЦ КАК Ответственный
                   |ИЗ
                   |    Документ.Опрос.Вопросы КАК ОпросВопросы
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТиповыеАнкеты.ВопросыАнкеты КАК ТиповыеАнкетыВопросыАнкеты
                   |        ПО ОпросВопросы.Вопрос = ТиповыеАнкетыВопросыАнкеты.Вопрос
                   |            И ОпросВопросы.Ссылка.ТиповаяАнкета = ТиповыеАнкетыВопросыАнкеты.Ссылка
                   |ГДЕ
                   |    ОпросВопросы.Ссылка.ОпросЗавершен
                   |    И ТиповыеАнкетыВопросыАнкеты.Ссылка.Предопределенный
                   |    И ТиповыеАнкетыВопросыАнкеты.осиНомер <> 0
                   |    И ОпросВопросы.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
                   |    И НЕ ОпросВопросы.Ссылка.ПометкаУдаления";
                  
        
    Запрос.УстановитьПараметр("ДатаНачала", Период.ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", Период.ДатаОкончания);
    Результат = Запрос.Выполнить();
    Выгрузка = Результат.Выгрузить();
    //перезаполним
    Для каждого Строка Из Выгрузка Цикл
        Строка.ТиповойОтвет =  Число(СокрЛП(Строка.ТиповойОтвет ));
    КонецЦикла;
    
    Запрос2 = Новый Запрос;
    Запрос2.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;  
    Запрос2.Текст = "
    |ВЫБРАТЬ
        |ТиповаяАнкета,
        |ОпрашиваемоеЛицо,
        |Вопрос,
        |Номер,
        |ТиповойОтвет,
        |ДатаОпроса,
        |Ответственный
        |ПОМЕСТИТЬ ВременнаяТаблица
        |ИЗ &ТЗ КАК ТЗ";
        Запрос2.УстановитьПараметр("ТЗ", Выгрузка);
        Запрос2.Выполнить();
        
        Запрос3 = Новый Запрос;
        Запрос3.Текст = "
        |ВЫБРАТЬ *
        |ИЗ ВременнаяТаблица";
        Выборка = Запрос3.Выполнить().Выбрать();
7 Jaroslavka777
 
23.01.15
15:46
Прошу прощения за некрасивый код, если что. В процессе
8 ДенисЧ
 
23.01.15
15:47
(6) Тю.... А тип колонки поменять?
9 Ёпрст
 
23.01.15
15:47
(6)
// Запрос3 = Новый Запрос;
  //      Запрос3.Текст = "
  //      |ВЫБРАТЬ *
  //      |ИЗ ВременнаяТаблица";
        Запрос2.Текст = "
        |ВЫБРАТЬ *
        |ИЗ ВременнаяТаблица";
10 ДенисЧ
 
23.01.15
15:47
Не значение в ней, а сам тип....
11 Ёпрст
 
23.01.15
15:48
+9

//Выборка = Запрос3.Выполнить().Выбрать();
Выборка = Запрос2.Выполнить().Выбрать();
12 lEvGl
 
гуру
23.01.15
15:49
(5) лазили, там фейк, сто пудов
(9 11) поддерживаю
13 deniseek
 
23.01.15
15:56
(5) Обязателен
14 lEvGl
 
гуру
23.01.15
15:58
(13)нет
15 ДенисЧ
 
23.01.15
15:59
(13) в запросе из (5) он нивовощ не упёрся
16 AlexITGround
 
23.01.15
16:06
17 Jaroslavka777
 
23.01.15
16:34
Всем большое спасибо!
Сменила тип колонки, сделала без менеджера вт

кому нужно код

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ОпросВопросы.Ссылка.ТиповаяАнкета КАК ТиповаяАнкета,
                   |    ВЫБОР
                   |        КОГДА ОпросВопросы.Ссылка.ОпрашиваемоеЛицо ССЫЛКА Справочник.КонтактныеЛицаКонтрагентов
                   |            ТОГДА ОпросВопросы.Ссылка.ОпрашиваемоеЛицо.Ссылка
                   |        ИНАЧЕ ОпросВопросы.Ссылка.ОпрашиваемоеЛицо
                   |    КОНЕЦ КАК ОпрашиваемоеЛицо,
                   |    ОпросВопросы.Вопрос,
                   |    ТиповыеАнкетыВопросыАнкеты.осиНомер КАК осиНомер,
                   |    ОпросВопросы.ТиповойОтвет,
                   |    ОпросВопросы.Ссылка.Дата КАК ДатаОпроса,
                   |    ВЫБОР
                   |        КОГДА ОпросВопросы.Ссылка.ОпрашиваемоеЛицо ССЫЛКА Справочник.КонтактныеЛицаКонтрагентов
                   |            ТОГДА ОпросВопросы.Ссылка.ОпрашиваемоеЛицо.Владелец.ОсновнойМенеджерПокупателя
                   |        ИНАЧЕ ""Неопределен""
                   |    КОНЕЦ КАК Ответственный
                   |ИЗ
                   |    Документ.Опрос.Вопросы КАК ОпросВопросы
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТиповыеАнкеты.ВопросыАнкеты КАК ТиповыеАнкетыВопросыАнкеты
                   |        ПО ОпросВопросы.Вопрос = ТиповыеАнкетыВопросыАнкеты.Вопрос
                   |            И ОпросВопросы.Ссылка.ТиповаяАнкета = ТиповыеАнкетыВопросыАнкеты.Ссылка
                   |ГДЕ
                   |    ОпросВопросы.Ссылка.ОпросЗавершен
                   |    И ТиповыеАнкетыВопросыАнкеты.Ссылка.Предопределенный
                   |    И ТиповыеАнкетыВопросыАнкеты.осиНомер <> 0
                   |    И ОпросВопросы.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
                   |    И НЕ ОпросВопросы.Ссылка.ПометкаУдаления";    
    Запрос.УстановитьПараметр("ДатаНачала", Период.ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", Период.ДатаОкончания);
    Результат = Запрос.Выполнить();
    Выгрузка = Результат.Выгрузить();
    //перезаполним
    Для каждого Строка Из Выгрузка Цикл
        Строка.ТиповойОтвет =  Число(СокрЛП(Строка.ТиповойОтвет ));
    КонецЦикла;
    
    Выгрузка = СменитьТипКолонки(Выгрузка);
    
    Запрос2 = Новый Запрос;
    Запрос2.УстановитьПараметр("ТЗ", Выгрузка);
         Запрос2.Текст = "ВЫБРАТЬ
                         |    ТЗ.ТиповаяАнкета,
                         |    ТЗ.ОпрашиваемоеЛицо,
                         |    ТЗ.Вопрос,
                         |    ТЗ.осиНомер,
                         |    ТЗ.ТиповойОтвет,
                         |    ТЗ.ДатаОпроса,
                         |    ТЗ.Ответственный
                         |ПОМЕСТИТЬ ВТ
                         |ИЗ
                         |    &ТЗ КАК ТЗ
                         |;
                         |
                         |////////////////////////////////////////////////////////////////////////////////
                         |ВЫБРАТЬ
                         |    ВТ.ТиповаяАнкета КАК ТиповаяАнкета,
                         |    ВТ.ОпрашиваемоеЛицо КАК ОпрашиваемоеЛицо,
                         |    ВТ.Вопрос,
                         |    ВТ.осиНомер КАК осиНомер,
                         |    ВТ.ТиповойОтвет,
                         |    ВТ.ДатаОпроса,
                         |    ВТ.Ответственный КАК Ответственный
                         |ИЗ
                         |    ВТ КАК ВТ
                         |
                         |УПОРЯДОЧИТЬ ПО
                         |    осиНомер
                         |ИТОГИ ПО
                         |    ТиповаяАнкета,
                         |    Ответственный,
                         |    ОпрашиваемоеЛицо";
               
    Результат = Запрос2.Выполнить();
18 Jaroslavka777
 
23.01.15
16:34
(12) нет, не фейк.
19 SanGvin
 
23.01.15
16:44
а в запросе ВЫРАЗИТЬ() не подойдет?
20 Jaroslavka777
 
23.01.15
16:46
(19)  Пробовала через ВЫРАЗИТЬ(), не вполучилось
21 lEvGl
 
гуру
23.01.15
16:49
(18)та..
(19)нет
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший