Имя: Пароль:
1C
1С v8
Удалить колонку в дереве значений
0 zhukovia
 
24.03.17
05:53
Можно ли как то удалить колонку в дереве значений ну или в результате запроса получить только определенные колонки?

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

Дерево в последствии выгружается на форму без перебора.

ЗначениеВРеквизитФормы(ВыборкаДерево,"ДеревоРезультата");
1 Jonny_Khomich
 
24.03.17
06:10
дз.Колонки.Удалить(дз.Колонки.ИмяКолонки);
2 Jonny_Khomich
 
24.03.17
06:11
а вообще проще удалить из результата запроса.
3 zhukovia
 
24.03.17
06:21
(1) Спасибо. Все получилось.
(2) А вот как удалить из результатов запроса я так и не могу сообразить. У меня в запросе есть вложенный запрос и может быть куча группировок (они динамически добавляются), к тому же мне надо чтобы группировки в результате выводились в одну колонку, а не в несколько и если в результирующем запросе я ставлю в Выбор только нужные мне поля тогда не видно группировок.

Запрос.Текст = "ВЫБРАТЬ
|    ВложеныйЗапрос.Выборка,
|    ВложеныйЗапрос.КряжТекст,
|    ВложеныйЗапрос.СединаТекст,
|    СУММА(ВложеныйЗапрос.СуммаСтарая) КАК СуммаСтарая,
|    СУММА(ВложеныйЗапрос.КоличествоСтарое) КАК КоличествоСтарое,
|    СУММА(ВложеныйЗапрос.Сумма) КАК Сумма,
|    СУММА(ВложеныйЗапрос.Количество) КАК Количество
|ИЗ (ВЫБРАТЬ
|    Каталог.КряжТекст,
|    Каталог.СединаТекст,
|    Каталог.СединаТекст + """+" - седина"+""" КАК Выборка,
|    СУММА(0) КАК СуммаСтарая,
|    СУММА(0) КАК КоличествоСтарое,
|    СУММА(Каталог.Цена * Каталог.Количество) КАК Сумма,
|    СУММА(Каталог.Количество) КАК Количество
|ИЗ
|    Документ.АукционыйКаталог.Лоты КАК Каталог
|ГДЕ
|    Каталог.Ссылка = &СсылкаНаДокумент
|СГРУППИРОВАТЬ ПО
|    Каталог.КряжТекст,
|    Каталог.СединаТекст
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
|    Каталог.КряжТекст,
|    Каталог.СединаТекст,
|    Каталог.СединаТекст + """+" - седина"+""" КАК Выборка,
|    СУММА(Каталог.Цена * Каталог.Количество) КАК СуммаСтарая,
|    СУММА(Каталог.Количество) КАК КоличествоСтарое,
|    СУММА(0) КАК Сумма,
|    СУММА(0) КАК Количество
|ИЗ
|    Документ.АукционыйКаталог.Лоты КАК Каталог
|ГДЕ
|    Каталог.Ссылка = &СсылкаНаДокументДляСравнения
|СГРУППИРОВАТЬ ПО
|    Каталог.КряжТекст,
|    Каталог.СединаТекст) КАК ВложеныйЗапрос
|СГРУППИРОВАТЬ ПО
|    ВложеныйЗапрос.Выборка,
|    ВложеныйЗапрос.КряжТекст,
|    ВложеныйЗапрос.СединаТекст
|УПОРЯДОЧИТЬ ПО
|    КряжТекст,
|    СединаТекст
|ИТОГИ
|    СУММА(СуммаСтарая),
|    СУММА(КоличествоСтарое),
|    СУММА(Сумма),
|    СУММА(Количество),
|    МАКСИМУМ(ПРЕДСТАВЛЕНИЕ(ВложеныйЗапрос.КряжТекст)+"""+" - Кряж"+""") КАК Выборка
|ПО
|    КряжТекст";
4 zhukovia
 
24.03.17
06:22
(3) В результате нужно только колонка Выборка и 4 суммы.
5 1dvd
 
24.03.17
06:49
Получается у тебя КряжТекст вообще не используется, но ты по нему группируешь. В чем смысл?
6 zhukovia
 
24.03.17
06:51
(5) Он используется во вложенном запросе, по нему и другим (около пяти) колонкам собирается иерархия. Но вывести все это надо в одной колонке.
7 1dvd
 
24.03.17
06:52
(6) да, пусть будет колонка, не парься
8 zhukovia
 
24.03.17
06:55
(7) Т.е. в запросе никак от нее не избавиться? Только удаление в результатах?
9 1dvd
 
24.03.17
06:57
(8) я просто не понимаю логики всего этого действа. А так, в запросе достаточно выбрать только то, что тебе надо
10 Web00001
 
24.03.17
07:09
(8)В любой непонятной ситуации оборачивай весь запрос вложеным запросом и там уже бери только нужные тебе колонки и вообще накладывай любые условия на результат финального вложенного запроса.
11 zhukovia
 
24.03.17
07:18
(9) Мне нужно выбрать из двух документов таблицы их объединить, потом сгруппировать результат объединения по всем колонкам (с итогами) и вывести все это в виде дерева на форму только вывести в Одну колонку, а не в несколько.
Примерно вот так
http://s015.radikal.ru/i330/1703/1d/751210441be6.jpg
12 zhukovia
 
24.03.17
07:19
(11) Только колонки РазмерТекст и СединаТекст надо убрать.
13 zhukovia
 
24.03.17
07:24
(10) Я так и сделал, но тогда не получается объединить (собрать одинаковые поля из разных таблиц в одну) по последнему полю Выборка. И в результирующей таблице в группировках все нормально, а вот последний уровень имеет по две строки (из каждой таблице по одной) вместо одной.
14 Web00001
 
24.03.17
07:51
(13)Значит и оригинальный запрос имеет по две строки
15 1dvd
 
24.03.17
07:53
Или я в запросах ничего не понимаю, или одна из черепашек свистит...
У тебя правда запрос (3) рисует дерево с иерархией по текстовому полю?
16 zhukovia
 
24.03.17
07:55
(15) Ну да. Я же скриншот скинул.
17 zhukovia
 
24.03.17
07:57
(14) Если не объединять по последней колонке то да, но если объединить то получается одно лишнее вложение, это которое группировки раскрывает (+-).
18 1dvd
 
24.03.17
08:00
ладно, я вижу, что картинка не по этому запросу сделана.

Теперь самый главный вопрос - чем тебе мешает лишнее поле? Это поле нужно для иерархии. Его никак не удалить. Чем мешает?
19 zhukovia
 
24.03.17
08:03
(18) Запрос немного урезан конечно но он взят из отладчика.
А поле мешает при отображении на форме, лишнее оно. Нужно только первое "Выборка" там все вложения и прописаны.
20 zhukovia
 
24.03.17
08:07
(18) Можно конечно и после обработки удалить лишние колонки, но я думаю что так больше времени потратиться нежели еще в запросе лишнее убрать. Запрос и так довольно долго делается (две таблицы по 15 000 строк).
21 1dvd
 
24.03.17
08:10
(20) у тебя ключевое поле для построения иерархии. Без него иерархию не построишь.
22 zhukovia
 
24.03.17
08:19
(21) Какое ключевое, Выборка? Дак я его и не собираюсь удалять, мне остальные не нужны. Я просто чувствую что мой запрос очень не оптимальный (работает не быстро и выглядит не очень), вот и подумал что смогу понять в чем. Не очень сильно понимаю как правильно делать запросы, что оптимально, а что нет. Вот у меня например делается Группировка и во вложенных запросах и во внешнем, причем по одним и тем же полям. Попробовал у внутренних запросов убрать СГРУППИРОВАТЬ стало почему то еще медленней и результаты другими.
23 darius357
 
24.03.17
08:27
ну как всегда побакланили, и нифига толку
24 zhukovia
 
24.03.17
08:34
(23) Я так понял что можно сделать только удалением колонок после выполнения запроса (1). Что я и сделал, а в самом запросе либо не получиться, либо никто хочет в нем копаться чтобы понять что я делаю не так.
25 zhukovia
 
24.03.17
08:36
(23) Моя задача решилась по способу в (1) хоть ощущение что можно лучше (правильней) так и осталось. :)