Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 12:34

Преобразование плоской таблицы в запросе

Автор goldy, 31 окт 2011, 11:50

0 Пользователей и 1 гость просматривают эту тему.

goldy

Данные в таблице (получаю из периодического независ. регистра сведений):
период           раздел(изм)       категория(измерение) вид операции(рекв.)    срок
02.10.11           1                                              а               добавление      06.10.11 
03.10.11           1                                              а               удаление          07.10.11 
04.10.11           1                                              а               добавление      08.10.11
05.10.11           1                                              а               удаление          08.10.11 
06.10.11           2                                              б               добавление      10.10.11 
07.10.11           2                                              б               добавление      10.10.11 
08.10.11           2                                              б               удаление          10.10.11 


Как в запросе преобразовать данные  в таблицу, в которой по каждому разделу+категории будет разбиваться по видам операции даты (период и срок) :

В результате нужна  такая таблица
              добавление                     |        удаление           |
1а          |  02.10.11|  06.10.11      |  03.10.11  | 07.10.11  |
1а          |  04.10.11|  08.10.11      |  05.10.11  | 08.10.11  |
2б          |  06.10.11|  10.10.11      |  08.10.11  | 10.10.11  |
2б          |  07.10.11|  10.10.11      |                 |                |


has

Раздел и категорию сцепляй в запросе, добавление и удаление делается через выбор когда. Только вот как сцепить период и срок не знаю. Попробовал щас, получается типа этого

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
              | Т.Период,
              | Т.Раздел,
              | Т.Категория,
              | Т.ВидОперации,
              | Т.Срок
              |ПОМЕСТИТЬ Врем
              |ИЗ
              | &Таб КАК Т
              |;
              |
              |////////////////////////////////////////////////////////////////////////////////
              |ВЫБРАТЬ
              | (ВЫРАЗИТЬ(Врем.Раздел КАК СТРОКА(1))) + (ВЫРАЗИТЬ(Врем.Категория КАК СТРОКА(1))) КАК РазделКатегория,
              | ВЫБОР
              | КОГДА (ВЫРАЗИТЬ(Врем.ВидОперации КАК СТРОКА(20))) = ""Добавление""
              | ТОГДА Врем.Срок
              | КОНЕЦ КАК Добавление,
              | ВЫБОР
              | КОГДА (ВЫРАЗИТЬ(Врем.ВидОперации КАК СТРОКА(20))) = ""Удаление""
              | ТОГДА Врем.Срок
              | КОНЕЦ КАК Удаление
              |ИЗ
              | Врем КАК Врем";
Запрос.УстановитьПараметр("Таб", ТабличноеПоле1);
Запрос.Выполнить().Выгрузить().ВыбратьСтроку();

Ну вид операции у меня строка, там сам подставишь перечисление твое. Ограничения на строки идет, потому что у меня на форме типы этих колонок строка неогр. длины.

goldy

Тогда получится примерно такая структура:
1а          |  02.10.11|  06.10.11      |                 |                      |
1а          |               |                     |  03.10.11  | 07.10.11         |
1а          |  04.10.11|  08.10.11      |                 |                       |
1а          |               |                     |  05.10.11  | 08.10.11         |

А как потом это сгруппировать, чтобы получилась такая таблица?
1а          |  02.10.11|  06.10.11      |  03.10.11  | 07.10.11  |
1а          |  04.10.11|  08.10.11      |  05.10.11  | 08.10.11  |

has

В запросе есть группировка, только вот думаю она не подойдет. Попробуй выгрузить результат в ТЗ и свернуть.

goldy

При использовании функции Свернуть() нужный результат не достигается.

has

Цитата: goldy от 31 окт 2011, 15:02
При использовании функции Свернуть() нужный результат не достигается.
Сворачивай по всем трем колонкам, без суммируемых

goldy

При сворачивании  группируются только пустые даты,т.е. нужная структура не получается

has

Какие еще пустые даты? Данные в таблице какие? Даты со временем?

goldy


has

Если время разное, то сворачиваться не будут. Как вариант привести все даты к началу дня. Ну и убрать пустые даты.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск