Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Выборка из нескольких временных таблиц / 8 сообщений из 8, страница 1 из 1
08.05.2009, 14:53
    #35976920
Голд
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из нескольких временных таблиц
День добрый, уважаемые братья "по перу"!

Столкнулся с проблемой выборки из нескольких временных таблиц и никак не могу разобраться и в нете инфы не могу найти.

Коротко о цели: построить учет рабочего времени пользователей 1С. Для этой цели выбираются из Журнала регистрации записи о входах-выходах пользователей, которые загоняются в две ТЗ - "ТЗВход" и "ТЗВыход" и далее нужно взять самый первый вход и самый последний выход и все это дело склеить и залить в регистр сведений для дальнейшего анализа.

Проблема возникла на этапе слияния этих самых таблиц. Вот код:

МВТ = Новый МенеджерВременныхТаблиц;

//Работаем с таблицей входов
Запрос = Новый Запрос("Выбрать * ПОМЕСТИТЬ ВТВход Из &Таб КАК ВТ1");
Запрос.МенеджерВременныхТаблиц = МВТ;
Запрос.УстановитьПараметр("Таб", ТЗВход);
Запрос.Выполнить();

//Работаем с таблицей выходов
Запрос = Новый Запрос("Выбрать * ПОМЕСТИТЬ ВТВыход Из &Таб КАК ВТ2");
Запрос.МенеджерВременныхТаблиц = МВТ;
Запрос.УстановитьПараметр("Таб", ТЗВыход);
Запрос.Выполнить();

мТекстЗапроса = "
|ВЫБРАТЬ
| Т1.Пользователь,
| Т1.Дата,
| Т1.Время КАК ВремяВхода,
| Т2.Время КАК ВремяВыхода
|
|ИЗ
| (ВЫБРАТЬ
| UserName КАК Пользователь,
| Date КАК Дата,
| МИНИМУМ(Time) КАК Время
|
| ИЗ ВТВход
| СГРУППИРОВАТЬ ПО UserName, Date) КАК Т1
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| UserName КАК Пользователь,
| Date КАК Дата,
| МАКСИМУМ(Time) КАК Время
| ИЗ ВТВыход
| СГРУППИРОВАТЬ ПО UserName, Date) КАК Т2
|ПО
| Т1.Пользователь = Т2.Пользователь И Т1.Дата = Т2.Дата
|УПОРЯДОЧИТЬ ПО
| Т1.Дата, Т1.Пользователь";

РезЗапрос = Новый Запрос;
РезЗапрос.МенеджерВременныхТаблиц = МВТ;
РезЗапрос.Текст = мТекстЗапроса;
Результат = Запрос.Выполнить().Выгрузить();

МВТ.Закрыть();

Все бы ничего, но при выполнении последнего запроса пишет, что временная таблица уже существует, и хоть ты стреляйся.

Буду признателен за лююбую ценную информацию. Спасибо.
...
Рейтинг: 0 / 0
08.05.2009, 16:14
    #35977185
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из нескольких временных таблиц
а если так?

Запрос=новый запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
.........


| Т1.Дата, Т1.Пользователь";

// на .... РезЗапрос = Новый Запрос;
// за борт на .... РезЗапрос.МенеджерВременныхТаблиц = МВТ;
Запрос.Текст = мТекстЗапроса; /// переписать так
Результат = Запрос.Выполнить().Выгрузить(); // интересно почему так?


Запрос.МенеджерВременныхТаблиц.Закрыть();
...
Рейтинг: 0 / 0
08.05.2009, 16:16
    #35977191
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из нескольких временных таблиц
а ну ясно
сделали неточность да еще и ошиблись ...

ВТВыход - существует уже
...
Рейтинг: 0 / 0
08.05.2009, 17:25
    #35977357
Голд
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из нескольких временных таблиц
leafа ну ясно
сделали неточность да еще и ошиблись ...

ВТВыход - существует уже

не совсем Вас понял... где уже существует?

сначала создаются две временные таблицы ВТВход и ВТВыход, которые прикручиваются к МВТ.

Затем третий запрос делает выборку из все того же МВТ.

ВТВыход фигурирует только один раз.
...
Рейтинг: 0 / 0
09.05.2009, 12:55
    #35977837
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из нескольких временных таблиц
давай тексты запросов. особенно интересно про удалить и поместить во временную таблицу
...
Рейтинг: 0 / 0
10.05.2009, 05:42
    #35978129
supervk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из нескольких временных таблиц
ГолдВсе бы ничего, но при выполнении последнего запроса пишет, что временная таблица уже существует, и хоть ты стреляйся.
А почему бы не сделать всё в одном запросе?
...
Рейтинг: 0 / 0
10.05.2009, 16:04
    #35978283
serge_b77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из нескольких временных таблиц
Голд
РезЗапрос = Новый Запрос;
РезЗапрос.МенеджерВременныхТаблиц = МВТ;
РезЗапрос.Текст = мТекстЗапроса;
Результат = Запрос.Выполнить().Выгрузить();

МВТ.Закрыть();

Все бы ничего, но при выполнении последнего запроса пишет, что временная таблица уже существует, и хоть ты стреляйся.


Само собой,т.к. нужно писать:
Код: plaintext
Результат =РезЗапрос.Выполнить().Выгрузить();
Поменьше copy-paste )).
...
Рейтинг: 0 / 0
13.05.2009, 10:02
    #35982265
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из нескольких временных таблиц
ну собственно serge_b77 все сказал
все проблемы в нашей работе от спешки
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Выборка из нескольких временных таблиц / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]