Имя: Пароль:
1C
1С v8
v8: Как наложить отбор на временную таблицу
0 Night_Wolf
 
20.02.13
10:40
Есть запрос:
"ВЫБРАТЬ
|    ТоварыНаСкладахОстатки.Склад,
|    ТоварыНаСкладахОстатки.Номенклатура,
|    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
|    ТоварыНаСкладахОстатки.СерияНоменклатуры,
|    ТоварыНаСкладахОстатки.Качество,
|    ТоварыНаСкладахОстатки.КоличествоОстаток
|ПОМЕСТИТЬ Тест
|ИЗ
|    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|{ГДЕ
|    ТоварыНаСкладахОстатки.Склад.*,
|    ТоварыНаСкладахОстатки.Номенклатура.*}"

Если его передать в ПостроительОтчета, наложить отборы а потом с помощью метода ПостроителяОтчета "ПолучитьЗапрос()" получить запрос, то все хорошо.

В таком запросе:
"ВЫБРАТЬ
 |    ТоварыНаСкладахОстатки.Склад,
 |    ТоварыНаСкладахОстатки.Номенклатура,
 |    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
 |    ТоварыНаСкладахОстатки.СерияНоменклатуры,
 |    ТоварыНаСкладахОстатки.Качество,
 |    ТоварыНаСкладахОстатки.КоличествоОстаток
 |ПОМЕСТИТЬ Тест
 |ИЗ
 |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
 |;
 |
 |////////////////////////////////////////////////////////////////////////////////
 |ВЫБРАТЬ
 |    Тест.Склад,
 |    Тест.Номенклатура,
 |    Тест.ХарактеристикаНоменклатуры,
 |    Тест.СерияНоменклатуры,
 |    Тест.Качество,
 |    Тест.КоличествоОстаток
 |ПОМЕСТИТЬ Данные
 |ИЗ
 |    Тест КАК Тест
 |{ГДЕ
 |    Тест.Склад.*,
 |    Тест.Номенклатура.*}"

При вызове метода "ПолучитьЗапрос()" у ПостроителяОтчетов текст запроса возвращается пустой, = "".

Почему так происходит и можно ли это как-нибудь обойти? Нужно чтобы работал второй запрос.
1 Maxus43
 
20.02.13
10:49
у построителя запроса так же?
2 Maxus43
 
20.02.13
10:51
И зачем получать результирующий текст? выполняй сам построитель и смотри результат
3 Night_Wolf
 
20.02.13
10:55
(2) Нужно потом к тексту добавить ещё условия.
4 Maxus43
 
20.02.13
10:59
(3) сразу доп отборы на построитель не хватает?
по сабжу - построители видимо неоднозначно работают с ВТ. не встречал сам такого
5 Night_Wolf
 
20.02.13
11:12
(4) - доп отборы на построитель не хватает. Потому что нужно получить результат запроса во временную таблицу, так как с ним в дальнейшем идет работа через МенеджерВременныхТаблиц и не в одном месте. Т.е. к ней обращаются ещё куча запросов.
6 Maxus43
 
20.02.13
11:14
(5) Не юзай построитель, Собирай текст запроса динамически... других вариантов не вижу пока
7 GANR
 
20.02.13
11:16
(0) а почему во 2-м варианте он должен быть полным? там одни временные таблицы
8 Fragster
 
гуру
20.02.13
11:16
(6) фуфуфу!
9 Maxus43
 
20.02.13
11:17
(7) в первом варианте тоже
10 Maxus43
 
20.02.13
11:17
(8) давай свой вариант, фуфу)
11 Fragster
 
гуру
20.02.13
11:19
(10) сделать последним запросом Выбрать * из Данные, как разумно заметил (7)
12 Fragster
 
гуру
20.02.13
11:20
вообще непонятно, чего не хватает в построителе, что нужно "потом добавить еще условия"
13 Maxus43
 
20.02.13
11:54
(11) ему надо потом ВТ, а не выборку данных (5). Зачем так надо автору я хз, но построителем не сделать
14 Fragster
 
гуру
20.02.13
12:13
(13) ну пусть потом отрезает последний запрос по ";"
15 Night_Wolf
 
20.02.13
13:40
Я так и сделал в принципе. Наложил условия на верхний запрос, потом получил запрос из построителя, затем к нему присоединил все оставшиеся запросы. В итоге получил ВТ какую мне надо. Но если бы нужно было в следующих запросах сделать другие отборы с помощью этого же построителя - то уже не получилось бы. В общем всем спасибо!
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший